Nhật ký phát triển hợp đồng thông minh Rust (11) - Giải thích cơ chế đề xuất của DAO Sputnik
Sputnik-DAO là cơ sở hạ tầng quan trọng của NEAR Protocol, đang thúc đẩy hệ sinh thái NEAR phát triển theo hướng phi tập trung. Hiện tại, nền tảng này đã tạo điều kiện cho nhiều dự án NEAR thiết lập cộng đồng tự trị phi tập trung, cung cấp giải pháp quản trị quyết định cộng đồng hoàn chỉnh và linh hoạt.
Sputnikdaov2 là hợp đồng thông minh được sử dụng cho việc bỏ phiếu quản trị cộng đồng Sputnik-DAO. Bài viết này sẽ giới thiệu các khái niệm cốt lõi của hợp đồng: đề xuất (Proposal), các bài viết tiếp theo sẽ xoay quanh đề xuất giới thiệu các mô hình quản trị cộng đồng DAO liên quan (Policy).
1. Khởi xướng đề xuất
Các thành viên trong cộng đồng Sputnik-DAO có thể bày tỏ ý kiến hoặc gửi đề xuất về quản trị hoặc quản lý dự án. Mỗi thành viên nắm giữ cổ phần đều có thể xem xét và bỏ phiếu cho các đề xuất, từ đó ảnh hưởng đến hướng đi trong tương lai của dự án.
Tại lớp hợp đồng, các thành viên có thể gọi phương thức add_proposal() của hợp đồng sputnikdaov2 để khởi xướng đề xuất mới:
rỉ sét
u64
Người đề xuất cần cung cấp các thông tin chi tiết sau:
Mô tả văn bản đề xuất (Description)
Loại đề xuất ( kind )
Những thông tin này sẽ được truyền vào phương thức add_proposal() làm tham số, sau khi xử lý sẽ tạo ra một đề xuất hoàn chỉnh (Proposal), và được gắn với proposal_id duy nhất, thêm vào hồ bơi đề xuất được duy trì toàn cầu của hợp đồng.
Các thuộc tính đầy đủ của đề xuất bao gồm: người đề xuất, trạng thái, thời gian khởi xướng, trạng thái bỏ phiếu, v.v.
Cần lưu ý rằng, Sputnik-DAO yêu cầu người đề xuất phải đặt cọc một số lượng NEAR nhất định làm tiền bảo đảm. Khoản tiền đặt cọc này sẽ được hoàn trả cho người đề xuất khi đề xuất kết thúc bình thường.
2. Trạng thái đề xuất
Các đề xuất trong Sputnik-DAO có thể trải qua nhiều trạng thái, trạng thái ban đầu là InProgress. Sự thay đổi trạng thái được điều khiển bởi phương thức act_proposal().
Thành viên có thể gọi act_proposal() để thực hiện các thao tác sau trên đề xuất:
VoteApprove: thể hiện sự đồng ý
VoteReject:表示反对
VoteRemove: cho rằng đề xuất này vô nghĩa, cần phải loại bỏ
Sau khi bỏ phiếu, hợp đồng sẽ gọi policy.proposal_status() để tiến hành kiểm phiếu, trạng thái đề xuất thỏa mãn điều kiện sẽ được thay đổi tương ứng.
Đề xuất có trạng thái Đã phê duyệt sẽ được thực hiện
Các đề xuất ở trạng thái Rejected hoặc Removed sẽ thực hiện các thao tác hoàn tất.
Các đề xuất có trạng thái Removed sẽ bị xóa trực tiếp khỏi hồ sơ đề xuất và không được hoàn lại tiền đặt cọc. Các đề xuất có trạng thái Rejected sẽ được giữ lại trong hồ sơ và hoàn lại tiền đặt cọc.
3. Thực hiện đề xuất
Các đề xuất có trạng thái Approved sẽ gọi hàm internal_execute_proposal() để thực hiện nội dung quyết định.
Sputnik-DAO hỗ trợ nhiều loại đề xuất, bài viết này tập trung vào hai loại điển hình:
( 3.1 Đề xuất thực hiện hàm hợp đồng
Đề xuất loại FunctionCall có thể thực thi các phương thức hợp đồng cụ thể. Người đề xuất khi tạo sẽ truyền vào các hoạt động hàm cần thực thi qua ProposalInput )actions###.
Mỗi action có thể chỉ định tên phương thức hợp đồng và tham số. Sputnik-DAO sử dụng hình thức Promise Batch Actions để hoàn thành việc thực thi hàm.
( 3.2 Đề xuất chuyển tiền hợp đồng
Đề xuất loại Transfer có thể chuyển các token đã tích lũy trong tài khoản hợp đồng )NEAR hoặc token tiêu chuẩn NEP-141 ### đến tài khoản chỉ định.
internal_execute_proposal() sẽ gọi hàm internal_payout(), thực hiện các thao tác chuyển tiền cho các loại token khác nhau và tài khoản nhận.
4. Tóm tắt
Bài viết này giới thiệu các khái niệm cốt lõi của hợp đồng thông minh Sputnik DAO đề xuất (Proposal), bao gồm việc tạo ra đề xuất, bỏ phiếu, thay đổi trạng thái và quy trình thực hiện. Các bài viết tiếp theo sẽ dựa trên đề xuất để mô tả chi tiết về mô hình quản trị của Sputnik-DAO (Policy) và cách thức thực hiện và cấu hình.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
Phân tích hợp đồng thông minh Sputnik DAO: Thiết kế và thực hiện cơ chế đề xuất cốt lõi
Nhật ký phát triển hợp đồng thông minh Rust (11) - Giải thích cơ chế đề xuất của DAO Sputnik
Sputnik-DAO là cơ sở hạ tầng quan trọng của NEAR Protocol, đang thúc đẩy hệ sinh thái NEAR phát triển theo hướng phi tập trung. Hiện tại, nền tảng này đã tạo điều kiện cho nhiều dự án NEAR thiết lập cộng đồng tự trị phi tập trung, cung cấp giải pháp quản trị quyết định cộng đồng hoàn chỉnh và linh hoạt.
Sputnikdaov2 là hợp đồng thông minh được sử dụng cho việc bỏ phiếu quản trị cộng đồng Sputnik-DAO. Bài viết này sẽ giới thiệu các khái niệm cốt lõi của hợp đồng: đề xuất (Proposal), các bài viết tiếp theo sẽ xoay quanh đề xuất giới thiệu các mô hình quản trị cộng đồng DAO liên quan (Policy).
1. Khởi xướng đề xuất
Các thành viên trong cộng đồng Sputnik-DAO có thể bày tỏ ý kiến hoặc gửi đề xuất về quản trị hoặc quản lý dự án. Mỗi thành viên nắm giữ cổ phần đều có thể xem xét và bỏ phiếu cho các đề xuất, từ đó ảnh hưởng đến hướng đi trong tương lai của dự án.
Tại lớp hợp đồng, các thành viên có thể gọi phương thức add_proposal() của hợp đồng sputnikdaov2 để khởi xướng đề xuất mới:
rỉ sét u64
Người đề xuất cần cung cấp các thông tin chi tiết sau:
Những thông tin này sẽ được truyền vào phương thức add_proposal() làm tham số, sau khi xử lý sẽ tạo ra một đề xuất hoàn chỉnh (Proposal), và được gắn với proposal_id duy nhất, thêm vào hồ bơi đề xuất được duy trì toàn cầu của hợp đồng.
Các thuộc tính đầy đủ của đề xuất bao gồm: người đề xuất, trạng thái, thời gian khởi xướng, trạng thái bỏ phiếu, v.v.
Cần lưu ý rằng, Sputnik-DAO yêu cầu người đề xuất phải đặt cọc một số lượng NEAR nhất định làm tiền bảo đảm. Khoản tiền đặt cọc này sẽ được hoàn trả cho người đề xuất khi đề xuất kết thúc bình thường.
2. Trạng thái đề xuất
Các đề xuất trong Sputnik-DAO có thể trải qua nhiều trạng thái, trạng thái ban đầu là InProgress. Sự thay đổi trạng thái được điều khiển bởi phương thức act_proposal().
Thành viên có thể gọi act_proposal() để thực hiện các thao tác sau trên đề xuất:
Sau khi bỏ phiếu, hợp đồng sẽ gọi policy.proposal_status() để tiến hành kiểm phiếu, trạng thái đề xuất thỏa mãn điều kiện sẽ được thay đổi tương ứng.
Các đề xuất có trạng thái Removed sẽ bị xóa trực tiếp khỏi hồ sơ đề xuất và không được hoàn lại tiền đặt cọc. Các đề xuất có trạng thái Rejected sẽ được giữ lại trong hồ sơ và hoàn lại tiền đặt cọc.
3. Thực hiện đề xuất
Các đề xuất có trạng thái Approved sẽ gọi hàm internal_execute_proposal() để thực hiện nội dung quyết định.
Sputnik-DAO hỗ trợ nhiều loại đề xuất, bài viết này tập trung vào hai loại điển hình:
( 3.1 Đề xuất thực hiện hàm hợp đồng
Đề xuất loại FunctionCall có thể thực thi các phương thức hợp đồng cụ thể. Người đề xuất khi tạo sẽ truyền vào các hoạt động hàm cần thực thi qua ProposalInput )actions###.
Mỗi action có thể chỉ định tên phương thức hợp đồng và tham số. Sputnik-DAO sử dụng hình thức Promise Batch Actions để hoàn thành việc thực thi hàm.
( 3.2 Đề xuất chuyển tiền hợp đồng
Đề xuất loại Transfer có thể chuyển các token đã tích lũy trong tài khoản hợp đồng )NEAR hoặc token tiêu chuẩn NEP-141 ### đến tài khoản chỉ định.
internal_execute_proposal() sẽ gọi hàm internal_payout(), thực hiện các thao tác chuyển tiền cho các loại token khác nhau và tài khoản nhận.
4. Tóm tắt
Bài viết này giới thiệu các khái niệm cốt lõi của hợp đồng thông minh Sputnik DAO đề xuất (Proposal), bao gồm việc tạo ra đề xuất, bỏ phiếu, thay đổi trạng thái và quy trình thực hiện. Các bài viết tiếp theo sẽ dựa trên đề xuất để mô tả chi tiết về mô hình quản trị của Sputnik-DAO (Policy) và cách thức thực hiện và cấu hình.