NFTが投票権に！DAOには必須「投票所」の作り方

### Snapshotで投票所をつくってみたい

![snapshot_アートボード-1-1-1024x341.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/c4df17ba-dba7-9019-795b-7f20fd0ec8e3.png)


[こちらの記事](https://qiita.com/Rekt-Order/items/a78979c0b59d2aadddf6) にて、Snapshotがどんなものなのか、実際に使用されたユースケースについても知ることができたと思います。

ここからは、`「1つのNFT」＝「1票」`として投票ができる仕組みの作り方について、私が試行錯誤しながら理解できた「Snapshotの使い方」を紹介させていただきます。


****

### NFTを持っていると投票できる仕組みの作り方

ここでは、私が実際に作成した投票所を元に、どんな風に実装したのかを説明しています。

:::note info
準備するもの

- 独自コントラクトで発行したNFT
- ENSネーム（～.eth のドメイン）
:::

OpenSeaで発行されたNFTは、共有コントラクトであるため、使うことができません。Snapshotで参照するNFTは、独自コントラクトでなければならないため、`Thirdweb` `Chocofactory` `Manifold` などを使って発行しましょう。

また投票所の開設には、ENSネーム（〜.eth のドメイン）が必要となります。

ここでは、「透明化した部長」でお馴染みの独自コントラクトでMINTしたコレクション[「Shocking DONUTS」](https://opensea.io/ja/collection/transparent-wearable-donuts) を用いて、投票所を作成しています。

目標とするのは、`透明になった部長1体 ＝ 1票`  として機能する投票所です。

![Twitter告知バナー_構成図-01-768x432.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/9d2effc9-0b2d-18aa-4e2c-f155ce9e0d37.png)


### 【 STEP 1 】スペースを作成する

「スペースを作成する」を選択し、紐付けを行うENSドメインを選びます。

>このとき、「ETHネットワーク」でメタマスクと接続されるのですが、ENSドメインとの紐付けに少量のガス代が必要となります。（ガス代の目安：Gas Price Meter の値が「26」で、およそ500円〜1,000円程度でした）

![P1_アートボード-1-1024x602.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/b558c285-57d5-385c-76e0-509e54e74ef5.jpeg)

### 【 STEP 2 】プロフィールを編集する（基本情報の入力）

続いて、スペース作成画面の「プロフィール」の入力を行います。アバターや名前、紹介文などを記載していきます。


![P3_アートボード-1-1024x989.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/72bb2f0e-1e18-2789-c256-fc78595d7189.jpeg)

### 【 STEP 3 】プロフィールを編集する（コントラクトの指定）

続いて、投票権として機能するNFTの情報を入力していきます。

![P7_アートボード-1-1024x408.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/621d4391-4a83-1259-5a80-4b2594702862.jpeg)

:::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://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/4b269dd4-c59b-4f49-8e93-cd44bd2a43bd.jpeg)

:::note info
設定方法 

-Admins：スペースと提案の管理を行うアドレスを指定します。
※自分のメインウォレットを指定しました。

-Authors：提案を作ることができるアドレスを指定します。
※自分のメインウォレットを指定しました。

-提案のバリデーション：提案を作ることができる条件を設定できます。提案は運営者から行う…としたいので `作成者のみ提案を提出可能` にチェックを入れました。

-投票：`Quorum` にて、提案が可決されるための最低投票数を設定できます。 `投票結果を採択するための条件として、最低でも10票分の投票権の行使が必要` という場合には、`10` を入力します。
:::

ここまでの流れで、設定は完了です。これで、「透明な部長」のNFTを持っている人だけが、投票できる仕組みを作ることができました。


※私が実際に作成した投票所のリンクを貼っておきます。

[2023.1 部長に取り入れるアイテム／概念の公募についての投票](https://snapshot.org/#/one.miuradonuts.eth/proposal/0xf62f462de56eee612e89b82602830d94008e1150ba1fd0b60756459b30a92253)

[2023.4「新しい方針」についての投票](https://snapshot.org/#/one.miuradonuts.eth/proposal/0x431c1d1f25988706199631e7c84fb5b1483c710ef48d70c4c662a3c1b78e7b42)

この記事は、著者が運営するメディア「ぬるぺでぃあ」でも読むことができます（記事は[コチラ](https://miuradonuts.com/2023/06/18/nft-note002/)）
![](https://miuradonuts.com/wp-content/uploads/2023/06/ヘッダーエリア画像作成.png)