Hợp đồng Multisig Lambda là một bước nhảy vọt đáng kể trong lập trình hợp đồng thông minh do sử dụng loại sp.lambda
. Nó giới thiệu khả năng thực thi các chức năng tùy ý không được xác định trước tại thời điểm triển khai hợp đồng. Dưới đây là tổng quan chi tiết về các thành phần chính của nó:
Tham số ban đầu: Hợp đồng được khởi tạo (__init__
) với danh sách các thành viên được phép đề xuất và ký các đề xuất cũng như số lượng chữ ký tối thiểu cần thiết để thực hiện một đề xuất. Chúng được lưu trữ trong bộ lưu trữ của hợp đồng (self.data
), tạo hồ sơ tham chiếu để hợp đồng có hiệu lực.
Chức năng đề xuất: Chức năng propose
dùng để tạo các đề xuất mới. Các thành viên có thể gửi các hàm lambda (bao gồm các thao tác tùy ý) mà họ muốn hợp đồng thực thi. Những đề xuất này được lưu trữ trong cấu trúc dữ liệu big_map
, với mỗi đề xuất được gán một mã định danh duy nhất.
Chức năng ký hiệu: Chức năng sign
hiệu tạo điều kiện thuận lợi cho việc chứng thực đề xuất. Các thành viên có thể ký để ủng hộ các đề xuất. Những chữ ký này, kèm theo mã định danh đề xuất duy nhất, được thu thập và duy trì trong một big_map
riêng biệt.
Chức năng thực thi: Chức năng execute
thể hiện điểm mấu chốt trong hoạt động của hợp đồng. Nếu một đề xuất đã thu thập đủ số chữ ký cần thiết, các thành viên có thể gọi hàm này để thực thi hàm lambda được đề xuất, áp dụng nó vào bộ lưu trữ của hợp đồng.
Hợp đồng Multisig Lambda mang đến tính linh hoạt rộng rãi, phù hợp với các tình huống yêu cầu cấu trúc kiểm soát phức tạp, linh hoạt và có khả năng linh hoạt, chẳng hạn như DAO (Tổ chức tự trị phi tập trung), dịch vụ ví có nhiều chủ sở hữu và giao thức DeFi phức tạp.
Hợp đồng này yêu cầu thực thi các hàm lambda tùy ý có nhiều chữ ký. Nó giới thiệu các khái niệm về việc gửi và ký các hàm lambda. Hãy mổ xẻ chức năng của nó:
submit_lambda: Hàm này cho phép các thành viên gửi hàm lambda vào hợp đồng. Về cơ bản, đây là đề xuất một hoạt động hợp đồng cần có sự phê duyệt của nhiều bên. Trong bảng bên phải của SmartPy IDE, sau khi gửi thành công hàm lambda, bạn sẽ quan sát thấy một giao dịch mới được thực hiện từ địa chỉ của người gửi đến địa chỉ của hợp đồng.
vote_lambda: Chức năng này cho phép các thành viên bỏ phiếu (chữ ký) ủng hộ chức năng lambda đã gửi. Sau khi bỏ phiếu, trong bảng IDE, bạn sẽ nhận thấy một giao dịch mới từ địa chỉ của thành viên đến địa chỉ của hợp đồng.
Hợp đồng MultisigAction đưa cơ chế bỏ phiếu dân chủ vào lĩnh vực hợp đồng thông minh. Trong mô hình này, các thành viên đề xuất các hành động cụ thể, bỏ phiếu cho chúng và thực hiện chúng khi đạt được số đại biểu cần thiết. Hợp đồng này thể hiện sự kết hợp độc đáo giữa sự đồng thuận của con người với việc thực hiện hợp đồng tự động, thực thi quyền kiểm soát dân chủ đối với hành vi hợp đồng.
Các thành phần cốt lõi của hợp đồng này là:
Tham số ban đầu: Giống như trong hợp đồng Lambda, Hợp đồng MultisigAction lấy danh sách các thành viên và số phiếu bầu cần thiết trong quá trình khởi tạo.
Chức năng hành động đề xuất: Chức năng này dùng để thêm các đề xuất mới. Thành viên có thể gửi các hành động được xác định trước trong hợp đồng, liên kết chúng với một mã định danh duy nhất. Những hành động được đề xuất này sẽ được lưu trữ trong big_map
.
Chức năng hành động bỏ phiếu: Chức năng này được thiết kế để bỏ phiếu ủng hộ các hành động được đề xuất. Các phiếu bầu được liên kết với mã định danh duy nhất của đề xuất và được lưu giữ trong một big_map
riêng biệt.
Thực thi chức năng hành động: Chức năng này phát huy tác dụng khi một đề xuất đã thu hút đủ số phiếu bầu. Các thành viên có thể gọi hàm này để thực hiện hành động được đề xuất.
Hợp đồng MultisigAction lý tưởng cho các tình huống trong đó một nhóm cá nhân cần đạt được sự đồng thuận về các hành động hợp đồng cụ thể, chẳng hạn như trong DAO nơi các thành viên bỏ phiếu về việc phân bổ nguồn lực hoặc thay đổi giao thức.
submit_proposal: Đây là quá trình đề xuất một hành động mới. Trong bối cảnh ví dụ của chúng tôi, một thành viên đang đề xuất thêm một người ký mới vào hợp đồng.
Khi thao tác này được thực hiện trên SmartPy IDE, bạn sẽ thấy một giao dịch mới được tạo trong bảng bên phải của IDE. Tóm tắt giao dịch sẽ ghi rõ người gửi (địa chỉ của thành viên đề xuất) và người nhận (địa chỉ của hợp đồng). Nó có thể trông giống như thế này:
Ở đây, trạng thái 'OK' cho thấy đề xuất đã được gửi thành công.
vote_proposal: Bước tiếp theo là bỏ phiếu cho đề xuất. Chức năng này cho phép những người ký hiện tại bỏ phiếu cho đề xuất được gửi ở bước trước.
Khi người ký 1 bỏ phiếu cho đề xuất, bạn sẽ thấy một giao dịch mới, với người ký 1 là người gửi và hợp đồng là người nhận. Một giao dịch tương tự sẽ được ghi lại khi người ký có 2 phiếu bầu cho đề xuất:
Các giao dịch này chỉ ra rằng cả người ký 1 và người ký 2 đều đã bỏ phiếu thành công cho đề xuất.
Hợp đồng MultisigView đưa khái niệm đồng thuận dân chủ về phía trước nhưng áp dụng nó cho các byte tùy ý thay vì các hành động hợp đồng được xác định trước. Hợp đồng này mở ra những con đường nơi có thể đạt được sự đồng thuận về dữ liệu được biểu thị dưới dạng byte mà không dẫn đến việc thực hiện hành động ngay lập tức.
Các khối xây dựng chính của hợp đồng này là:
Tham số ban đầu: Giống như các hợp đồng trước, Hợp đồng MultisigView khởi tạo với danh sách thành viên và một số biểu thị số phiếu bầu cần thiết.
Chức năng gửi đề xuất: Chức năng này cho phép các thành viên giới thiệu các đề xuất mới dưới dạng byte tùy ý. Các byte được lưu trữ trong big_map
, được lập chỉ mục theo chính các byte, đại diện cho một mã định danh đề xuất duy nhất.
Chức năng bỏ phiếu đề xuất: Chức năng này cho phép các thành viên tán thành các đề xuất. Các phiếu bầu được theo dõi trong một big_map
riêng biệt, được liên kết với mã định danh byte duy nhất của đề xuất.
Chức năng được bình chọn: Chức năng này, một chế độ xem trên chuỗi, kiểm tra xem đề xuất có đạt được số phiếu cần thiết hay không. Nó trả về một giá trị boolean cho biết trạng thái biểu quyết của đề xuất.
Hợp đồng MultisigView đặc biệt hữu ích trong trường hợp hợp đồng thông minh cần duy trì bản ghi các đề xuất đã được phê duyệt, như trong các ứng dụng mật mã trong đó byte có thể biểu thị các thỏa thuận băm, bằng chứng hoặc bất kỳ dạng dữ liệu nào khác cần có sự phê duyệt chung.
Hợp đồng Multisig Lambda là một bước nhảy vọt đáng kể trong lập trình hợp đồng thông minh do sử dụng loại sp.lambda
. Nó giới thiệu khả năng thực thi các chức năng tùy ý không được xác định trước tại thời điểm triển khai hợp đồng. Dưới đây là tổng quan chi tiết về các thành phần chính của nó:
Tham số ban đầu: Hợp đồng được khởi tạo (__init__
) với danh sách các thành viên được phép đề xuất và ký các đề xuất cũng như số lượng chữ ký tối thiểu cần thiết để thực hiện một đề xuất. Chúng được lưu trữ trong bộ lưu trữ của hợp đồng (self.data
), tạo hồ sơ tham chiếu để hợp đồng có hiệu lực.
Chức năng đề xuất: Chức năng propose
dùng để tạo các đề xuất mới. Các thành viên có thể gửi các hàm lambda (bao gồm các thao tác tùy ý) mà họ muốn hợp đồng thực thi. Những đề xuất này được lưu trữ trong cấu trúc dữ liệu big_map
, với mỗi đề xuất được gán một mã định danh duy nhất.
Chức năng ký hiệu: Chức năng sign
hiệu tạo điều kiện thuận lợi cho việc chứng thực đề xuất. Các thành viên có thể ký để ủng hộ các đề xuất. Những chữ ký này, kèm theo mã định danh đề xuất duy nhất, được thu thập và duy trì trong một big_map
riêng biệt.
Chức năng thực thi: Chức năng execute
thể hiện điểm mấu chốt trong hoạt động của hợp đồng. Nếu một đề xuất đã thu thập đủ số chữ ký cần thiết, các thành viên có thể gọi hàm này để thực thi hàm lambda được đề xuất, áp dụng nó vào bộ lưu trữ của hợp đồng.
Hợp đồng Multisig Lambda mang đến tính linh hoạt rộng rãi, phù hợp với các tình huống yêu cầu cấu trúc kiểm soát phức tạp, linh hoạt và có khả năng linh hoạt, chẳng hạn như DAO (Tổ chức tự trị phi tập trung), dịch vụ ví có nhiều chủ sở hữu và giao thức DeFi phức tạp.
Hợp đồng này yêu cầu thực thi các hàm lambda tùy ý có nhiều chữ ký. Nó giới thiệu các khái niệm về việc gửi và ký các hàm lambda. Hãy mổ xẻ chức năng của nó:
submit_lambda: Hàm này cho phép các thành viên gửi hàm lambda vào hợp đồng. Về cơ bản, đây là đề xuất một hoạt động hợp đồng cần có sự phê duyệt của nhiều bên. Trong bảng bên phải của SmartPy IDE, sau khi gửi thành công hàm lambda, bạn sẽ quan sát thấy một giao dịch mới được thực hiện từ địa chỉ của người gửi đến địa chỉ của hợp đồng.
vote_lambda: Chức năng này cho phép các thành viên bỏ phiếu (chữ ký) ủng hộ chức năng lambda đã gửi. Sau khi bỏ phiếu, trong bảng IDE, bạn sẽ nhận thấy một giao dịch mới từ địa chỉ của thành viên đến địa chỉ của hợp đồng.
Hợp đồng MultisigAction đưa cơ chế bỏ phiếu dân chủ vào lĩnh vực hợp đồng thông minh. Trong mô hình này, các thành viên đề xuất các hành động cụ thể, bỏ phiếu cho chúng và thực hiện chúng khi đạt được số đại biểu cần thiết. Hợp đồng này thể hiện sự kết hợp độc đáo giữa sự đồng thuận của con người với việc thực hiện hợp đồng tự động, thực thi quyền kiểm soát dân chủ đối với hành vi hợp đồng.
Các thành phần cốt lõi của hợp đồng này là:
Tham số ban đầu: Giống như trong hợp đồng Lambda, Hợp đồng MultisigAction lấy danh sách các thành viên và số phiếu bầu cần thiết trong quá trình khởi tạo.
Chức năng hành động đề xuất: Chức năng này dùng để thêm các đề xuất mới. Thành viên có thể gửi các hành động được xác định trước trong hợp đồng, liên kết chúng với một mã định danh duy nhất. Những hành động được đề xuất này sẽ được lưu trữ trong big_map
.
Chức năng hành động bỏ phiếu: Chức năng này được thiết kế để bỏ phiếu ủng hộ các hành động được đề xuất. Các phiếu bầu được liên kết với mã định danh duy nhất của đề xuất và được lưu giữ trong một big_map
riêng biệt.
Thực thi chức năng hành động: Chức năng này phát huy tác dụng khi một đề xuất đã thu hút đủ số phiếu bầu. Các thành viên có thể gọi hàm này để thực hiện hành động được đề xuất.
Hợp đồng MultisigAction lý tưởng cho các tình huống trong đó một nhóm cá nhân cần đạt được sự đồng thuận về các hành động hợp đồng cụ thể, chẳng hạn như trong DAO nơi các thành viên bỏ phiếu về việc phân bổ nguồn lực hoặc thay đổi giao thức.
submit_proposal: Đây là quá trình đề xuất một hành động mới. Trong bối cảnh ví dụ của chúng tôi, một thành viên đang đề xuất thêm một người ký mới vào hợp đồng.
Khi thao tác này được thực hiện trên SmartPy IDE, bạn sẽ thấy một giao dịch mới được tạo trong bảng bên phải của IDE. Tóm tắt giao dịch sẽ ghi rõ người gửi (địa chỉ của thành viên đề xuất) và người nhận (địa chỉ của hợp đồng). Nó có thể trông giống như thế này:
Ở đây, trạng thái 'OK' cho thấy đề xuất đã được gửi thành công.
vote_proposal: Bước tiếp theo là bỏ phiếu cho đề xuất. Chức năng này cho phép những người ký hiện tại bỏ phiếu cho đề xuất được gửi ở bước trước.
Khi người ký 1 bỏ phiếu cho đề xuất, bạn sẽ thấy một giao dịch mới, với người ký 1 là người gửi và hợp đồng là người nhận. Một giao dịch tương tự sẽ được ghi lại khi người ký có 2 phiếu bầu cho đề xuất:
Các giao dịch này chỉ ra rằng cả người ký 1 và người ký 2 đều đã bỏ phiếu thành công cho đề xuất.
Hợp đồng MultisigView đưa khái niệm đồng thuận dân chủ về phía trước nhưng áp dụng nó cho các byte tùy ý thay vì các hành động hợp đồng được xác định trước. Hợp đồng này mở ra những con đường nơi có thể đạt được sự đồng thuận về dữ liệu được biểu thị dưới dạng byte mà không dẫn đến việc thực hiện hành động ngay lập tức.
Các khối xây dựng chính của hợp đồng này là:
Tham số ban đầu: Giống như các hợp đồng trước, Hợp đồng MultisigView khởi tạo với danh sách thành viên và một số biểu thị số phiếu bầu cần thiết.
Chức năng gửi đề xuất: Chức năng này cho phép các thành viên giới thiệu các đề xuất mới dưới dạng byte tùy ý. Các byte được lưu trữ trong big_map
, được lập chỉ mục theo chính các byte, đại diện cho một mã định danh đề xuất duy nhất.
Chức năng bỏ phiếu đề xuất: Chức năng này cho phép các thành viên tán thành các đề xuất. Các phiếu bầu được theo dõi trong một big_map
riêng biệt, được liên kết với mã định danh byte duy nhất của đề xuất.
Chức năng được bình chọn: Chức năng này, một chế độ xem trên chuỗi, kiểm tra xem đề xuất có đạt được số phiếu cần thiết hay không. Nó trả về một giá trị boolean cho biết trạng thái biểu quyết của đề xuất.
Hợp đồng MultisigView đặc biệt hữu ích trong trường hợp hợp đồng thông minh cần duy trì bản ghi các đề xuất đã được phê duyệt, như trong các ứng dụng mật mã trong đó byte có thể biểu thị các thỏa thuận băm, bằng chứng hoặc bất kỳ dạng dữ liệu nào khác cần có sự phê duyệt chung.