Snapshotで投票所をつくってみたい
こちらの記事 にて、Snapshotがどんなものなのか、実際に使用されたユースケースについても知ることができたと思います。
ここからは、「1つのNFT」=「1票」
として投票ができる仕組みの作り方について、私が試行錯誤しながら理解できた「Snapshotの使い方」を紹介させていただきます。
NFTを持っていると投票できる仕組みの作り方
ここでは、私が実際に作成した投票所を元に、どんな風に実装したのかを説明しています。
準備するもの
- 独自コントラクトで発行したNFT
- ENSネーム(~.eth のドメイン)
OpenSeaで発行されたNFTは、共有コントラクトであるため、使うことができません。Snapshotで参照するNFTは、独自コントラクトでなければならないため、Thirdweb
Chocofactory
Manifold
などを使って発行しましょう。
また投票所の開設には、ENSネーム(〜.eth のドメイン)が必要となります。
ここでは、「透明化した部長」でお馴染みの独自コントラクトでMINTしたコレクション「Shocking DONUTS」 を用いて、投票所を作成しています。
目標とするのは、透明になった部長1体 = 1票
として機能する投票所です。
【 STEP 1 】スペースを作成する
「スペースを作成する」を選択し、紐付けを行うENSドメインを選びます。
このとき、「ETHネットワーク」でメタマスクと接続されるのですが、ENSドメインとの紐付けに少量のガス代が必要となります。(ガス代の目安:Gas Price Meter の値が「26」で、およそ500円〜1,000円程度でした)
【 STEP 2 】プロフィールを編集する(基本情報の入力)
続いて、スペース作成画面の「プロフィール」の入力を行います。アバターや名前、紹介文などを記載していきます。
【 STEP 3 】プロフィールを編集する(コントラクトの指定)
続いて、投票権として機能するNFTの情報を入力していきます。
:::note info
設定方法
-Network:NFTのネットワークと同じものを選びます。今回は Polygon-Chain
でMINTしたNFTを用いています。
-Symbol:コントラクトを作成した時に指定した、Symbol
を入力します。
※今回使用する「透明部長」のコントラクトでは、Donuts
というSymbolを設定しています。
-Strategies:どんなロジックで投票を実装するのか、指定ができます。
※ここでは erc721
を選択しています。
-Contract address:投票に使用するNFTコレクションのコントラクトアドレスを入力します。
※OpenSea上の Details
から確認することも可能です。
:::
【 STEP 4 】ウォレットアドレスと投票規則の入力
ここまできたら、あと少し!
管理者となるウォレット情報、投票のルールに関する情報を入力していきます。
:::note info
設定方法
-Admins:スペースと提案の管理を行うアドレスを指定します。
※自分のメインウォレットを指定しました。
-Authors:提案を作ることができるアドレスを指定します。
※自分のメインウォレットを指定しました。
-提案のバリデーション:提案を作ることができる条件を設定できます。提案は運営者から行う…としたいので 作成者のみ提案を提出可能
にチェックを入れました。
-投票:Quorum
にて、提案が可決されるための最低投票数を設定できます。 投票結果を採択するための条件として、最低でも10票分の投票権の行使が必要
という場合には、10
を入力します。
:::
ここまでの流れで、設定は完了です。これで、「透明な部長」のNFTを持っている人だけが、投票できる仕組みを作ることができました。
※私が実際に作成した投票所のリンクを貼っておきます。
2023.1 部長に取り入れるアイテム/概念の公募についての投票