「snapshot」でDAOの分散型投票システムを作る方法を解説

Pocket
LINEで送る

はじめに

この記事は分散型投票システムのプラットフォーム「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ってください!

Pocket
LINEで送る

フォローする