pNouns⚡️投票システムの投票について考える
pNouns⚡️投票システムは、本家Nounsへ提案・投票するためのDAOシステムです。
前回システム構想を書いてみましたが、投票機能についてはガス代問題があり、あまり言及しませんでした。(投票システムはEthereum)
この記事では投票機能のあり方を考えていこうと思います。
pNounsの投票機能(案)
以下に3案とそれぞれのメリット・デメリットを上げていきますが、
- 純度の高いDAOを目指すpNounsとして外せない「DAO純度の高さ」
- 現実問題開発者のスキル・工数の限界があるため「開発のしやすさ」
- 資金が潤沢でないため「ガス代の節約」
を基準に考えていきます。
【案A】本家Nounsと同じ
本家Nounsと同じしくみを利用します。(文末の補足参照)
この案は、フルオンチェーンでDAO純度が高い上、本家Nounsから流用できる部分が多く、開発工数が(他案に比べて)低く済みます。
ただし、投票にかかるガス代は、投票者あるいはトレジャリーウォレットが支払わなければなりません。試算すると、投票1回のガス代は0.003Ether程度(20Gwei)。投票者30人で年100回投票した場合、 年間で合計9Ether必要となります(個人負担だと0.3Ether)。
【案B】オフチェーン補助システム
snapshot.orgのようなpNouns⚡️NFTを投票権とする投票システムを独自に構築します。
それならsnapshot.orgで良いのでは?という疑問が出てきますが、snapshot.orgだと、Nounsでプロポーザルが出来上がる度に運営の誰かがsnapshot.orgに登録し、また、投票結果も運営の誰かがブロックチェーンに登録しなければならず、中央に運営がいる状態から脱却できません。自動化するにはpNouns投票専用の独自システムが必要になります。
オフチェーンシステムのメリットは、投票者が投票するごとにガス代がかからないことです。(ただし、pNounsMemberによる投票が完了後、投票結果や投票者のポイントをブロックチェーンに登録する時にはガス代が必要になります)
また、独自に構築するため柔軟な設計が可能となりますが、DAO純度は低いものになります。
【案C】レイヤー2補助システム
EthereumのpNouns投票システムの補助システムとして、ガス代の低いレイヤー2(Polygon,Solanaなど)に構築します。
実行頻度の高いpNounsMemberの投票機能と、これに伴って成長するSBTをレイヤー2に配置します。
Ethereumの投票システム(A)とレイヤー2の補助システム(B)間でブリッジが必要な機能は以下です。
- プロポーザルを(A)から(B)へ登録
- 投票結果を(B)から(A)へ登録
- pNouns⚡️NFT保有数に伴う投票権を(A)から(B)へ登録
ブリッジの仕組みはオフチェーンになりますが、双方の整合性は各々のブロックチェーンに刻まれたデータから検証できるため、【案B】に比べるとDAO純度は高いと考えます。
まとめ
3案のメリット・デメリットを比較すると以下になります。
DAO純度の高さ | 開発のしやすさ | ガス代の節約 | 判断時の考慮ポイント | |
---|---|---|---|---|
【案A】本家Nounsと同じ | ◎ | ○ | × | DAO純度は高いがお金も高い |
【案B】オフチェーン補助システム | × | △ | △ | DAO純度が低い。成長するSBTにお金がかかる |
【案C】レイヤー2補助システム | ○ | △ | ○ | レイヤー2を許容するか? |
個人的には【案C】かなぁ。
皆さま、ご意見お待ちしております。
(補足)本家Nounsの投票機能
本家Nounsの投票は下図赤枠の関数 castVote と castRefundableVote で実施しています。
castVote
実施していることは、以下の通り。
- 投票対象のプロポーザルが提案中かのチェック
- 投票内容が、賛成・反対・棄権のいずれかであるかのチェック
- 投票者が投票済みでないかのチェック
- 投票者の投票ポイントをNounsTokenから取得(Nouns保持数や委譲数で計算される)
- 投票ポイントを賛成・反対・棄権のいずれかの累積数に加算
- 投票者の投票を記録(投票済み、賛成・反対・棄権のいずれか、投票ポイント)
castRefundableVote
実施内容はcastVoteと同じですが、実行した際のガス代が投票者へ送金される仕組みになっています。
過去の実績を見ると、投票1回のガス代は0.003Ether程度(20Gwei)でした。
Discussion