DAppのデプロイ戦略 / DApp Deployment Strategy

F4a94c818da7c943420763ba0541d0cf?s=47 wshino
July 13, 2018

DAppのデプロイ戦略 / DApp Deployment Strategy

7/13のDApps Meetup Tokyo #1の発表資料です

F4a94c818da7c943420763ba0541d0cf?s=128

wshino

July 13, 2018
Tweet

Transcript

  1. DAppのデプロイ戦略 DApps Meetup Tokyo #1 2018.7 DMM.comラボ スマートコントラクト事業部 篠原航

  2. 本日のアジェンダ • Smart ContractのUpgrade課題 • Upgradeable Contract • Function Callの問題

  3. 自己紹介 篠原航 DMMスマートコントラクト事業 部テックリード。計算リソース の効率化、継続的デリバリや デプロイの開発を支える仕組 み作り、ウォレットの実装を担 当。最近ヨーヨーにはまってい たが上達しないのですでに飽 きた。

    https://www.amazon.co.jp/dp/4839965137/
  4. Smart ContractのUpgrade課題 Upgradeable Contract Function Callの問題 Section01 Section02 Section03

  5. Smart Contractは更新ができない • Webサービスのメリットは更新できること • 継続的デリバリ、インテグレーションができないとどうなるのか

  6. 更新ができないとこうなる • 新しい機能が実装できない • バグに対処できない • MVP(Minimum Viable Product)に使えない •

    パッケージ製品の負の属性を帯びる 誤植発見 新しいの 送ります
  7. Smart ContractのUpgrade課題 Upgradeable Contract Function Callの問題 Section01 Section02 Section03

  8. Upgradeabilityの提案と実装 • ERC897, ERC820, ERC165 ◦ なかじょーさんの資料が詳しい • ZeppelinOS •

    AragonOS https://speakerdeck.com/nakajo2011/upgradablity-smartcontract
  9. ZeppelinOS • OpenZeppelinを作成しているZeppelinが開発 • 更新できるコントラクトを実現 • 標準ライブラリの提供 • Function Callを使ったProxy

    Pattern
  10. ZeppelinOS 制限事項 • 変数を消すことはできない ◦ 継ぎ足ししかできない • コンストラクタは使えない ◦ コンストラクタはブロックチェーンに残らない

    ◦ なのでProxyからは絶対に呼べない
  11. AragonOS • Upgradeability • Modular • Proxy Pattern ◦ Base

    Contractにビジネスロジックを記述 ◦ Proxyにコントラクトへのアドレスを記述
  12. AragonOSの投票制度 • AragonはDAOを実現するためのプロジェクト • 投票によりコントラクト実行を行う手法 ◦ コントラクトへの実行は一旦プールされる(Forwarder Contract) ◦ 組織の参加者で一定期間投票する

    ◦ 投票により可決されたらコントラクトが実行される ◦ upgradeも投票制度に
  13. Smart ContractのUpgrade課題 Upgradeable Contract Function Callの問題 Section01 Section02 Section03

  14. FunctionのMethod ID • FunctionはMethod IDを持つ • Method IDはFunction Nameをハッシュ化して最初の4バイト •

    get()の場合 1. bytes4("sha3(get()")) 2. bytes4(6d4ce63caa65600744ac797760560da39ebd16e8240936b51f53 368ef9e0e01f) 3. 0x6d4ce63c
  15. Function Call • function.call((bytes4(sha3("get()")))) • 最初の4バイトが重複し意図しない動作をする可能性 • ZeppelinOSはNomic labsによってこの脆弱性が指摘されている

  16. 他の手法の提案 • Main ChainとSide Chainで構成する • 利用者が所持するステートコントラクトをMain Chainに • 更新が頻繁に行われるロジックコントラクトはSide

    Chainに Main Chain Side Chain Side Chainの参照先を Main Chainに記述。 Side Chainは交換可能に する。
  17. 他の手法の提案 • Loom Networkが提供しているDApp Chain, Zombie Chain

  18. • DMMでは様々な人材を募集しています ◦ https://dmm-corp.com/recruit/top • 遊びに来てね 最後に