Slide 1

Slide 1 text

DAICOを実装してみた 2018/2/2 千賀 優作 Yusaku Senga DRI代表 [email protected]   @syrohei

Slide 2

Slide 2 text

自己紹介・DRI (分散技術総合研究所) について 2 ミッション ブロックチェーンを始めとする 分散技術によって、あらゆる取引と 価値保存をスマートにする RICO オープンソースとして開発している Decentralized ICOフレームワーク DRIは、トークンエコノミーの基盤となる技術を作る、DAO志向のエンジニア集団です

Slide 3

Slide 3 text

DAICOってなに? 参考: https://ethresear.ch/t/explanation-of-daicos/465 DAICO(本人曰く ディ・エィ・アイシーオー)は、1月6日にVitalikが提案した、分散型自立 組織(DAO) と Initial Coin Offering (ICO)の両方の機能を持つICO手法 - Ethereum Research forumで発表された - forumの中でダントツでView数が多く、 コメントも活発にやり取りされている - “Better ICOs” がホットトピックに 3

Slide 4

Slide 4 text

投資家・開発チーム双方に、プロジェクトを前進させる責任を持たせる 開発チームが毎月利用できる資金量を、投票でコントロールする - 結果を出している良いチームなら、支援者は毎月利用できる資金量を増や して応援する - 開発をバックれたチームからは、資金を返金させる 結果的に、詐欺的なICOを実施できない環境を作り出す DAICOの目的 4

Slide 5

Slide 5 text

DAICOは主に2つのことができる - チームが毎月引き出せる資金量をコントロール - 調達したETHは、トークホールダーの投票で引き出し可能量 tap(wei/sec)を上げることが可能 - プロジェクトオーナーはtapを自主的に下げることが可能 - 投票により、プロジェクトの解散・残った資金の回収が可能   (withdraw modeに移行) DAICOの提案仕様 参考: https://gist.github.com/takashi/738779681e31c92cabbcd3c6ba87a7aa 5

Slide 6

Slide 6 text

あらゆる投票には、様々な攻撃が予想される。 - もし攻撃によってtapが上昇したら? - 良識あるチームなら、tapを下げて元に戻すはずだし、必要な分しか引 き出さないはず。 - 開発者が開発を停止・資金を濫用しだしたら? - 投票者はtapを上昇させない、もしくは投票によってプロジェクトを解散 させる - 51%攻撃によってプロジェクトが解散されたら? - もう一度DAICOコントラクトを作り直せばいい DAICOはセキュリティリスクを最小化するアイデア 参考: https://gist.github.com/takashi/738779681e31c92cabbcd3c6ba87a7aa 6

Slide 7

Slide 7 text

コンセプトは非常に面白い! しかし懸念も... - トークンホールダー達が結託すると意味がないのでは? - The DAOの時のように、期待するほど投票するインセンティブが ないのでは? → (有権者の無関心問題) 議論だけではどうにもならないし、僕たちはプログラマーなので、 まずは実装してみよう! 見た時の感想・・・ 7

Slide 8

Slide 8 text

2日後・・・・ 8

Slide 9

Slide 9 text

DAICOを実装! (たぶん世界初) RICOの機能として 利用できるようにしました! (英語と日本語で解説記事を 出しました) 参考: https://blog.dri.network/the-first-implementation-of-daico-4b90d9668471 9

Slide 10

Slide 10 text

資金を集めるコントラクトは、RICOそのままの機能 DAICOはまず、寄付を募るContribution modeからスタートする - 資金を集めるための方法一覧として説明されているもの - キャップ付きセール - キャップ無しセール - ダッチオークション - KYC付きセール - etc... RICOはこれらをモジュールとして選択・カスタマイズして組み込める 10

Slide 11

Slide 11 text

RICOを使っているからこそ簡単にできること RICOは Proof of Donation (PoD)という設計を提案・採用 寄付をトリガーとし、複数のコントラクトを数珠つなぎに利用できる。モジュール はPoD Moduleと呼ばれ、柔軟にカスタマイズ可能。 例) 11 ETH SimpleICO DAICO MultisigWallet ETH DutchAuction DAICO MultisigWallet ETH [Pre-Sale] SimpleICO [Public-Sale] DutchAuction DAICO MultisigWallet

Slide 12

Slide 12 text

- 投票モデルは全て独自実装   - 投票のための最低保持トークン量を規定 複数アドレスによる投票には、大量のトークンロックが必要 - Proof of Stakeに近い意思決定モデル ロックしたトークンの量によって実行権利が与えられる DAICOの投票機能 実装で意識したこと 12 プロポーザルの送信 Tokenを一定量ロックして投票 投票の方法 ↑ と同等の方法 議決権の数 格差是正のため、1アドレス当たり1票 可決票数の閾値 計算式: 賛成票 - 反対票 - 不投票/6 > 0

Slide 13

Slide 13 text

実装して見えた現状のDAICOの問題点 - ICOのトークン市場価格がICO時の取得価格を割ると、コミュニティは解散 するインセンティブが大きくなる   (ETHを取得価格でコントラクトから引き出す) - tapを引き上げるコミュニティ投票のインセンティブがあまりない。 - Proposalを出し続けて他の人が提出できないように妨害できる   (DDoSアタック) - アドレスを増やして攻撃しようとする行為(シビルアタック) - 今回の実装では投票のための最低保持トークン量を規定 13

Slide 14

Slide 14 text

実装した結論 DAICOはまだ議論され始めたばかりなので、今のタイミングでの実戦投入はお 勧めできない。 とはいえ、改良を続ければ、間違いなくこれまでよりもフェアなICOが実現でき る。 また、DAICOを採用したICOプロジェクトはコミュニティーと密接に 関わり合うことができ、良い影響を受けるようになる 14

Slide 15

Slide 15 text

本日の会で共有したい、DAICOの改良アイデア - トークンのロック期間を投票時だけでなく、一定期間強制する  (TendermintやCasper-FFGに近いアプローチ) - Proposalを出すアドレスに手数料を支払わせる  (DDoS攻撃の防衛) - Slasherなどの懲罰モデルを作る 同一経路からのデポジットアドレスに対し、複数投票を禁止する。違反する と没収する。  (投票インセンティブの強化とシビルアタックの防衛) - AddressにKYCを設ける(Fungibilityが損なわれる?) 15

Slide 16

Slide 16 text

まとめ DAICOは、コミュニティドリブンによる健全なICOの第一歩 - 業界からこういったものが提案され続けることで、ICOをバブルで 終わらせるのでなく、本当に世界を変える仕組みにするのだと思う - とは言え、まだまだ改善が必要で、今すぐ役立つものではない - 今回実装した“トークンによる投票モデル”はシビルアタックに弱く、具体的 な対策方法はまだ検討が必要 - RICOを使えば、DAICOやその他のICO手法を簡単に実装でき、 組み合わせることができる! 16

Slide 17

Slide 17 text

17 スマートコントラクトに興味がある方、 RICOやDAICOのコードで勉強しながら この熱いトピックとOSSにコミットしませんか? 一緒にICOの未来を作りましょう!

Slide 18

Slide 18 text

18 community.dri.network github.com/DRI-network/RICO DRI.network Come hang out :) Branch: daico-pod Channel: #rico_ja

Slide 19

Slide 19 text

参考文献 - Solidityの仕様など  - https://solidity.readthedocs.io/en/latest/ - Designing the “Fair ICO”  - https://docs.google.com/document/d/1hnMjwaaYUZGch-rprvAtqay9e_ivePCpezBY5ywrrK E/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-8c91918f167 19