Nhật ký phát triển hợp đồng thông minh Rust (11): Phân tích cơ chế đề xuất DAO Sputnik
Sputnik-DAO như là cơ sở hạ tầ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 thành lập cộng đồng tự trị phi tập trung và 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), và trong các bài viết tiếp theo sẽ giới thiệu các mô hình quản trị cộng đồng DAO liên quan đến đề xuất (Policy).
1. Khởi xướng đề xuất
Mỗi thành viên trong Sputnik-DAO đều có thể đưa ra ý kiến hoặc đề xuất cho việc quản lý hoặc quản trị dự án. Sau đó, mỗi thành viên trong cộng đồng có cổ phần đều có thể xem xét và bỏ phiếu cho đề xuất đó. Các thành viên có thể ảnh hưởng đến sự phát triển tương lai của dự án bằng cách bỏ phiếu cho đề xuất hoặc khởi xướng đề xuất mới.
Từ khía cạnh hợp đồng, các thành viên DAO có thể gọi phương thức add_proposal() của hợp đồng sputnikdaov2 để khởi xướng đề xuất mới. Người đề xuất cần cung cấp thông tin chi tiết về đề xuất(ProposalInput):
Mô tả văn bản đề xuất (Description)
Loại đề xuất ( kind )
phương pháp add_proposal() sẽ kiểm tra và xử lý thông tin đề xuất, tạo ra một đề xuất hoàn chỉnh (Proposal), và gán nó với proposal_id duy nhất, thêm vào hồ sơ đề xuất được duy trì toàn cầu trong hợp đồng.
Thông tin thuộc tính đầy đủ của đề xuất bao gồm:
description: Mô tả
kind: loại
proposer: người đề xuất
status: trạng thái
submission_time: Thời gian nộp
vote_counts: thống kê phiếu bầu
votes: Chi tiết bỏ phiếu
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 khi khởi xướng đề xuất. 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 tiêu chuẩn trong Sputnik-DAO có thể trải qua các trạng thái sau:
InProgress: Đang tiến hành
Approved: Đã được phê duyệt
Rejected: Đã bị từ chối
Đã loại bỏ: 已移除
Expired: Đã hết hạn
Đã chuyển
Trạng thái đề xuất thay đổi được điều khiển bởi phương pháp act_proposal(). Các thành viên DAO có thể thực hiện các thao tác sau đối với đề xuất:
VoteApprove: Tán thành
VoteReject: phản đối
VoteRemove: loại bỏ
Sau khi bỏ phiếu, hợp đồng sẽ gọi policy.proposal_status() để tiến hành đếm phiếu. Trạng thái đề xuất đạt ngưỡng bỏ phiếu sẽ được thay đổi tương ứng:
Approved: thông qua internal_execute_proposal() thực hiện
Bị từ chối/Xóa: Thực hiện các thao tác tiếp theo thông qua internal_reject_proposal()
Các đề xuất ở trạng thái Removed sẽ bị loại bỏ khỏi bể đề xuất và không hoàn lại tiền đặt cọc. Các đề xuất ở trạng thái Rejected sẽ được giữ lại trong bể và hoàn lại tiền đặt cọc.
3. Thực hiện đề xuất
Đối với đề xuất ở trạng thái Approved, act_proposal() sẽ gọi internal_execute_proposal() để thực hiện nội dung đề xuất.
Sputnik-DAO hỗ trợ nhiều loại đề xuất, chẳng hạn như ChangeConfig, ChangePolicy, FunctionCall, Transfer, v.v.
Dưới đây là quy trình thực hiện của hai loại đề xuất điển hình:
3.1 Đề xuất thực hiện hàm hợp đồng ( FunctionCall )
Đề xuất loại FunctionCall khi được tạo sẽ truyền vào các thao tác hàm cụ thể (actions). Mỗi action có thể chỉ định tên phương thức hợp đồng và tham số.
Sputnik-DAO áp dụng hình thức Promise Batch Actions để hoàn thành việc thực hiện các đề xuất loại hàm hợp đồng.
3.2 Đề xuất chuyển tiền hợp đồng ( Transfer )
Đề xuất loại Transfer có thể chuyển các token (NEAR hoặc token tiêu chuẩn NEP-141 ) đã tích lũy trong tài khoản hợp đồng đến tài khoản được 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 đến 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), giải thích cách tạo đề xuất mới và thực hiện bỏ phiếu, cũng như quy tắc thay đổi trạng thái của đề xuất. Sau đó, sẽ dựa trên đề xuất để giới thiệu thêm về mô hình quản trị của Sputnik-DAO (Policy) và cách thực hiện cũng như 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.
8 thích
Phần thưởng
8
6
Đăng lại
Chia sẻ
Bình luận
0/400
quietly_staking
· 08-08 17:11
Chỉ là bỏ phiếu linh hồn thôi.
Xem bản gốcTrả lời0
ProposalDetective
· 08-06 17:22
Rõ ràng đã đầu tư sai người rồi.
Xem bản gốcTrả lời0
GasGasGasBro
· 08-06 06:18
Hợp đồng không liên quan đến tôi, tôi chỉ nhận tiền.
Xem bản gốcTrả lời0
FarmHopper
· 08-06 06:15
dao mà còn sử dụng bỏ phiếu không?
Xem bản gốcTrả lời0
PriceOracleFairy
· 08-06 06:12
trời ạ, trò chơi dao của near đang trở nên khá thú vị, không nói dối đâu
Phân tích toàn bộ cơ chế đề xuất của Sputnik DAO: Từ việc tạo ra đến chu trình thực hiện
Nhật ký phát triển hợp đồng thông minh Rust (11): Phân tích cơ chế đề xuất DAO Sputnik
Sputnik-DAO như là cơ sở hạ tầ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 thành lập cộng đồng tự trị phi tập trung và 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), và trong các bài viết tiếp theo sẽ giới thiệu các mô hình quản trị cộng đồng DAO liên quan đến đề xuất (Policy).
1. Khởi xướng đề xuất
Mỗi thành viên trong Sputnik-DAO đều có thể đưa ra ý kiến hoặc đề xuất cho việc quản lý hoặc quản trị dự án. Sau đó, mỗi thành viên trong cộng đồng có cổ phần đều có thể xem xét và bỏ phiếu cho đề xuất đó. Các thành viên có thể ảnh hưởng đến sự phát triển tương lai của dự án bằng cách bỏ phiếu cho đề xuất hoặc khởi xướng đề xuất mới.
Từ khía cạnh hợp đồng, các thành viên DAO có thể gọi phương thức add_proposal() của hợp đồng sputnikdaov2 để khởi xướng đề xuất mới. Người đề xuất cần cung cấp thông tin chi tiết về đề xuất(ProposalInput):
phương pháp add_proposal() sẽ kiểm tra và xử lý thông tin đề xuất, tạo ra một đề xuất hoàn chỉnh (Proposal), và gán nó với proposal_id duy nhất, thêm vào hồ sơ đề xuất được duy trì toàn cầu trong hợp đồng.
Thông tin thuộc tính đầy đủ của đề xuất bao gồm:
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 khi khởi xướng đề xuất. 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 tiêu chuẩn trong Sputnik-DAO có thể trải qua các trạng thái sau:
Trạng thái đề xuất thay đổi được điều khiển bởi phương pháp act_proposal(). Các thành viên DAO có thể thực hiện các thao tác sau đối với đề xuất:
Sau khi bỏ phiếu, hợp đồng sẽ gọi policy.proposal_status() để tiến hành đếm phiếu. Trạng thái đề xuất đạt ngưỡng bỏ phiếu sẽ được thay đổi tương ứng:
Các đề xuất ở trạng thái Removed sẽ bị loại bỏ khỏi bể đề xuất và không hoàn lại tiền đặt cọc. Các đề xuất ở trạng thái Rejected sẽ được giữ lại trong bể và hoàn lại tiền đặt cọc.
3. Thực hiện đề xuất
Đối với đề xuất ở trạng thái Approved, act_proposal() sẽ gọi internal_execute_proposal() để thực hiện nội dung đề xuất.
Sputnik-DAO hỗ trợ nhiều loại đề xuất, chẳng hạn như ChangeConfig, ChangePolicy, FunctionCall, Transfer, v.v.
Dưới đây là quy trình thực hiện của hai loại đề xuất điển hình:
3.1 Đề xuất thực hiện hàm hợp đồng ( FunctionCall )
Đề xuất loại FunctionCall khi được tạo sẽ truyền vào các thao tác hàm cụ thể (actions). Mỗi action có thể chỉ định tên phương thức hợp đồng và tham số.
Sputnik-DAO áp dụng hình thức Promise Batch Actions để hoàn thành việc thực hiện các đề xuất loại hàm hợp đồng.
3.2 Đề xuất chuyển tiền hợp đồng ( Transfer )
Đề xuất loại Transfer có thể chuyển các token (NEAR hoặc token tiêu chuẩn NEP-141 ) đã tích lũy trong tài khoản hợp đồng đến tài khoản được 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 đến 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), giải thích cách tạo đề xuất mới và thực hiện bỏ phiếu, cũng như quy tắc thay đổi trạng thái của đề xuất. Sau đó, sẽ dựa trên đề xuất để giới thiệu thêm về mô hình quản trị của Sputnik-DAO (Policy) và cách thực hiện cũng như cấu hình.