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

スマートコントラクトのデプロイって何だろう

Shuichi Nagao
September 28, 2018

 スマートコントラクトのデプロイって何だろう

Ethereumのコントラクトのデプロイについて見ていきます。既存のWeb開発におけるデプロイとは似ているのですがデプロイフローは異なるのでその紹介をします。

Shuichi Nagao

September 28, 2018
Tweet

More Decks by Shuichi Nagao

Other Decks in Programming

Transcript

  1. εϚʔτίϯτϥΫτ͓͞Β͍ ֓ཁ ▸ ؅ཧऀෆࡏͰࣥߦ͕ՄೳʹͳͬͨɺϓϩάϥϜԽ͞Εͨܖ໿ ͷ͜ͱ ▸ ࣗಈൢചػ͕Α͘ྫ͑ΒΕΔ ▸ 20ੈلޙ൒࣌఺ͰNick Szabo͕ఏএͨ֓͠೦

    ▸ ϒϩοΫνΣʔϯͱͷ૬ੑ͕ྑ͘ɺEthereumΛ͸͡Ίͱͨ͠ ༷ʑͳϒϩοΫνΣʔϯͰεϚʔτίϯτϥΫτͷ࣮ߦϓϥο τϑΥʔϜ͕࣮૷͞Ε͍ͯΔ ▸ ࠓճ͸EthereumʹϑΥʔΧε͠·͢ 3
  2. σϓϩΠͱ͸ τϥβΫγϣϯͷৄࡉ ▸ τϥϯβΫγϣϯʹ͸2छྨ͋Δ ▸ Message Call ▸ ίϯτϥΫτͷؔ਺࣮ߦ ▸

    ETHͷૹۚ ▸ Contract Creation ▸ ৽͍͠ίϯτϥΫτΞΧ΢ϯτͷੜ੒ σϓϩΠͷ࣮ଶ 9
  3. σϓϩΠͱ͸ CONTRACT CREATIONΛߦ͏ํ๏ EOA ৽نCA CONTRACT CREATION EOA ৽نCA CONTRACT

    CREATION MESSAGE CALL CA CA͕࣮ߦ͢ΔτϥβΫγϣϯΛ ಺෦τϥϯβΫγϣϯͱݴ͍·͢ 1 2 10
  4. ࣮ࡍʹ΍ͬͯΈΔ ͍͔ͭ͘ํ๏͸͋ΔͷͰྻڍͯ͠ΈΔʢৄࡉʣ 1. Ethereum ClientΛ࢖ͬͯEOA͔Β௚઀Contract Creation ͷτϥϯβΫγϣϯΛ࣮ߦ͢Δ ‣ ຊ֨తͳ։ൃΛ͢ΔͳΒ͜Ε ‣

    TruffleΛ࢖͏͜ͱͰCLI͔ΒσϓϩΠͰ͖Δ ‣ ෳ਺ͷίϯτϥΫτΛ޷͖ͳॱ൪ͰσϓϩΠͰ͖Δͷ Ͱ΋ͬͱ΋ॊೈੑ͕ߴ͍ 12
  5. ࣮ࡍʹ΍ͬͯΈΔ REMIXͰ΍ͬͯΈΔ৔߹ͷϑϩʔͷ֓ཁ͸ҎԼ ▸ MetaMaskΛηοτΞοϓ ▸ https://remix.ethereum.org/ ▸ ӈͷΑ͏ʹίϯτϥΫτΛ࣮૷ ▸ RemixͰCompileλϒΛ։͖ɺ


    ίϯύΠϧ͢Δʢ͜ͷ࣌Solidityͷversion ͱcompilerͷversionΛ߹ΘͤΔʣ ▸ RunλϒΛ։͖ɺDeployϘλϯΛΫϦο Ϋ pragma solidity ^0.4.25; contract Counter { uint public value = 0; event Increment(uint _value); function increment() public { value++; emit Increment(value); } } 15
  6. ࣮ࡍʹ΍ͬͯΈΔ Լ४උ ‣ https://metamask.io/ Ͱ MetaMaskΛΠϯετʔϧ͢Δ ‣ MetaMaskͰ΢ΥϨοτΛΞΫ ςΟϕʔτ͓ͯ͘͠ ‣

    ςετωοτ(Ropsten)ʹ઀ଓͯ͠
 https://faucet.metamask.io/ Ͱ ETHΛೖख͓ͯ͘͠ 16
  7. ·ͱΊ ▸ σϓϩΠͱ͸τϥϯβΫγϣϯͷContract Creationͷ͜ͱ ▸ ओʹ3ͭͷํ๏ͰσϓϩΠͰ͖Δ ▸ Ethereum ClientΛ࢖͏ʢ։ൃ޲͚ʣ ▸

    σϓϩΠ༻ͷίϯτϥΫτΛ࡞ΔʢϢʔβ޲͚ʣ ▸ Remixͱ͔؆қతʹߦ͑ΔπʔϧΛ࢖͏ ▸ σϓϩΠͨ͠΋ͷ͸୭Ͱ΋ࢀরՄೳͳͷͰΈͳ͞Μ΋ࢼͯ͠ ΋·͠ΐ͏ʂ 23