Rust smart contract pengembangan jurnal (11): Penjelasan mekanisme proposal Sputnik DAO
Sputnik-DAO sebagai infrastruktur NEAR Protocol, dengan kuat mendorong ekosistem NEAR menuju "desentralisasi". Saat ini, platform ini telah memfasilitasi banyak proyek NEAR yang membentuk komunitas otonomi "desentralisasi", sambil menyediakan solusi tata kelola keputusan komunitas yang lengkap, fleksibel, dan efisien.
Sputnikdaov2 adalah smart contract yang digunakan untuk pemungutan suara dalam tata kelola komunitas Sputnik-DAO. Artikel ini akan memperkenalkan konsep inti dari kontrak tersebut: proposal (Proposal), dan dalam artikel selanjutnya akan memperkenalkan model tata kelola komunitas DAO yang terkait dengan "proposal" (Policy).
1. Pengajuan Proposal
Setiap anggota di Sputnik-DAO dapat memberikan pendapat atau mengajukan proposal mengenai tata kelola atau manajemen proyek. Setiap anggota komunitas yang memiliki saham dapat meninjau dan memberikan suara pada proposal. Anggota dapat mempengaruhi arah masa depan proyek melalui pemungutan suara atau dengan mengajukan proposal baru.
Di tingkat kontrak, anggota DAO dapat memanggil metode add_proposal() dari kontrak sputnikdaov2 untuk mengajukan proposal baru:
karat
u64
Pengusul harus memberikan rincian lengkap tentang proposal (ProposalInput):
Deskripsi teks proposal (Description)
Jenis proposal ( kind )
Informasi ini akan digunakan sebagai parameter untuk metode add_proposal(), metode ini akan melakukan verifikasi, menghasilkan proposal yang sepenuhnya diinisialisasi (Proposal). Proposal akhir akan terikat dengan proposal_id yang unik dan ditambahkan ke dalam kolam proposal yang dikelola secara global oleh kontrak.
Informasi atribut lengkap dari proposal meliputi:
Deskripsi (description)
类型(jenis)
proposor(proposer)
status(status)
waktu pengiriman(submission_time)
Status voting(vote_counts, votes)
Perlu dicatat bahwa dalam Sputnik-DAO terdapat konsep proposal bond (proposal_bond). Kontrak mengharuskan pengusul untuk mengunci sejumlah token NEAR sebagai jaminan saat memanggil add_proposal(). Deposit tersebut akan dikembalikan kepada pengusul saat proposal berakhir dengan normal.
2. Status Proposal
Proposal dalam Sputnik-DAO dapat mengalami berbagai status:
InProgress: status awal proposal baru
Disetujui: memperoleh persetujuan
Ditolak:被否决
Dihapus:被移除
Expired: Sudah Kadaluarsa
Dipindahkan:已转移
Gagal: eksekusi gagal
Perubahan status proposal didorong oleh metode act_proposal(). Anggota DAO dapat memanggil metode ini untuk melakukan pemungutan suara dan operasi lainnya pada proposal:
VoteApprove: setuju
VoteReject:menolak
VoteRemove: Hapus
Setelah pemungutan suara, akan memanggil policy.proposal_status() untuk menghitung suara. Untuk proposal yang memenuhi ambang suara, status akan berubah sesuai.
Proposal dengan status Disetujui akan dieksekusi
Proposal yang berstatus Rejected atau Removed akan menjalankan operasi penutupan.
Proposal dengan status Removed akan dihapus dari kolam proposal dan tidak akan mengembalikan deposit. Proposal dengan status Rejected akan tetap berada di kolam dan deposit akan dikembalikan.
3. Eksekusi Proposal
Jika status proposal berubah menjadi Disetujui, act_proposal() akan memanggil internal_execute_proposal() untuk mengeksekusi konten proposal.
Sputnik-DAO mendukung berbagai jenis proposal, seperti ChangeConfig, ChangePolicy, FunctionCall, Transfer, dll. Setiap jenis memiliki cabang penanganan yang sesuai.
Berikut adalah dua jenis alur proses proposal yang khas:
( 3.1 Proposal Eksekusi Fungsi Kontrak)FunctionCall###
Proposal tipe FunctionCall dapat mengeksekusi metode kontrak tertentu. Proposal tersebut berisi fungsi operasi yang akan dieksekusi (actions), setiap action dapat menentukan nama metode kontrak dan argumen.
Akhirnya menyelesaikan pemanggilan fungsi dalam bentuk Tindakan Batch Janji.
( 3.2 Proposal Transfer Dana Kontrak ) Transfer ###
Proposal jenis Transfer dapat memindahkan token dari akun kontrak ke akun yang ditentukan.
internal_execute_proposal() akan memanggil fungsi internal_payout(), untuk melakukan operasi transfer untuk berbagai jenis token dan akun penerima.
4. Kesimpulan
Artikel ini memperkenalkan konsep inti dari kontrak Sputnik DAO—proposal (Proposal), termasuk pembuatan proposal, pemungutan suara, perubahan status, dan proses pelaksanaan. Selanjutnya, akan dijelaskan lebih lanjut tentang model tata kelola Sputnik-DAO berdasarkan proposal (Policy).
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.
7 Suka
Hadiah
7
5
Posting ulang
Bagikan
Komentar
0/400
Layer2Arbitrageur
· 7jam yang lalu
meh, implementasi pemerintah dao lainnya... sudah memeriksa angka gas - sebenarnya 47% lebih efisien daripada pemungutan suara eth
Analisis Mendalam Mekanisme Proposal Kontrak Cerdas Sputnik DAO
Rust smart contract pengembangan jurnal (11): Penjelasan mekanisme proposal Sputnik DAO
Sputnik-DAO sebagai infrastruktur NEAR Protocol, dengan kuat mendorong ekosistem NEAR menuju "desentralisasi". Saat ini, platform ini telah memfasilitasi banyak proyek NEAR yang membentuk komunitas otonomi "desentralisasi", sambil menyediakan solusi tata kelola keputusan komunitas yang lengkap, fleksibel, dan efisien.
Sputnikdaov2 adalah smart contract yang digunakan untuk pemungutan suara dalam tata kelola komunitas Sputnik-DAO. Artikel ini akan memperkenalkan konsep inti dari kontrak tersebut: proposal (Proposal), dan dalam artikel selanjutnya akan memperkenalkan model tata kelola komunitas DAO yang terkait dengan "proposal" (Policy).
1. Pengajuan Proposal
Setiap anggota di Sputnik-DAO dapat memberikan pendapat atau mengajukan proposal mengenai tata kelola atau manajemen proyek. Setiap anggota komunitas yang memiliki saham dapat meninjau dan memberikan suara pada proposal. Anggota dapat mempengaruhi arah masa depan proyek melalui pemungutan suara atau dengan mengajukan proposal baru.
Di tingkat kontrak, anggota DAO dapat memanggil metode add_proposal() dari kontrak sputnikdaov2 untuk mengajukan proposal baru:
karat u64
Pengusul harus memberikan rincian lengkap tentang proposal (ProposalInput):
Informasi ini akan digunakan sebagai parameter untuk metode add_proposal(), metode ini akan melakukan verifikasi, menghasilkan proposal yang sepenuhnya diinisialisasi (Proposal). Proposal akhir akan terikat dengan proposal_id yang unik dan ditambahkan ke dalam kolam proposal yang dikelola secara global oleh kontrak.
Informasi atribut lengkap dari proposal meliputi:
Perlu dicatat bahwa dalam Sputnik-DAO terdapat konsep proposal bond (proposal_bond). Kontrak mengharuskan pengusul untuk mengunci sejumlah token NEAR sebagai jaminan saat memanggil add_proposal(). Deposit tersebut akan dikembalikan kepada pengusul saat proposal berakhir dengan normal.
2. Status Proposal
Proposal dalam Sputnik-DAO dapat mengalami berbagai status:
Perubahan status proposal didorong oleh metode act_proposal(). Anggota DAO dapat memanggil metode ini untuk melakukan pemungutan suara dan operasi lainnya pada proposal:
Setelah pemungutan suara, akan memanggil policy.proposal_status() untuk menghitung suara. Untuk proposal yang memenuhi ambang suara, status akan berubah sesuai.
Proposal dengan status Removed akan dihapus dari kolam proposal dan tidak akan mengembalikan deposit. Proposal dengan status Rejected akan tetap berada di kolam dan deposit akan dikembalikan.
3. Eksekusi Proposal
Jika status proposal berubah menjadi Disetujui, act_proposal() akan memanggil internal_execute_proposal() untuk mengeksekusi konten proposal.
Sputnik-DAO mendukung berbagai jenis proposal, seperti ChangeConfig, ChangePolicy, FunctionCall, Transfer, dll. Setiap jenis memiliki cabang penanganan yang sesuai.
Berikut adalah dua jenis alur proses proposal yang khas:
( 3.1 Proposal Eksekusi Fungsi Kontrak)FunctionCall###
Proposal tipe FunctionCall dapat mengeksekusi metode kontrak tertentu. Proposal tersebut berisi fungsi operasi yang akan dieksekusi (actions), setiap action dapat menentukan nama metode kontrak dan argumen.
Akhirnya menyelesaikan pemanggilan fungsi dalam bentuk Tindakan Batch Janji.
( 3.2 Proposal Transfer Dana Kontrak ) Transfer ###
Proposal jenis Transfer dapat memindahkan token dari akun kontrak ke akun yang ditentukan.
internal_execute_proposal() akan memanggil fungsi internal_payout(), untuk melakukan operasi transfer untuk berbagai jenis token dan akun penerima.
4. Kesimpulan
Artikel ini memperkenalkan konsep inti dari kontrak Sputnik DAO—proposal (Proposal), termasuk pembuatan proposal, pemungutan suara, perubahan status, dan proses pelaksanaan. Selanjutnya, akan dijelaskan lebih lanjut tentang model tata kelola Sputnik-DAO berdasarkan proposal (Policy).