Giải thích cơ chế đề xuất của Sputnik DAO: Phân tích toàn bộ quy trình từ khởi xướng đến thực hiện.

robot
Đang tạo bản tóm tắ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 như một 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 cộng đồng tự trị của các dự án NEAR, đồng thời cũng cung cấp giải pháp quản trị quyết định cộng đồng hoàn chỉnh, linh hoạt và hiệu quả.

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 những khái niệm cốt lõi của hợp đồng này: đề xuất (Proposal), và giải thích 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 cộng đồng Sputnik-DAO đều có thể đưa ra ý kiến hoặc đề xuất về việc quản trị hoặc quản lý dự án. Sau đó, mỗi thành viên cộng đồng nắm giữ cổ phần trong DAO đều có thể xem xét và bỏ phiếu cho đề xuất đó. Nói cách khác, mỗi thành viên trong Sputnik-DAO đều có thể ảnh hưởng đến tương lai của dự án bằng cách bỏ phiếu cho các đề xuất của người khác hoặc khởi xướng các đề xuất quản lý mới.

Từ góc độ hợp đồng, các thành viên trong cộng đồng DAO có thể gọi phương thức add_proposal() của hợp đồng sputnikdaov2 để khởi xướng một đề xuất mới.

Tại thời điểm này, 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). Thông tin này sẽ được hiển thị công khai trên giao diện chính của Sputnik-DAO, giúp các thành viên trong cộng đồng hiểu được mục đích và ý nghĩa của đề xuất này.

  • Loại đề xuất ( kind ). Người đề xuất cần chọn loại ý kiến phù hợp với quản lý dự án (, ví dụ như nếu gọi hàm quyền hạn chính của hợp đồng thì cần chọn loại FunctionCall, nếu chuyển tiền dự án hợp đồng thì cần chọn loại Transfer, v.v. ).

Các thông tin ProposalInput này sẽ được truyền vào phương thức add_proposal(), phương thức này sẽ thực hiện các kiểm tra và xử lý liên quan, và tạo ra một đề xuất (Proposal) với thông tin khởi tạo đầy đủ. Cuối cùng, đề xuất này sẽ được liên kết với proposal_id duy nhất và được thêm vào bản đồ Contract.proposals được duy trì toàn cầu bởi hợp đồng Sputnik-DAO dưới dạng <key, value=""> trong hồ bơi đề xuất (.

Cần lưu ý rằng, trong Sputnik-DAO có khái niệm tiền đặt cọc đề xuất )proposal_bond(, tiền đặt cọc này sẽ được quản lý theo mô hình quản trị cộng đồng cụ thể của Sputnik-DAO )Policy(. Hợp đồng yêu cầu người đề xuất phải đặt cọc một số lượng mã thông báo NEAR nhất định làm tiền bảo đảm cho đề xuất mới khi gọi phương thức add_proposal)(. Số tiền đặt cọc này sẽ được hoàn trả cho người đề xuất thông qua việc gọi hàm nội bộ của hợp đồng internal_return_bonds)( khi đề xuất kết thúc bình thường ) với sự tán thành hoặc phản đối của cộng đồng (.

![])https://img-cdn.gateio.im/webp-social/moments-84ee9ca630a4cdcdb0d2eb63450a7cf4.webp(

2. Trạng thái đề xuất

Bất kỳ đề xuất tiêu chuẩn nào trong Sputnik-DAO có thể trải qua nhiều trạng thái ) trạng thái đề xuất mới được khởi tạo là InProgress (:

  • InProgress: Bỏ phiếu đang diễn ra
  • Đã phê duyệt: Đề xuất đã được thông qua
  • Bị từ chối: Đề xuất bị bác bỏ
  • Đã gỡ bỏ: Đề xuất đã bị gỡ bỏ
  • Thất bại: Thực hiện đề xuất thất bại
  • Hết hạn: Đề xuất đã hết hạn

Trạng thái thay đổi của đề xuất trong bể đề xuất được điều khiển bởi phương pháp act_proposal)( của hợp đồng. Các thành viên Sputnik-DAO có thể gọi phương pháp act_proposal)( để thực hiện thao tác trên đề xuất cụ thể ) thông qua id được chỉ định (.

Đối với các đề xuất đang ở trạng thái InProgress, các thành viên trong cộng đồng DAO có thể gọi act_proposal)( để thực hiện các thao tác bỏ phiếu cụ thể:

  • Action::VoteApprove:表赞成
  • Action::VoteReject:biểu phản đối
  • Action::VoteRemove: cho rằng đề xuất này không có ý nghĩa thực tế, cần được loại bỏ

Theo cách thực hiện, sau khi gọi hàm update_votes)(, chương trình sẽ chủ động gọi policy.proposal_status)( để thực hiện công việc bỏ phiếu. Đối với các đề xuất đạt ngưỡng bỏ phiếu, trạng thái của đề xuất sẽ được thay đổi tương ứng.

Thay đổi sau:

  • Nếu trạng thái đề xuất là Approved, thì đề xuất đó sẽ được thực hiện bằng cách gọi internal_execute_proposal)(;
  • Nếu trạng thái đề xuất là Rejected hoặc Removed, thì đề xuất đó sẽ được thực hiện các thao tác hoàn tất tiếp theo bằng cách gọi internal_reject_proposal)(.

Đáng chú ý là, sự khác biệt giữa trạng thái Rejected và Removed nằm ở chỗ: các đề xuất được xác định ở trạng thái Removed sẽ bị loại bỏ trực tiếp khỏi hồ sơ đề xuất và tiền đặt cọc ban đầu sẽ không được hoàn lại cho người đề xuất. Trong khi đó, các đề xuất ở trạng thái Rejected sẽ tiếp tục được giữ trong hồ sơ đề xuất và tiền đặt cọc tương ứng sẽ được hoàn lại.

![])https://img-cdn.gateio.im/webp-social/moments-427716593b21fa32b47855ceb5e101fc.webp(

3. Thực hiện đề xuất

Nếu một đề xuất có trạng thái được phê duyệt sau khi bỏ phiếu kết thúc, lúc này phương thức hợp đồng act_proposal)( sẽ tiếp tục gọi hàm internal_execute_proposal)( để thực hiện nội dung quyết định mà đề xuất chứa.

Các loại đề xuất được hỗ trợ bởi Sputnik-DAO bao gồm: ChangeConfig, ChangePolicy, AddMemberToRole, RemoveMemberFromRole, FunctionCall, UpgradeSelf, UpgradeRemote, Transfer, SetStakingContract, AddBounty, BountyDone, Vote, FactoryInfoUpdate, ChangePolicyAddOrUpdateRole, ChangePolicyRemoveRole, ChangePolicyUpdateDefaultVotePolicy, ChangePolicyUpdateParameters, v.v.

Dưới đây là giới thiệu trọng tâm về hai loại quy trình xử lý đề xuất điển hình:

) 3.1 Đề xuất thực hiện hàm hợp đồng ###ProposalKind::FunctionCall(

Các đề xuất kiểu FunctionCall đã được truyền các hoạt động hàm cụ thể mà đề xuất này sẽ thực hiện thông qua tham số ProposalInput khi người đề xuất gọi phương thức add_proposal)(. Hợp đồng NEAR cho phép liên kết nhiều function_call liên tiếp trong một Promise. Do đó, bên trong các actions mà người đề xuất ban đầu thiết lập có thể có nhiều đối tượng ActionCall, mỗi đối tượng ActionCall có thể chỉ định tên phương thức hợp đồng tương ứng cũng như các tham số phương thức khác.

Sputnik-DAO đã thực hiện việc thi hành đề xuất loại hàm hợp đồng thông qua hình thức Promise Batch Actions.

) 3.2 Đề xuất chuyển tiền hợp đồng ( ProposalKind::Transfer )

Khi các dự án hợp đồng thông minh NEAR hoạt động trong một khoảng thời gian, tài khoản hợp đồng có thể đã tích lũy được nhiều Token Fungible### bao gồm token NEAR gốc hoặc các token khác đáp ứng tiêu chuẩn NEP-141(.

Lúc này, các thành viên trong cộng đồng Sputnik-DAO có thể tập hợp các token này vào tài khoản receiver_id đã chỉ định bằng cách gửi đề xuất chuyển tiền hợp đồng. internal_execute_proposal)( cũng đã triển khai điểm xử lý tương ứng cho các đề xuất có ProposalKind là Transfer.

Nhánh xử lý này 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 Fungible khác nhau và các loại receiver_id) EOA hoặc tài khoản hợp đồng(.

![])https://img-cdn.gateio.im/webp-social/moments-ef0b959c42e1f5fc6263cd4a86fd078e.webp(

4. Tóm tắt

Bài viết này giới thiệu về khái niệm cốt lõi của hợp đồng thông minh Sputnik DAO - Đề xuất )Proposal(, đồng thời cũng giải thích ngắn gọn cách tạo đề xuất mới và bỏ phiếu thực hiện trong Sputnik DAO, cùng với các quy tắc thay đổi trạng thái cơ bản của các đề xuất liên quan )Status(.

![])https://img-cdn.gateio.im/webp-social/moments-eb73d5e15f6161f0a4b442cd4b99a91e.webp(</key,>

ACT-3.37%
Xem bản gốc
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 thưởng
  • 7
  • Chia sẻ
Bình luận
0/400
ThatsNotARugPullvip
· 07-26 11:04
Quá chính thức rồi, nói thẳng ra đi.
Xem bản gốcTrả lời0
BlockDetectivevip
· 07-26 08:11
Near có vẻ thơm lắm
Xem bản gốcTrả lời0
DeFiVeteranvip
· 07-23 11:35
Đưa ra một đề xuất để thử xem sao!
Xem bản gốcTrả lời0
fren_with_benefitsvip
· 07-23 11:17
Ôi ôi ôi, trời ơi, cái Sputnik này sử dụng tốt quá.
Xem bản gốcTrả lời0
UnluckyMinervip
· 07-23 11:06
Bỏ phiếu thật, quản trị giả
Xem bản gốcTrả lời0
LayerHoppervip
· 07-23 11:06
Cảm giác cũng được, chỉ là quá phức tạp.
Xem bản gốcTrả lời0
SerumSquirtervip
· 07-23 11:06
À, điều này còn phải xem nhiều như vậy à.
Xem bản gốcTrả lời0
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)