Nhật ký phát triển hợp đồng thông minh Rust (11): Phân tích cơ chế đề xuất của Sputnik DAO
Sputnik-DAO đang thúc đẩy hệ sinh thái NEAR phát triển theo hướng phi tập trung như một cơ sở hạ tầng của NEAR Protocol. 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ác cộng đồng tự trị phi tập trung và cung cấp các giải pháp quản trị quyết định cộng đồng linh hoạt và hiệu quả.
Sputnikdaov2 là hợp đồng thông minh 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 này: đề 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 về quản lý dự án. Các thành viên nắm giữ cổ phần có thể xem xét và bỏ phiếu cho các đề xuất. Các thành viên có thể ảnh hưởng đến hướng đi của dự án thông qua việc bỏ phiếu hoặc khởi xướng đề xuất.
Tại cấp 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 của đề xuất (Description)
Loại đề xuất ( kind )
Thông tin đề xuất sẽ được truyền vào phương thức add_proposal() dưới dạng tham số, sau khi được xác thực và 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 bản đồ Contract.proposals được duy trì toàn cầu của hợp đồng.
Thông tin thuộc tính đề xuất đầy đủ bao gồm:
description:Mô tả đề xuất
kind: loại đề xuất
proposer:người đề xuất
status: Trạng thái đề xuất, ban đầu là InProgress
submission_time:Thời gian nộp
vote_counts:đếm phiếu
votes: Chi tiết bỏ phiếu
Cần lưu ý rằng, Sputnik-DAO có khái niệm về tiền đặt cọc đề xuất (proposal_bond). Hợp đồng yêu cầu người đề xuất phải đặt cọc một số lượng token NEAR nhất định làm tiền bảo đảm khi gọi add_proposal(). Số 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 đề xuất được điều khiển bởi phương pháp act_proposal().
Các thành viên DAO có thể gọi act_proposal() để thực hiện các thao tác sau trên đề xuất:
VoteApprove: biểu thị đồng ý
VoteReject:表示反 đối
VoteRemove: cho rằng đề xuất này không có nghĩa, cần phải xóa bỏ
Sau khi bỏ phiếu, chương trình sẽ gọi policy.proposal_status() để tiến hành kiểm phiếu. Đối với các đề xuất đạt ngưỡng bỏ phiếu, trạng thái sẽ được thay đổi tương ứng:
Approved: Thông qua internal_execute_proposal() thực hiện
Bị từ chối/Gỡ bỏ: thực hiện các thao tác tiếp theo qua internal_reject_proposal()
Sự khác biệt giữa trạng thái Rejected và Removed là đề xuất ở trạng thái Removed sẽ bị loại bỏ khỏi danh sách đề xuất và không được hoàn trả tiền đặt cọc. Đề xuất ở trạng thái Rejected sẽ được giữ lại trong danh sách và tiền đặt cọc sẽ được hoàn trả.
3. Thực hiện đề xuất
Nếu trạng thái đề xuất là 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, phần này sẽ giới thiệu quy trình xử lý của hai loại điển hình:
3.1 Đề xuất thực thi hàm hợp đồng (FunctionCall)
Đề xuất loại FunctionCall đã được truyền vào các thao tác hàm cụ thể cần thực hiện (actions) khi thêm. Mỗi action có thể chỉ định tên phương thức hợp đồng và các tham số. Sputnik-DAO sử dụng hình thức Promise Batch Actions để hoàn thành việc thực hiện các đề xuất như vậy.
3.2 đề xuất chuyển tiền hợp đồng ( Transfer )
Đề xuất loại Transfer được sử dụng để chuyển token tích lũy từ tài khoản hợp đồng đến tài khoản chỉ định. internal_execute_proposal() sẽ gọi hàm internal_payout(), thực hiện các hoạt động chuyển tiền cho các loại Token Fungible 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 về 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, bỏ phiếu và thực hiện đề xuất, cũng như quy tắc thay đổi trạng thái đề xuất. Trong các phần sau, sẽ có mô tả chi tiết hơn về mô hình quản trị của Sputnik-DAO dựa trên đề xuất (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.
12 thích
Phần thưởng
12
4
Đăng lại
Chia sẻ
Bình luận
0/400
quiet_lurker
· 8giờ trước
Có chút không hiểu cái này hoạt động như thế nào.
Xem bản gốcTrả lời0
ForkItAllDay
· 8giờ trước
near chơi rất giỏi yêu thích xây dựng
Xem bản gốcTrả lời0
ApeWithNoFear
· 8giờ trước
Chơi hệ sinh thái near rồi, đỉnh một tay.
Xem bản gốcTrả lời0
GasFeeCrybaby
· 8giờ trước
Bỏ phiếu trên chuỗi đắt quá, không đủ tiền ăn rồi.
Phân tích hợp đồng thông minh Sputnik DAO: Giải thích cơ chế đề xuất
Nhật ký phát triển hợp đồng thông minh Rust (11): Phân tích cơ chế đề xuất của Sputnik DAO
Sputnik-DAO đang thúc đẩy hệ sinh thái NEAR phát triển theo hướng phi tập trung như một cơ sở hạ tầng của NEAR Protocol. 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ác cộng đồng tự trị phi tập trung và cung cấp các giải pháp quản trị quyết định cộng đồng linh hoạt và hiệu quả.
Sputnikdaov2 là hợp đồng thông minh 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 này: đề 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 về quản lý dự án. Các thành viên nắm giữ cổ phần có thể xem xét và bỏ phiếu cho các đề xuất. Các thành viên có thể ảnh hưởng đến hướng đi của dự án thông qua việc bỏ phiếu hoặc khởi xướng đề xuất.
Tại cấp 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):
Thông tin đề xuất sẽ được truyền vào phương thức add_proposal() dưới dạng tham số, sau khi được xác thực và 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 bản đồ Contract.proposals được duy trì toàn cầu của hợp đồng.
Thông tin thuộc tính đề xuất đầy đủ bao gồm:
Cần lưu ý rằng, Sputnik-DAO có khái niệm về tiền đặt cọc đề xuất (proposal_bond). Hợp đồng yêu cầu người đề xuất phải đặt cọc một số lượng token NEAR nhất định làm tiền bảo đảm khi gọi add_proposal(). Số 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 đề xuất được điều khiển bởi phương pháp act_proposal().
Các thành viên DAO 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, chương trình sẽ gọi policy.proposal_status() để tiến hành kiểm phiếu. Đối với các đề xuất đạt ngưỡng bỏ phiếu, trạng thái sẽ được thay đổi tương ứng:
Sự khác biệt giữa trạng thái Rejected và Removed là đề xuất ở trạng thái Removed sẽ bị loại bỏ khỏi danh sách đề xuất và không được hoàn trả tiền đặt cọc. Đề xuất ở trạng thái Rejected sẽ được giữ lại trong danh sách và tiền đặt cọc sẽ được hoàn trả.
3. Thực hiện đề xuất
Nếu trạng thái đề xuất là 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, phần này sẽ giới thiệu quy trình xử lý của hai loại điển hình:
3.1 Đề xuất thực thi hàm hợp đồng (FunctionCall)
Đề xuất loại FunctionCall đã được truyền vào các thao tác hàm cụ thể cần thực hiện (actions) khi thêm. Mỗi action có thể chỉ định tên phương thức hợp đồng và các tham số. Sputnik-DAO sử dụng hình thức Promise Batch Actions để hoàn thành việc thực hiện các đề xuất như vậy.
3.2 đề xuất chuyển tiền hợp đồng ( Transfer )
Đề xuất loại Transfer được sử dụng để chuyển token tích lũy từ tài khoản hợp đồng đến tài khoản chỉ định. internal_execute_proposal() sẽ gọi hàm internal_payout(), thực hiện các hoạt động chuyển tiền cho các loại Token Fungible 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 về 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, bỏ phiếu và thực hiện đề xuất, cũng như quy tắc thay đổi trạng thái đề xuất. Trong các phần sau, sẽ có mô tả chi tiết hơn về mô hình quản trị của Sputnik-DAO dựa trên đề xuất (Policy).