👓

⌐◨-◨ pNouns Voting POAP ⌐◨-◨

2023/07/03に公開

pNounsは、保持しているNoun553と556を使い、NounsDAOのオンチェーンプロポーザルに投票しています。
そしてpNounsで賛成/反対/棄権のどの票を投ずるかは、web3フレンドリーな投票システムである snapshot.orgを使用しています。

このsnapshot投票ですが、初回(2023/1/4開始)は、何と97アドレスからの投票がありましたが、直近の投票では5アドレスにも達しないことが多く、ちょっと寂しい状況となっています。

何とかして再び盛り上げることができないかと考え、投票ごとに魅力的なPOAPを発行することを思いつきました。

開発も良い感じに仕上がってきたので、今回は⌐◨-◨ pNouns Voting POAP ⌐◨-◨のしくみを解説していきます。

POAP入手方法

pNounsのsnapshot投票に参加することでPOAPを取得する権限を得られます。
投票は原則21:00に締め切りです。この後、毎日21:30頃に、締切された投票から投票アドレスを抽出してPOAPを自動配布します。
POAPを取得するための特別な操作及びガス代は準備する必要がありません。POAPシステムから自動で対象アドレスへPOAPがミントされます。

POAPイメージ


POAPのイメージは、pNounsオハコのフルオンチェーンジェネラティブで1体1体異なるものを生成します。
メインとなるNounは、NounsDAO本家のパーツを使用しますが、その組み合わせは本家にも存在しない独自の組み合わせです。その数なんと約20万通りもあるため、基本的に被ることはありません。(pNouns Voting POAP専用のNounsTokenを作成します)

そして、周りにはpNounsの保有する、Noun553またはNoun556のいずれかが飛び交います(背景色もそれぞれのイメージカラーになります)。Noun553またはNoun556の数は、snapshotでの投票パワーとリンクしています。つまり、pNounsNFTを多く保有すればするほど、POAPイメージが賑やかになっていきます。

イメージ下部には、どの投票に参加したのかがわかるように、プロポーザルのタイトルを印字します。このフォントは、pNounsNFTの発行に合わせて ちゃのはさんがSVGイメージを作成し、これを中島さんがブロックチェーンに刻み込んだもので、当時より提唱されていたコンポーザビリティ(構成可能性)を利用させてもらいました。

NounsTokenご購入のお願い

テストネットでの試算ですが、1回の投票につき、POAPを参加アドレスへ配布するために、0.*MATICから数MATIC程度のガス代がかかってきます。今は1MATICが100円程度なので、数十円〜数百円。6月で20件ぐらいのプロポーザルに対して内部投票したので、これを元に計算すると数百円〜数千円のガス代が毎月必要になってきます。

これを賄うために、POAPのメインとなるNoun単体のNFTを販売したいと思います。

この画像の左側がPOAP、右側がPOAPの元となったNounsTokenです。上でも書きましたが、POAPでNoun本体の画像を使用したいため、POAP専用のNounsTokenも同時にミントします。
このNounsTokenを数百円(0.002ETH程度)で販売したいと思います。

POAPと同じ個体をペアで保有していただいても良いですし、お気に入りのヘッドのNounを見つけてご購入いただいても良いと思います。NFTのコレクション名は 「Proof of Contribute to the pNouns」とし、このシステムを支えていただいた証として保有いただけます。

開発状況

pNouns Voting POAPのスマートコントラクト、snapshot.orgから投票結果を取得してスマコンのミント関数を呼び出すスクリプトはほぼ完成し、残りは配布した結果(配布数、ガス代、残金など)をdiscordチャンネルに通知する機能と、NounsTokenをOpenseaへリストする機能を開発中です。
このまま順調にいけば7月中旬にはPolygonメインネットでの配布を開始できる見込みです。

POAPは、過去のプロポーザルから遡って配布する予定のため、是非、今上がっているプロポーザルから投票して、一つでも多くのPOAPを獲得するよう準備しておいていただければと思います。


コントラクト(おまけ)

最後に pNouns Voting POAPを構成する主なコントラクトを説明して終わりとします。
開発者向けの内容のため、興味ない方は飛ばしてください。

pNounsPoapToken

pNouns Voting POAPの本体コントラクトです。
新しいトークンをミントするタイミングで、SnapshotStoreにSnapshotの情報(タイトル、賛成/反対/棄権の数、開始、終了など)を書き込むのと、NounsTokenに新しいトークンを発行する命令を発行します。
Openseaなどでトークンの画像を表示するタイミングでpNounsProvider3を呼び出し、都度画像データを生成します。
https://github.com/EibaKatsu/pNounsGenerative/blob/main/contract/contracts/PNounsPoapToken.sol

SnapshotStore

Snapshotの情報をブロックチェーンに保存します。
pNounsPoapTokenのトークン番号とSnapshotの各プロポーザルの対応も管理します。
https://github.com/EibaKatsu/pNounsGenerative/blob/main/contract/contracts/imageParts/svgstore/SnapshotStore.sol

NounsToken

メインとなるNounのTokenでNounsDAO本体のコントラクトを流用します。POAPはガス代の安いPolygonで発行しますが、NounsDAOのコントラクトはEthereumにしか存在しなかったため、POAPのメイン画像を取得するためのNounsTokenをPolygonに配備することにしました。
https://github.com/EibaKatsu/pNounsGenerative/blob/main/contract/contracts/external/nouns/NounsToken.sol

pNounsProvider3

フルオンチェーンジェネラティブの画像を生成するコントラクトです。
トークンIDをキーにSnapshotStoreからSnapshot情報を、NounsTokenからNoun画像を呼び出し、トークンごとに異なる画像を生成します。
https://github.com/EibaKatsu/pNounsGenerative/blob/main/contract/contracts/providers/PNounsProvider3.sol

以上です。最後までお読みいただきありがとうございました。

Discussion