Nouns Daoのソースコード解説
概要
Nouns Daoの実装の注目ポイントをまとめました。
仕様
Nouns は、オンチェーン・アバター・コミュニティの形成を改善するための実験的な試みです。Cryptopunks などのプロジェクトがデジタルコミュニティとアイデンティティの構築を試みているのに対し、Nouns はアイデンティティ、コミュニティ、ガバナンス、コミュニティが使用できる金庫を構築することを試みています。
- NFT(nouns)が1日毎に生成されオークションにかけられる。
- オークションの売上はtreasuryに溜まっていく。
- アートワークはオンチェーンに保存される。
- NFT(nouns)にレア度的な差異はない。
Nounders(コントラクトを作った人達)には10日に1度NFT(nouns)が無料で付与される。
@cryptoseneca
@gremplin
@punk4156
@eboyarts
@punk4464
solimander
@dhof
@devcarrot
@TimpersHD
@lastpunk9999
Proposals
treasuryに溜まったイーサでやりたいことリスト
Proposal毎に投票が行われ、可決されたものが実行される
NFT(nouns)は投票券(1票)としての役割を持つ。
Nouns DAO
(例)コーヒーブランドを作るプロポーザル
Nouns DAO
Nouns Foundation(Nounders?)は提案拒否権(The proposal veto right)を持っている。
「個人的な利益のために不公平にtreasuryを引き出す」などの不正があったときのみ行使される。
コントラクト(ソース)
主なコントラクト一覧
各機能の実装
ドット絵の生成
プレイグラウンド
こんな感じの画像が生成される
各パーツのIDを決める(NounsSeeder)
SeedからSVGImageを取得する(NounsDescriptor)
SeederとDescriptorのコントラクトはNounsTokenのオーナーであれば好きに変更できる
※ロックすると変更できなくなる
10個に1つNoundersに付与される処理
ERC721Checkpointableについて
NounsToken.solはERC721Checkpointableを継承している
delegateメソッドで投票権を他のアドレスを譲渡できるっぽい
中身は結構複雑で難しい
オークションの終了と開始
入札
確定すると売上はNounsDAOExecutorに送られる
NounsDAOProxy
Proposalsを取り扱うコントラクト
実装はNounsDAOLogicV1に書いてありNounsDAOProxyは処理をデリゲートしている(付け替え可能)
Proposalsの作成
totalSupplyは投票数
proposalThreshold貯れば可決
投票
Proposalsの状態確認
投票中、可決、否決
確定したProposalsをqueueに入れる
NounsDAOExecutorに対して一旦キューに入れる
NounsDAOExecutorはTimelockという仕組みを持っていて、一定期間実行を保留している?
admin権限ならキャンセルできるっぽいので、一応目視で監視する仕組み?
Proposalsの確定(送金処理の呼び出し)
proposalに対する拒否権の発動
実際の送金処理
感想
nounsは増えていくので1票の価値は薄まり
値段は下がっていくものだと思ったのだがそうでもなさそう
NounsDAOProxyの実装を自由に書き換えられるということは、Proposalsに対する処理を好きに書き換えれる。
つまりトレジャリーのイーサは実質はnoundersなら好きに動かせる。
10人のnoundersを信頼できないと成立しない仕組み
結構巨大なプログラム群だが、これをバグなく運用するのは相当難しそう。
Discussion