ワイ「スタートアップをDAOでやったらめっちゃ儲かるんちゃうか！？」

## 前書き

ワイ「DAO（ダオ）っていう新しい組織の形があるんかいな。」
ワイ「前澤友作さんの立ち上げたDAOに**15万人**が集まったとも聞くし」
ワイ「スタートアップをDAOでやったら前澤さんみたいに死ぬほど儲かるんちゃうか？！」

### 想定読者

- DAOを作りたい人
- DAOを知りたい人
- DAO知らんし作りたくもない人も

### 今回説明すること

- DAOで実現したい世界観 (**ワイ記法で書きました**)
- どんなものが作れるのか (**図あり**)
- どうやって作るのか (**作りたいエンジニア向け**)

## どういう世界観を作りたいのか？
僕がDAOで作りたいスタートアップの世界観を**3つ**、ワイ記法[^1]で記載します。


### トラストレスな組織

> ワイ「すごい起業アイディアを思いついたで！うまくいけば100兆円企業や！」
> ワイ「無職やめ太郎さんを採用しよう！」
ワイ「やめ太郎さん、起業しようと思ってるんやけどエンジニアやらへん？**儲かったら還元するで**！」
やめ太郎さん「ええ・・・」
> 
> やめ太郎さん(まあ確かに事業アイディアはすごくいいと思うけど・・・)
やめ太郎さん(**儲かったら還元する**っていうけどほんまかいな・・・)
やめ太郎さん(うまくいったとしても会社のお金持ち逃げするかもしれへんしな・・・)
やめ太郎さん(海外に会社作るらしいから持ち逃げされたらほぼ泣き寝入りや・・・)
> 
> やめ太郎さん「(信用できひんし)やめときますわ」
> 
> ワイ「給料とは別で**トークン**も割り当てるで！」
> ワイ「この**スマートコントラクト**みてや。トークンを持っていればいつでもこの**トレジャリー**っていう会社の金庫から資金と交換できるコードになってるやろ？」
> ワイ「毎月会社の利益の一部をこのトレジャリーにプールしていくから、**儲かったらトークンの価値が上がる**で」
> 
> やめ太郎さん(確かにスマートコントラクトにコードでそう書いとるな・・・)
> やめ太郎さん(トレジャリーのお金は原理的に**社長でも引き出すことができない**から持ち逃げされる心配もないし)
> やめ太郎さん(ブロックチェーンにデプロイした**スマートコントラクトは変更できない**からこのルールは変わることがない)
> やめ太郎さん(この人は信頼できないけど**スマートコントラクトは信頼できる**な)
>
> やめ太郎さん「よし分かった！ええで！それで給料の方はなんぼですの？」
> ワイ「年棒で200円や！」
> やめ太郎さん「**やめさしてもらいますわ！**」

### パーミッションレスな組織

> ワイ「なんとかやめ太郎さんを採用してプロダクトができてきたけど、これを世に広めるには人が足りひんな・・・」
> ワイ「かといって日本政策金融公庫と消費者金融に借りてなんとか集めた500万円じゃ、人は雇えへん・・・」
> ワイ「せや！ **トークンを無料でばら撒いて興味持ってくれる人を集めたろ**！」
> 
> ワイ(Twitter)「こんな事業やろうと思っててプロダクトも作ってるよ〜！ Discord入ってくれたらタダでトークンあげるで！」
> 
> ワラワラ・・・
> ワイ(たくさん人が集まったな・・・)
> ワイ(でもなぜかみんな大阪人や・・・)
> ワイ(**大阪人はみんな無料が好き**ってことやな・・・)
> 
> Aさん「試しに使ってみて**バグ見つけといた**で！」
> ワイ「助かるわ！ 100トークンあげるわ！」
> Bさん「ここ使いにくかったから勝手に**プルリクエスト作成した**で！」
> ワイ「すごい！ 1000トークンあげる！」
> Cさん「UIが地味やな。**全部トラ柄にしたらええんちゃう**？」
> ワイ「フィードバック感謝やで！」
> 
> ワイ「スタートアップとしては**考えられない人数がプロジェクトに参加してくれて**感謝やな」
> 
> Cさん(トラ柄に変えへんのかい。)
> Cさん(このプロジェクトに未来はないからさっさとトークンをお金に変えたろ。)

### 公平な組織

> やめ太郎さん「このプロジェクトも成長してコアメンバーも増えたなぁ」
> やめ太郎さん「ワイの給与は年棒200円のままやけど、初期からいるからトークンたくさん持ってて多少は報われとるな。」
> やめ太郎さん「でも年棒２００円は納得いかへん」
> やめ太郎さん「給与を上げるには上司である社長に評価されないとあかんからなあ・・・」
> やめ太郎さん「しかも社長は株も90%以上握っとるし、不公平や。」
> やめ太郎さん「やっぱり人は信用できひんな。」
> 
> やめ太郎さん「その点、DAOのスマートコントラクトは公平や」
> やめ太郎さん「毎月バグを発見した先着100名に100トークンもらえるから**ルールが明確**やし」
> やめ太郎さん「毎月誰にどれだけトークンを割り当てるかもみんなで**貢献度投票で決めるから公平**やし」
> やめ太郎さん「誰かがトークンを独占する必要がなく、貢献に応じて公平に分配されとるな」
> 
> やめ太郎さん「あ、社長」
> ワイ「お、やめ太郎さん。がんばってますか？」
> やめ太郎さん「頑張っとるで！ それにしても社長今日もかっこいいですね」
> ワイ「/// 褒めても何もでえへんけど今日は特別に給料２倍にしたるわ！」
> やめ太郎さん(媚びを売ったら給料上がるんかいな・・・)
>
> やめ太郎さん(**スマートコントラクトには媚びを売らなくてもいいから楽**やな・・・)

### 実現したい世界観をまとめると
ワイ記法で以下の3つのキーワードで実現したいことを説明しました。

* トラストレス
* パーミンションレス
* 公平

信頼できる管理者がいなくても、ミッション実現に向かってメンバーが自ら**自律的に価値提供ができる仕組み**があって、コアメンバー以外の人々もやりたいと思えば**パーミッションレスに関与**することができ、そしてその成果に対して**公平にトークン報酬**が与えられる。
この仕組みをブロックチェーンの技術によって人を介在させずに、**スマートコントラクトがコミュニティの中心にいる**、そういうDAOを作りたいと思っています。
そんなDAOによって**住む場所、年齢、性別などの条件に関わらず、やりたいこと、面白いことに関わるチャンス**が生まれると思っています。

## こんなものが作れるよ
![Startup DAO説明資料.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/c492adf1-d42a-cc78-be14-ceba04353f91.png)

DAOは「**独自トークン**」「**トレジャリー**」「**ガバナンス(投票)**」の３つが構成要素としてよく使われます。
DAOのパターンはさまざまあり、それぞれのコミュニティでそれぞれの要件に合わせてスマートコントラクトが作られています。
今回の記事では以下の4つを簡単に図で説明しようと思います。

1. シンプルな構成
2. NounsDAOにおける実例
3. 僕たちが作ったDAOの実例
4. 利益を生みにくいプロジェクトでも使えそうな構成 

### シンプルな構成
![Startup DAO説明資料 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/866d08de-0265-2911-050e-7f7917a47239.png)

プロジェクトの初期段階では**スピード感と自由度の高い運営**が望まれます。
運営に**強い権限のロールを付与**し、素早い変化ができます。
一方で、強い権限を持つ運営を信頼する必要があり、完全なトラストレストは呼べず、**人による支配**が残ります。
プロジェクトが完全に安定化したタイミングで、**運営は権限を放棄する**ことが可能のため、**段階的にDAO化させていく方針**を取ります。

### NounsDAOにおける実例
![Startup DAO説明資料 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/d7274899-1ed4-3519-fe61-6c1c7abba625.png)

**真のDAO**と評されるNounsDAOは、人による支配を無くし、スマートコントラクトで成り立つ構成で運営されています。[^2]
そして2022年8月現在、**60億円相当のイーサリアム**がトレジャリーに存在し、下記のような**提案が100以上**も出され、実行に移されています。

![スクリーンショット 2022-08-07 17.12.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/7f6e4a1c-1182-ed40-2bac-488785dad0f6.png)
Nounsのアニメを作るから120ETH(2400万円相当)を使わせてください、という提案。残念ながら却下されています。

### 僕たちが作ったDAOの実例
![Startup DAO説明資料 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/f70f56a6-fb7e-6e03-19d1-5de2463e7730.png)

僕たちが運営しているEnglister DAOでは、毎スプリント貢献度投票を行っており、その**集計結果でトークンの割り当て**を決定しています。
似たようなことをやっているプロジェクトを見つけられなかったため、１から自分たちで貢献度投票のスマートコントラクトを書きました。 [^3]
これにより、運営はトークンの分配権限を持つ必要がなくなりました。

### 利益を生みにくいプロジェクトで使えそうな構成 
![Startup DAO説明資料 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/8fca9f8f-cc08-f0dc-7bfc-8bb671f514de.png)

利益を生みにくいが**公共性が高く必要性のあるプロジェクトもDAOを構成することは理論上可能**なのではないかと思っています。
上記のようにトレジャリーを公開し、クラウドファンディングで寄付を募れるようにすることで、共感してくれた人や応援したい人たちからの援助が得られる可能性があります。
寄付を原資に貢献してくれた人たちに価値のあるトークンを配ることが可能です。

## どうやって作るのか？
エンジニアとしてはこれを**どうやって作るのか**というところに興味があると思います。
本記事ではイーサリアムネットワーク上に構築することを前提として、言語・開発環境・フレームワークについて記載します。

### 言語
プログラミング言語としては**Solidity**を利用してスマートコントラクトを記述します。
言語仕様を楽しみながら学ぶにはCryptoZombie[^4]がおすすめです。

### 開発環境
Hardhat[^5]を使うことで、ローカル実行・単体テスト・デプロイが一貫して行うことができます。

### フレームワーク
OpenZeppelin[^6]というモジュラーシステムがあります。
例えばERC20の独自トークンを発行したい場合に、全てを自前で実装するのではなく、OpenZeppelinのコードを継承し、必要に応じて関数をoverrideして独自要件を実装します。
スマートコントラクトは**なるべく自前で実装する量は減らすべき**です。なぜならコードに脆弱性があるままデプロイしてしまうと、そこを突かれて**トレジャリーの資産が全て流出してしまう**などの大事故が起こってしまうからです。

### テスト環境
イーサリアムのメインネットにデプロイすると、基本的にコントラクトのコードを変更できなくなります。
また、メインネットにデプロイされたスマートコントラクトを動かすには、**ガス代と呼ばれるお金**が必要になります。
そこでテスト環境のネットワークにデプロイして動かしたいとなるでしょう。テストネットでは**ガス代は不要**(正確にはガス代の原資となるイーサリアムが無料でもらえる)です。
**goerliテストネット**[^7]などが存在します。

### 相談する人
こういうことを実現したいけどブロックチェーンで実現できるのか？
Solidityの言語仕様が厄介でわからん！
など、実際にDAOをブロックチェーンで作ろうとすると困りごとがたくさん出てくると思います。
そういう時に相談する人が欲しいですよね。
そのために私が存在します。TwitterのDM[^8]もしくはEnglister DAOのDiscord[^9]でいつでも質問や相談をお待ちしております。

## 最後に： DAOはあくまでも組織の形

ワイ 「あかん、スタートアップをDAOでやってみたけど、潰れてもうた・・・」
ワイ 「自分の履いてるパンツの柄をNFTにする事業で100兆円企業にするのはさすがに無理やったか・・・」
ワイ 「どれだけ素晴らしいDAOを作っても、**そのプロジェクトから生み出すものに価値がなければ持続性はない**んやな」
ワイ 「失敗したけど勉強になったしよかった！」

やめ太郎さん 「年棒200円で働かされて、持ってたトークン価値も0になって、散々やったわ！」

**〜おしまい〜**


[^1]: やめ太郎さんリスペクト。[ワイ記法でちょっとした要件定義をしてみた話 - Qiita](https://qiita.com/Yametaro/items/c3a981b55532db779466)
[^2]: 正確にはまだ運営に強い権限があります。
[^3]: [自分たちで書いた貢献度投票のスマートコントラクト](https://github.com/KitaharaMugiro/englisterdao/blob/main/contracts/ContributionPoll.sol)
[^4]: [Solidityが学べるクリプトゾンビ](https://cryptozombies.io/jp)
[^5]: [開発環境のHardhat](https://hardhat.org/)
[^6]: [フレームワークのOpenZeppelin](https://www.openzeppelin.com/)
[^7]: [テストネットのgoerli](https://goerli.net/)
[^8]: [私のTwitter](https://twitter.com/yuno_miyako2)
[^9]: [Englister DAOのDiscord](https://discord.com/invite/rAKVpKjZ8c)