Penjelasan Mekanisme Proposal Sputnik DAO: Analisis Proses Lengkap dari Pengajuan hingga Pelaksanaan

robot
Pembuatan abstrak sedang berlangsung

Buku Harian Pengembangan Smart Contract Rust (11): Analisis Mekanisme Proposal DAO Sputnik

Sputnik-DAO sebagai infrastruktur NEAR Protocol, sedang mendorong ekosistem NEAR menuju arah desentralisasi. Saat ini platform tersebut telah memfasilitasi banyak komunitas otonom proyek NEAR, sekaligus juga menyediakan solusi tata kelola keputusan komunitas yang lengkap, fleksibel, dan efisien.

Sputnikdaov2 adalah smart contract yang digunakan untuk voting tata kelola komunitas Sputnik-DAO. Artikel ini akan memperkenalkan konsep inti dari kontrak tersebut: proposal (Proposal), dan menjelaskan tentang pola tata kelola komunitas DAO yang relevan (Policy).

1. Pengajuan Proposal

Setiap anggota dalam komunitas Sputnik-DAO dapat memberikan pendapat atau mengajukan proposal tentang tata kelola atau manajemen proyek. Selanjutnya, setiap anggota komunitas yang memiliki saham di DAO dapat meninjau dan memberikan suara pada proposal tersebut. Dengan kata lain, setiap anggota dalam Sputnik-DAO dapat mempengaruhi arah masa depan proyek dengan memberikan suara pada proposal orang lain atau mengajukan proposal manajemen baru.

Dari sisi kontrak, anggota komunitas DAO dapat memanggil metode add_proposal() dari kontrak sputnikdaov2 untuk mengajukan proposal baru.

Pada saat ini, pengusul perlu memberikan rincian lengkap tentang proposal tersebut (ProposalInput):

  • Deskripsi teks proposal (Description). Informasi ini akan ditampilkan secara publik di frontend halaman utama Sputnik-DAO, membantu anggota komunitas memahami tujuan dan makna proposal tersebut.

  • Jenis proposal (kind). Pengusul harus memilih sesuai dengan jenis opini yang diajukan terhadap manajemen proyek (, seperti jika pemanggilan fungsi hak kunci kontrak diperlukan, pilih jenis FunctionCall, jika pemindahan dana proyek kontrak diperlukan, pilih jenis Transfer, dan sebagainya ).

Informasi ProposalInput ini akan digunakan sebagai parameter yang diteruskan ke metode add_proposal(), yang akan melakukan validasi dan pemrosesan terkait, serta menghasilkan sebuah proposal (Proposal) dengan informasi inisialisasi yang lengkap. Akhirnya, proposal tersebut akan terikat dengan proposal_id yang unik, dan ditambahkan ke dalam peta Contract.proposals yang dikelola secara global oleh kontrak Sputnik-DAO dalam bentuk <key, value=""> di kolam proposal (.

Perlu dicatat bahwa dalam Sputnik-DAO terdapat konsep setoran proposal )proposal_bond(, yang akan dikelola sesuai dengan model tata kelola komunitas Sputnik-DAO )Policy(. Kontrak mengharuskan pengusul untuk mempertaruhkan sejumlah token NEAR sebagai jaminan proposal baru saat memanggil metode add_proposal)(. Setoran ini akan dikembalikan kepada pengusul melalui pemanggilan fungsi internal kontrak internal_return_bonds)( ketika proposal berakhir secara normal ) dengan suara komunitas setuju atau menolak (.

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

2. Status Proposal

Setiap proposal standar dalam Sputnik-DAO dapat mengalami berbagai status ) status proposal baru diinisialisasi sebagai InProgress (:

  • InProgress: Pemungutan suara sedang berlangsung
  • Disetujui: Proposal telah disetujui
  • Ditolak: Proposal ditolak
  • Dihapus: Proposal telah dihapus
  • Gagal: Pelaksanaan proposal gagal
  • Kadaluarsa: Proposal telah kadaluarsa

Perubahan status proposal dalam kolam proposal didorong oleh metode act_proposal)( dari kontrak. Anggota Sputnik-DAO dapat memanggil metode act_proposal)( untuk melakukan operasi pada proposal tertentu ) dengan menetapkan id (.

Untuk proposal yang berada dalam status InProgress, anggota komunitas DAO dapat memanggil act_proposal)( untuk melakukan tindakan pemungutan suara yang spesifik:

  • Action::VoteApprove:表setuju
  • Action::VoteReject:menunjukkan penolakan
  • Action::VoteRemove: menganggap proposal ini tidak memiliki arti praktis, perlu dihapus

Berdasarkan implementasi, setelah secara internal memanggil fungsi update_votes)(, program akan secara aktif memanggil policy.proposal_status)( untuk melakukan penghitungan suara. Untuk proposal yang memenuhi ambang batas suara, status proposal akan mengalami perubahan yang sesuai.

Setelah perubahan:

  • Jika status proposal adalah Disetujui, maka proposal tersebut akan dieksekusi melalui pemanggilan internal_execute_proposal)(;
  • Jika status proposal adalah Rejected atau Removed, maka proposal tersebut akan melaksanakan operasi penutupan berikutnya dengan memanggil internal_reject_proposal)(.

Perlu dicatat bahwa perbedaan antara status Rejected dan Removed adalah: proposal yang ditetapkan sebagai status Removed akan langsung dihapus dari kolam proposal, dan deposit yang awalnya dipertaruhkan tidak akan dikembalikan kepada pengusul. Sedangkan untuk proposal dengan status Rejected, proposal tersebut akan tetap ada di kolam proposal dan deposit yang sesuai akan dikembalikan.

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

3. Pelaksanaan Proposal

Jika suatu proposal berstatus Disetujui setelah pemungutan suara berakhir, maka metode kontrak act_proposal)( akan terus memanggil fungsi internal_execute_proposal)( untuk melaksanakan konten keputusan yang terkandung dalam proposal.

Jenis proposal yang didukung oleh Sputnik-DAO meliputi: ChangeConfig, ChangePolicy, AddMemberToRole, RemoveMemberFromRole, FunctionCall, UpgradeSelf, UpgradeRemote, Transfer, SetStakingContract, AddBounty, BountyDone, Vote, FactoryInfoUpdate, ChangePolicyAddOrUpdateRole, ChangePolicyRemoveRole, ChangePolicyUpdateDefaultVotePolicy, ChangePolicyUpdateParameters, dan lain-lain.

Berikut adalah penjelasan singkat tentang dua jenis proses penanganan proposal yang khas:

) 3.1 Eksekusi Fungsi Kontrak Proposal ### ProposalKind::FunctionCall (

Proposal tipe FunctionCall telah diteruskan dengan parameter ProposalInput ketika pengusul memanggil metode add_proposal)(, yang berisi fungsi spesifik yang harus dieksekusi oleh proposal tersebut )actions(. Kontrak NEAR memungkinkan mengikat beberapa function_call yang berurutan dalam satu Promise. Oleh karena itu, di dalam actions yang ditetapkan oleh pengusul, dapat terdapat beberapa objek ActionCall, di mana setiap ActionCall dapat menentukan nama metode kontrak yang sesuai serta parameter metode dan lain-lain.

Sputnik-DAO menggunakan bentuk Promise Batch Actions untuk menyelesaikan pelaksanaan proposal jenis fungsi kontrak.

) 3.2 Proposal Transfer Dana Kontrak ### ProposalKind::Transfer (

Setelah proyek kontrak pintar NEAR berjalan untuk beberapa waktu, akun kontrak itu sendiri mungkin telah mengumpulkan sejumlah besar Fungible Token ) termasuk token NEAR asli, atau token lain yang sesuai dengan standar NEP-141 (.

Saat ini, anggota komunitas Sputnik-DAO dapat mengumpulkan token-token ini ke akun receiver_id yang ditentukan dengan mengajukan proposal pemindahan dana kontrak. internal_execute_proposal)( juga telah mengimplementasikan titik masuk yang sesuai untuk proposal yang memiliki ProposalKind sebagai Transfer.

Pengolahan cabang dasar ini akan memanggil fungsi internal_payout)(, untuk melakukan operasi transfer untuk berbagai jenis Fungible Token serta berbagai jenis receiver_id) EOA atau akun kontrak(.

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

4. Ringkasan

Artikel ini memperkenalkan konsep inti dari kontrak Sputnik DAO—Proposal ), sekaligus menjelaskan secara singkat bagaimana cara membuat proposal baru di Sputnik DAO dan melaksanakan pemungutan suara, serta aturan perubahan status dasar proposal terkait (.

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

ACT-3.36%
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • 7
  • Bagikan
Komentar
0/400
ThatsNotARugPullvip
· 07-26 11:04
Terlalu resmi, langsung saja berbicara dengan bahasa manusia.
Lihat AsliBalas0
BlockDetectivevip
· 07-26 08:11
Near sepertinya cukup wangi
Lihat AsliBalas0
DeFiVeteranvip
· 07-23 11:35
Coba ajukan proposal!
Lihat AsliBalas0
fren_with_benefitsvip
· 07-23 11:17
Wah wah wah, ini Sputnik sangat berguna!
Lihat AsliBalas0
UnluckyMinervip
· 07-23 11:06
Voting sebenarnya, tetapi pengelolaan palsu.
Lihat AsliBalas0
LayerHoppervip
· 07-23 11:06
Rasanya baik-baik saja, hanya saja terlalu rumit.
Lihat AsliBalas0
SerumSquirtervip
· 07-23 11:06
Ah, ini masih harus melihat begitu banyak ya.
Lihat AsliBalas0
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)