はじめに
この記事は分散型投票システムのプラットフォーム「snapshot」で投票所を作って試した記録です。
snapshotは、オープンソースで開発されていて、有名なAAVEやUniswapなどを提供する多くのプロジェクトが利用しています。
この記事を書いている時点で11,000のプロジェクトが利用しています。
snapshotの仕組みとしては、「スペース」という提案と投票を行う場を作成します。
この「スペース」の作成には、イーサリアムチェーンでENSドメインを利用します。
(ENSは既存のものでも、新たにsnapshotで作ることも可能)
一方、Nounsのように提案や投票それ自体にはブロックチェーン技術は使われておらず、分散型フォイルシステムIPFSで管理されています。
従って、提案や投票にはガス代がかかりません。
投票に参加するメンバー(DAOメンバー)は、特定のNFTのホルダーや、ガバナンストークンを設定することが可能です。
例えば、投票権を有するNFTを持っているウォレットアドレスだけがsnapshotに接続して、投票する設定が可能です(投票してもNFTはなくならい)。
また、あのNounsでも実装されている投票権の委任(Delegate)という機能も用意されているみたいです。
この記事ではDAOの投票システムとして利用されているsnapshotの始め方を解説しました。
DAOの投票所を作りたい人にとって参考になればと思います。
→snapshotの詳細はこちらの公式ページで確認できます。
snapshotで投票所を作る
まず、はじめに「snapshot」のサイトにアクセスして、右上の「ウォレットを接続する」をクリック。
続いて「MetaMask」をクリック。
ここから提案や投票を行う「スペース」の作成になります。
「Get Started」をクリック。
スペースを作成するにはENSが必要になります。
すでに持っているENSを利用したい場合は、「既存のENSドメインを利用」、
新しく作成する場合は、「新しいドメインを登録する」で作成します。
なお、1つのウォレットアドレスで複数のスペースを作成する場合は、複数のENSを持っておく必要があります。
この時はウォレットアドレスに入っている既存のENSを設定しました。
続いて「登録する」をクリック。
デフォルトではENSドメインのウォレットアドレスが表示されます。
今回は変更しないのでこのまま「コントローラーを設定する」をクリック。
最後にスペースの作成を完了するために「確定する」をクリック。
メタマスクで「確認」をクリック。
(ここでガス代がかかります)
続いてスペースのプロフィール作成です。
名前の他に、HPやSNSアカウントを設定できます。
ここでは名前のみ設定して「次へ」をクリック。
(設定しない項目は後で設定可能です)
続いて投票の詳細を決定できる画面になります。
ここでは何も設定せず「Skip」をクリック。
続いてStrategyの設定です。
Networkに「Ethereum Mainnet」、Token standardに「ERC-721」、Token contract
に設定したいNFTのコントラクトアドレス(ここではpNounsNFT)を設定して「次へ」をクリック。
なお、トークンはERC-721の他にERC-20、ERC-1155も設定可能です。
続いてスペースのAdminとAuthorに設定するウォレットアドレスを登録します。
Adminsは、スペースの設定を編集し、提案をモデレーとできます。
Authorは、制約なく提案を作成できる権限を保有します。
今回は自分しか使用しないので、両方とも1つのウォレットアドレスとしました。
登録完了したら「作成」をクリック。
メタマスクで「署名」をクリック。
(ガス代はかかりません)
これで提案、投票するためのスペースの作成が完了しました。
スペースの条件設定は「設定」から変更可能です。
以下に設定できる項目を貼り付けておきます。
- Thresholde:提案できるNFTの保有数を設定できます。
- 投票の遅延:提案が公開された後、投票できるようになるまでの時間
- 投票期間:提案が公開された後、投票できる期間
- Quorum:提案を可決するための投票数
- Privacy:投票形態を選択できます。
設定を変更する際は、「保存」をクリック。
メタマスクで「署名」をクリック。
(ガス代はかかりません)
これでスペースの設定は完了です。
snapshotのスペースで提案して投票する
続いて、スペースで議案を提案して、投票する流れを解説します。
まず、スペースの「新しい提案」をクリック。
提案する議題のタイトル、概要を書いて、「続行」をクリック。
続いて、投票の条件(選択肢、投票期間)を設定して「公開する」をクリック。
メタマスクで「署名」をクリック。
議題が公開され、期間内に投票することになります。
投票で「賛成」あるいは「反対」を選択した後に「投票する」をクリック。
続いて「確定する」をクリック。
(投票力として、pNounsNFTの枚数10が表示されています)
これで投票が完了です。
投票期間が終了すると、投票結果が表示されます。
この時は自分だけの投票なので、賛成が10pNounsとなって可決されました。
なお、スペースの「設定」で、スペースのバリデーションにおける「Threshold」の数を変えると、提案できるNFTの枚数を規定することができます。
(11に設定すると、11枚のpNounsNFTを持っていないと提案できない等)
投票権の委任(Delegate)という機能も用意されています。
投票権の委任は、アカウント名をクリックして「Delegate」を選択します。
続いて、委任するウォレットアドレスを入力して「確定する」をクリックする流れとなります。
まとめ
この記事では、「snapshot」でスペースを作成して、DAOの提案、投票をする場を作る方法を解説しました。
これからDAOを運営する人にとって参考になればと思います。
この記事で紹介したスペースは、記事を書いた後にpNouns NFTを5体以上で提案できる仕様にしています。
pNouns NFTホルダーの方で提案のテストをしてみたいという方は、こちらからアクセスしてみてください。
→https://snapshot.org/#/earl-grey.eth
なお、snapshotは現在、オフチェーンで運用されていますが、オンチェーン版「SnapshotX」の開発が進んでいるようです。
snapshotを使ってDAOってください!