Snapshotで投票所をつくってみたい
![snapshot_アートボード-1-1-1024x341.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/c4df17ba-dba7-9019-795b-7f20fd0ec8e3.png?w=920&ssl=1)
こちらの記事 にて、Snapshotがどんなものなのか、実際に使用されたユースケースについても知ることができたと思います。
ここからは、「1つのNFT」=「1票」
として投票ができる仕組みの作り方について、私が試行錯誤しながら理解できた「Snapshotの使い方」を紹介させていただきます。
NFTを持っていると投票できる仕組みの作り方
ここでは、私が実際に作成した投票所を元に、どんな風に実装したのかを説明しています。
準備するもの
- 独自コントラクトで発行したNFT
- ENSネーム(~.eth のドメイン)
OpenSeaで発行されたNFTは、共有コントラクトであるため、使うことができません。Snapshotで参照するNFTは、独自コントラクトでなければならないため、Thirdweb
Chocofactory
Manifold
などを使って発行しましょう。
また投票所の開設には、ENSネーム(〜.eth のドメイン)が必要となります。
ここでは、「透明化した部長」でお馴染みの独自コントラクトでMINTしたコレクション「Shocking DONUTS」 を用いて、投票所を作成しています。
目標とするのは、透明になった部長1体 = 1票
として機能する投票所です。
![Twitter告知バナー_構成図-01-768x432.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/9d2effc9-0b2d-18aa-4e2c-f155ce9e0d37.png?w=920&ssl=1)
【 STEP 1 】スペースを作成する
「スペースを作成する」を選択し、紐付けを行うENSドメインを選びます。
このとき、「ETHネットワーク」でメタマスクと接続されるのですが、ENSドメインとの紐付けに少量のガス代が必要となります。(ガス代の目安:Gas Price Meter の値が「26」で、およそ500円〜1,000円程度でした)
![P1_アートボード-1-1024x602.jpg](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/b558c285-57d5-385c-76e0-509e54e74ef5.jpeg?w=920&ssl=1)
【 STEP 2 】プロフィールを編集する(基本情報の入力)
続いて、スペース作成画面の「プロフィール」の入力を行います。アバターや名前、紹介文などを記載していきます。
![P3_アートボード-1-1024x989.jpg](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/72bb2f0e-1e18-2789-c256-fc78595d7189.jpeg?w=920&ssl=1)
【 STEP 3 】プロフィールを編集する(コントラクトの指定)
続いて、投票権として機能するNFTの情報を入力していきます。
![P7_アートボード-1-1024x408.jpg](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/621d4391-4a83-1259-5a80-4b2594702862.jpeg?w=920&ssl=1)
:::note info
設定方法
-Network:NFTのネットワークと同じものを選びます。今回は Polygon-Chain
でMINTしたNFTを用いています。
-Symbol:コントラクトを作成した時に指定した、Symbol
を入力します。
※今回使用する「透明部長」のコントラクトでは、Donuts
というSymbolを設定しています。
-Strategies:どんなロジックで投票を実装するのか、指定ができます。
※ここでは erc721
を選択しています。
-Contract address:投票に使用するNFTコレクションのコントラクトアドレスを入力します。
※OpenSea上の Details
から確認することも可能です。
:::
【 STEP 4 】ウォレットアドレスと投票規則の入力
ここまできたら、あと少し!
管理者となるウォレット情報、投票のルールに関する情報を入力していきます。
![P8_アートボード-1-768x367.jpg](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/4b269dd4-c59b-4f49-8e93-cd44bd2a43bd.jpeg?w=920&ssl=1)
:::note info
設定方法
-Admins:スペースと提案の管理を行うアドレスを指定します。
※自分のメインウォレットを指定しました。
-Authors:提案を作ることができるアドレスを指定します。
※自分のメインウォレットを指定しました。
-提案のバリデーション:提案を作ることができる条件を設定できます。提案は運営者から行う…としたいので 作成者のみ提案を提出可能
にチェックを入れました。
-投票:Quorum
にて、提案が可決されるための最低投票数を設定できます。 投票結果を採択するための条件として、最低でも10票分の投票権の行使が必要
という場合には、10
を入力します。
:::
ここまでの流れで、設定は完了です。これで、「透明な部長」のNFTを持っている人だけが、投票できる仕組みを作ることができました。
※私が実際に作成した投票所のリンクを貼っておきます。
2023.1 部長に取り入れるアイテム/概念の公募についての投票