Nhật ký phát triển hợp đồng thông minh Rust (10-3): Phân tích cơ chế đề xuất DAO Sputnik
Sputnik-DAO như một 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 đã thúc đẩy nhiều cộng đồng tự trị phi tập trung của các dự án NEAR 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), 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ể đưa ra ý 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 trong cộng đồng đề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 cấp hợp đồng, 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. Khi gọi cần cung cấp thông tin chi tiết về đề xuất(ProposalInput), bao gồm:
Mô tả văn bản đề xuất (Description)
Loại đề xuất ( kind )
Phương pháp add_proposal() sẽ thực hiện kiểm tra và xử lý, 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ồ bơi đề xuất được duy trì bởi hợp đồng.
Thông tin 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 tạo, trạng thái bỏ phiếu, v.v. Trạng thái của đề xuất mới mặc định là InProgress.
Sputnik-DAO yêu cầu người đề xuất đặt cọc một số lượng NEAR nhất định làm tiền đặt cọc. 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: InProgress, Approved, Rejected, Removed, v.v.
Trạng thái đề xuất thay đổi được điều khiển bởi phương thức act_proposal(). Các thành viên DAO có thể gọi phương thức này để thực hiện các thao tác như bỏ phiếu cho đề xuất.
VoteApprove: tán thành
VoteReject: phản đối
VoteRemove: cho rằng đề xuất không có ý nghĩa, cần phải loại bỏ
Nội bộ sẽ gọi policy.proposal_status() để thực hiện việc bỏ phiếu. Đối với các đề xuất đáp ứng ngưỡng bỏ phiếu, trạng thái sẽ thay đổi tương ứng:
Đã phê duyệt: gọi internal_execute_proposal() thực hiện đề xuất
Bị từ chối/Đã gỡ bỏ: gọi internal_reject_proposal() 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ồ bơi đề xuất, không 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ồ bơi đề xuất và sẽ hoàn lại tiền đặt cọc.
3. Thực hiện đề xuất
Nếu trạng thái đề xuất là Approved, sẽ gọi nội bộ internal_execute_proposal() để thực hiện nội dung đề xuất.
Sputnik-DAO hỗ trợ nhiều loại đề xuất, phần lớn liên quan đến việc cập nhật cấu hình mô hình quản trị DAO. Dưới đây là quy trình xử lý của hai loại đề xuất điển hình:
3.1 Đề xuất thực hiện hàm hợp đồng
Đối với đề xuất loại FunctionCall, bên trong sẽ sử dụng hình thức Promise Batch Actions để thực hiện các cuộc gọi phương thức hợp đồng được chỉ định trong đề xuất.
3.2 Đề xuất chuyển tiền hợp đồng
Đối với đề xuất loại Transfer, hệ thống sẽ gọi hàm internal_payout(), thực hiện chuyển giao các loại token khác nhau đến tài khoản chỉ định.
Bài viết này giới thiệu về 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 quy trình tạo đề xuất, bỏ phiếu và thực hiện. Tiếp theo sẽ giới thiệu thêm về việc thực hiện và cấu hình mô hình quản trị trong Sputnik-DAO (Policy).
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
3
Đăng lại
Chia sẻ
Bình luận
0/400
GameFiCritic
· 11giờ trước
Kế hoạch quản trị vẫn chưa đủ phân tán, việc phân bổ trọng số phiếu bầu cần phải cân bằng hơn.
Phân tích hợp đồng thông minh Sputnik DAO: Thiết kế và thực hiện cơ chế đề xuất
Nhật ký phát triển hợp đồng thông minh Rust (10-3): Phân tích cơ chế đề xuất DAO Sputnik
Sputnik-DAO như một 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 đã thúc đẩy nhiều cộng đồng tự trị phi tập trung của các dự án NEAR 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), 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ể đưa ra ý 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 trong cộng đồng đề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 cấp hợp đồng, 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. Khi gọi cần cung cấp thông tin chi tiết về đề xuất(ProposalInput), bao gồm:
Phương pháp add_proposal() sẽ thực hiện kiểm tra và xử lý, 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ồ bơi đề xuất được duy trì bởi hợp đồng.
Thông tin 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 tạo, trạng thái bỏ phiếu, v.v. Trạng thái của đề xuất mới mặc định là InProgress.
Sputnik-DAO yêu cầu người đề xuất đặt cọc một số lượng NEAR nhất định làm tiền đặt cọc. 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: InProgress, Approved, Rejected, Removed, v.v.
Trạng thái đề xuất thay đổi được điều khiển bởi phương thức act_proposal(). Các thành viên DAO có thể gọi phương thức này để thực hiện các thao tác như bỏ phiếu cho đề xuất.
Nội bộ sẽ gọi policy.proposal_status() để thực hiện việc bỏ phiếu. Đối với các đề xuất đáp ứng ngưỡng bỏ phiếu, trạng thái sẽ 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ồ bơi đề xuất, không 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ồ bơi đề xuất và sẽ hoàn lại tiền đặt cọc.
3. Thực hiện đề xuất
Nếu trạng thái đề xuất là Approved, sẽ gọi nội bộ internal_execute_proposal() để thực hiện nội dung đề xuất.
Sputnik-DAO hỗ trợ nhiều loại đề xuất, phần lớn liên quan đến việc cập nhật cấu hình mô hình quản trị DAO. Dưới đây là quy trình xử lý của hai loại đề xuất điển hình:
3.1 Đề xuất thực hiện hàm hợp đồng
Đối với đề xuất loại FunctionCall, bên trong sẽ sử dụng hình thức Promise Batch Actions để thực hiện các cuộc gọi phương thức hợp đồng được chỉ định trong đề xuất.
3.2 Đề xuất chuyển tiền hợp đồng
Đối với đề xuất loại Transfer, hệ thống sẽ gọi hàm internal_payout(), thực hiện chuyển giao các loại token khác nhau đến tài khoản chỉ định.
Bài viết này giới thiệu về 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 quy trình tạo đề xuất, bỏ phiếu và thực hiện. Tiếp theo sẽ giới thiệu thêm về việc thực hiện và cấu hình mô hình quản trị trong Sputnik-DAO (Policy).