communityはこちら => http://community.dri.network
DAICOを実装してみた2018/2/2千賀 優作 Yusaku SengaDRI代表[email protected] @syrohei
View Slide
自己紹介・DRI (分散技術総合研究所) について2ミッションブロックチェーンを始めとする分散技術によって、あらゆる取引と価値保存をスマートにするRICOオープンソースとして開発しているDecentralized ICOフレームワークDRIは、トークンエコノミーの基盤となる技術を作る、DAO志向のエンジニア集団です
DAICOってなに?参考: https://ethresear.ch/t/explanation-of-daicos/465DAICO(本人曰く ディ・エィ・アイシーオー)は、1月6日にVitalikが提案した、分散型自立組織(DAO) と Initial Coin Offering (ICO)の両方の機能を持つICO手法- Ethereum Research forumで発表された- forumの中でダントツでView数が多く、コメントも活発にやり取りされている- “Better ICOs” がホットトピックに3
投資家・開発チーム双方に、プロジェクトを前進させる責任を持たせる開発チームが毎月利用できる資金量を、投票でコントロールする- 結果を出している良いチームなら、支援者は毎月利用できる資金量を増やして応援する- 開発をバックれたチームからは、資金を返金させる結果的に、詐欺的なICOを実施できない環境を作り出すDAICOの目的4
DAICOは主に2つのことができる- チームが毎月引き出せる資金量をコントロール- 調達したETHは、トークホールダーの投票で引き出し可能量tap(wei/sec)を上げることが可能- プロジェクトオーナーはtapを自主的に下げることが可能- 投票により、プロジェクトの解散・残った資金の回収が可能 (withdraw modeに移行)DAICOの提案仕様参考: https://gist.github.com/takashi/738779681e31c92cabbcd3c6ba87a7aa5
あらゆる投票には、様々な攻撃が予想される。- もし攻撃によってtapが上昇したら?- 良識あるチームなら、tapを下げて元に戻すはずだし、必要な分しか引き出さないはず。- 開発者が開発を停止・資金を濫用しだしたら?- 投票者はtapを上昇させない、もしくは投票によってプロジェクトを解散させる- 51%攻撃によってプロジェクトが解散されたら?- もう一度DAICOコントラクトを作り直せばいいDAICOはセキュリティリスクを最小化するアイデア参考: https://gist.github.com/takashi/738779681e31c92cabbcd3c6ba87a7aa6
コンセプトは非常に面白い! しかし懸念も...- トークンホールダー達が結託すると意味がないのでは?- The DAOの時のように、期待するほど投票するインセンティブがないのでは? → (有権者の無関心問題)議論だけではどうにもならないし、僕たちはプログラマーなので、まずは実装してみよう!見た時の感想・・・7
2日後・・・・8
DAICOを実装!(たぶん世界初)RICOの機能として利用できるようにしました!(英語と日本語で解説記事を出しました)参考: https://blog.dri.network/the-first-implementation-of-daico-4b90d96684719
資金を集めるコントラクトは、RICOそのままの機能DAICOはまず、寄付を募るContribution modeからスタートする- 資金を集めるための方法一覧として説明されているもの- キャップ付きセール- キャップ無しセール- ダッチオークション- KYC付きセール- etc...RICOはこれらをモジュールとして選択・カスタマイズして組み込める10
RICOを使っているからこそ簡単にできることRICOは Proof of Donation (PoD)という設計を提案・採用寄付をトリガーとし、複数のコントラクトを数珠つなぎに利用できる。モジュールはPoD Moduleと呼ばれ、柔軟にカスタマイズ可能。例)11ETH SimpleICO DAICO MultisigWalletETH DutchAuction DAICO MultisigWalletETH[Pre-Sale]SimpleICO[Public-Sale]DutchAuctionDAICO MultisigWallet
- 投票モデルは全て独自実装 - 投票のための最低保持トークン量を規定複数アドレスによる投票には、大量のトークンロックが必要- Proof of Stakeに近い意思決定モデルロックしたトークンの量によって実行権利が与えられるDAICOの投票機能 実装で意識したこと12プロポーザルの送信 Tokenを一定量ロックして投票投票の方法 ↑ と同等の方法議決権の数 格差是正のため、1アドレス当たり1票可決票数の閾値 計算式: 賛成票 - 反対票 - 不投票/6 > 0
実装して見えた現状のDAICOの問題点- ICOのトークン市場価格がICO時の取得価格を割ると、コミュニティは解散するインセンティブが大きくなる (ETHを取得価格でコントラクトから引き出す)- tapを引き上げるコミュニティ投票のインセンティブがあまりない。- Proposalを出し続けて他の人が提出できないように妨害できる (DDoSアタック)- アドレスを増やして攻撃しようとする行為(シビルアタック)- 今回の実装では投票のための最低保持トークン量を規定13
実装した結論DAICOはまだ議論され始めたばかりなので、今のタイミングでの実戦投入はお勧めできない。とはいえ、改良を続ければ、間違いなくこれまでよりもフェアなICOが実現できる。また、DAICOを採用したICOプロジェクトはコミュニティーと密接に関わり合うことができ、良い影響を受けるようになる14
本日の会で共有したい、DAICOの改良アイデア- トークンのロック期間を投票時だけでなく、一定期間強制する (TendermintやCasper-FFGに近いアプローチ)- Proposalを出すアドレスに手数料を支払わせる (DDoS攻撃の防衛)- Slasherなどの懲罰モデルを作る同一経路からのデポジットアドレスに対し、複数投票を禁止する。違反すると没収する。 (投票インセンティブの強化とシビルアタックの防衛)- AddressにKYCを設ける(Fungibilityが損なわれる?)15
まとめDAICOは、コミュニティドリブンによる健全なICOの第一歩- 業界からこういったものが提案され続けることで、ICOをバブルで終わらせるのでなく、本当に世界を変える仕組みにするのだと思う- とは言え、まだまだ改善が必要で、今すぐ役立つものではない- 今回実装した“トークンによる投票モデル”はシビルアタックに弱く、具体的な対策方法はまだ検討が必要- RICOを使えば、DAICOやその他のICO手法を簡単に実装でき、組み合わせることができる!16
17スマートコントラクトに興味がある方、RICOやDAICOのコードで勉強しながらこの熱いトピックとOSSにコミットしませんか?一緒にICOの未来を作りましょう!
18community.dri.networkgithub.com/DRI-network/RICODRI.networkCome hang out :)Branch: daico-podChannel: #rico_ja
参考文献- Solidityの仕様など - https://solidity.readthedocs.io/en/latest/- Designing the “Fair ICO” - https://docs.google.com/document/d/1hnMjwaaYUZGch-rprvAtqay9e_ivePCpezBY5ywrrKE/edit?usp=sharing- ERC-642 Fairer token crowdsale with proportional token allocation- https://github.com/ethereum/EIPs/issues/642- RICOのgithub (DAICO branch)- https://github.com/DRI-network/RICO/tree/daico-pod- DAICOの最初の実装を公開しました- https://blog.dri.network/the-first-implementation-of-daico-ja-8c91918f16719