Upgrade to Pro — share decks privately, control downloads, hide ads and more …

しっかり学ぶICOのベストプラックティス

syrohei
December 11, 2017

 しっかり学ぶICOのベストプラックティス

ICOを行うためにどのようなコードを書けば良いのか?心がけるポイントと存在するリスクについて解説します。 オープンソースフレームワークであるtruffleとRICOフレームワークで公平なICOを実現する方法などを合わせて解説しています。合わせてSlackコミュニティもはじめました。https://dri-slack.now.sh/

syrohei

December 11, 2017
Tweet

More Decks by syrohei

Other Decks in Technology

Transcript

  1. 1. ICOを実現するには - ICO(イニシャルコインオファーリング)とは - ICOを技術的な視点から考えてみると - ICOを実現する時に困るのは… - 現時点での、ICOのベストプラクティスとは

    2. RICOとTruffleフレームワークによるベストでナイスなICO開発 - Ethereumの大まかな仕組み - Ethereumの独自のウェークポイント - Solidity言語による開発の心得 - コントラクトアーキテクチャ - TruffleではじめるナイスなテストとCI - RICOによるProof of Donationによる寄付証明とイベントハンドリング - RICOとTruffle使ってスムーズなICOを実現する 3. まとめ
  2. / スムーズなICOを実現するための準備をする - 技術的にメンテナンスしやすいアプリケーション構成 - なりすましや、フィッシング詐欺に適切な対処が可能 / スマートコントラクトのメリットを強力に活用 - Trusted(信用可能な)アプリケーションで低コストで稼働

    - 開発コミュニティとのコミュニケーションが円滑にできる / コードの信頼性を維持する - 絶対にバグを産まないコードを心がける 現時点での、ICOのベストプラクティスとは
  3. - Ethereumのトランザクションは、ABI encodeされたシーケンスデータを含め ることができる - EVMは入力としてABI encoded dataを持ち、Solidity、Viper、Serpentなど 各々のコンパイラでビルドされたアプリケーションを 実行する

    - EVMの実行結果はアドレスごとにmerkle-patricia-treeに含まれ、ルートの 状態ハッシュのみがEthereumのblockに書き込まれる - Ethereumの最新Blockには全てのアカウントの状態のハッシュのみが保存 され、BitcoinのようなUTXOは存在しない Ethereumの大まかな仕組み
  4. - Ethereumのtxは一つのtxで一つのmethodしか実行できない - スケールさせるために、設計を考え直すこともしばしば - スマートコントラクトの無限ループが発生しやすい - 再帰的呼び出しに弱い (The DAO

    の 攻撃) - 設計が複雑になりやすい - アプリケーションの挙動を正確に把握しないと非効率で ガスが無駄になりやすい どう向き合うか? ⇨ ベストなコントラクトアーキテクチャを手探りで探すしかない   (資金を失うリスクがあってもトライアンドエラーを重ねる) Ethereum独自のウェークポイント
  5. - RICOは、DRIが開発している ”ICOに最適化されたオープンソース フレームワーク” - いわゆる”DecentralizedなICO”実現の手法を提案している - RICOの基本的なアーキテクチャは、Proof of Donation

    (寄付の証明) をトリガーとして実行する”スマートPoD”と呼ばれる マイクロコントラクトサービス - 様々なPoDを作成でき、ICOのみならず汎用的に活用できる RICOにおける、Proof of Donationによる寄付証明と イベントハンドリング
  6. 3. まとめ - 結局ICOコントラクトどう開発すればいいのか? - Truffleを使えばだいたいカバレッジできる、RICOは開発コストをかなり 下げてくれる - セキュリティの担保とICOのユーザビリティは両立可能 -

    多くのプロジェクトが困っているのは法的制約やコミュニケーションの複雑 性 (telegram, slack, rocketchat の使い方が大変) - ICOコントラクトがしっかりしていれば、チームの代わりに コントラクトが信用を担保してくれる
  7. 参考文献 - Solidityの仕様など  - https://solidity.readthedocs.io/en/latest/ - EVMのスタック、メモリロード、ストレージについて - https://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html#storage-memory- and-the-stack

    - ERC-642 Fairer token crowdsale with proportional token allocation - https://github.com/ethereum/EIPs/issues/642 - RICOのgithub - https://github.com/DRI-network/RICO - Smart-contract-best-practices-solidity - https://lightrains.com/blogs/smart-contract-best-practices-solidity - ABI-encodingのシーケンス仕様 - http://solidity.readthedocs.io/en/latest/abi-spec.html?highlight=abi#formal-specification -of-the-encoding