Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スマートコントラクトのデプロイって何だろう
Search
Shuichi Nagao
September 28, 2018
Programming
0
740
スマートコントラクトのデプロイって何だろう
Ethereumのコントラクトのデプロイについて見ていきます。既存のWeb開発におけるデプロイとは似ているのですがデプロイフローは異なるのでその紹介をします。
Shuichi Nagao
September 28, 2018
Tweet
Share
More Decks by Shuichi Nagao
See All by Shuichi Nagao
UX for Key Management
ngo275
0
86
深センではテクノロジーを使う人がイノベーションを起こしている
ngo275
0
500
プロトタイピングするならFirebaseを使ってみよう
ngo275
0
1.7k
Ethereumで開発を始めるなら知っておきたいこと
ngo275
10
4.9k
スマートコントラクトをHTTPで実行する
ngo275
0
110
EOSでスマートコントラクトを実行してみる
ngo275
0
1.1k
iOSアプリエンジニアがReact Nativeを使ってみて
ngo275
0
270
中東のシリコンバレーことイスラエルに行ってきた
ngo275
0
110
ペイモのアーキテクチャ
ngo275
0
630
Other Decks in Programming
See All in Programming
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
570
混沌とした例外処理とエラー監視に秩序をもたらす
morihirok
14
2.4k
知られざるDMMデータエンジニアの生態 〜かつてツチノコと呼ばれし者〜
takaha4k
1
500
DevinとCursorから学ぶAIエージェントメモリーの設計とMoatの考え方
itarutomy
0
160
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
1k
Rubyでつくるパケットキャプチャツール
ydah
0
180
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
240
asdf-ecspresso作って 友達が増えた話 / Fujiwara Tech Conference 2025
koluku
0
1.4k
HTML/CSS超絶浅い説明
yuki0329
0
190
良いユニットテストを書こう
mototakatsu
11
3.6k
QA環境で誰でも自由自在に現在時刻を操って検証できるようにした話
kalibora
1
140
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
280
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
Facilitating Awesome Meetings
lara
51
6.2k
Optimizing for Happiness
mojombo
376
70k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Designing for humans not robots
tammielis
250
25k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
GraphQLとの向き合い方2022年版
quramy
44
13k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
RailsConf 2023
tenderlove
29
980
Transcript
εϚʔτίϯτϥΫτͷ σϓϩΠͬͯͲ͏͍͏͜ͱʁ 2018/9/28 @NGO275 1
͢༰ ▸ εϚʔτίϯτϥΫτ(εϚίϯ) ͓͞Β͍ ▸ σϓϩΠͱ ▸ ࣮ࡍʹͬͯΈΔ 2
εϚʔτίϯτϥΫτ͓͞Β͍ ֓ཁ ▸ ཧऀෆࡏͰࣥߦ͕ՄೳʹͳͬͨɺϓϩάϥϜԽ͞Εͨܖ ͷ͜ͱ ▸ ࣗಈൢചػ͕Α͘ྫ͑ΒΕΔ ▸ 20ੈلޙ࣌ͰNick Szabo͕ఏএͨ֓͠೦
▸ ϒϩοΫνΣʔϯͱͷ૬ੑ͕ྑ͘ɺEthereumΛ͡Ίͱͨ͠ ༷ʑͳϒϩοΫνΣʔϯͰεϚʔτίϯτϥΫτͷ࣮ߦϓϥο τϑΥʔϜ͕࣮͞Ε͍ͯΔ ▸ ࠓճEthereumʹϑΥʔΧε͠·͢ 3
εϚʔτίϯτϥΫτ͓͞Β͍ ICOΛྫʹͱΔ ICO εϚίϯ ϓϩδΣΫτ 4
σϓϩΠͱ લఏͱͯ͠ETHEREUMεςʔτΛͬͨγϯάϧτϯϚγϯ εςʔτ N εςʔτ N+1 τϥϯβΫγϣϯ 5
σϓϩΠͱ εςʔτͷ࣮ଶΞΧϯτͷू߹ ▸ ΞΧϯτʹ2छྨ͋Δ ▸ ֎෦ΞΧϯτ (EOA) ▸ ਓ͕ѻ͏ΞΧϯτ ▸
ίϯτϥΫτΞΧϯτ (CA) ▸ ίϯτϥΫτ͕ೖ͍ͬͯΔΞΧϯτ 6
σϓϩΠͱ εςʔτͷσʔλߏϚʔΫϧύτϦγΞπϦʔঢ় STATE ROOT NONCE BALANCE CODE HASH STORAGE ROOT
CODE ΞΧϯτ 7
σϓϩΠͱ τϥβΫγϣϯͷৄࡉ ▸ τϥϯβΫγϣϯʹ2छྨ͋Δ ▸ Message Call ▸ ίϯτϥΫτͷ࣮ؔߦ ▸
ETHͷૹۚ ▸ Contract Creation ▸ ৽͍͠ίϯτϥΫτΞΧϯτͷੜ 8
σϓϩΠͱ τϥβΫγϣϯͷৄࡉ ▸ τϥϯβΫγϣϯʹ2छྨ͋Δ ▸ Message Call ▸ ίϯτϥΫτͷ࣮ؔߦ ▸
ETHͷૹۚ ▸ Contract Creation ▸ ৽͍͠ίϯτϥΫτΞΧϯτͷੜ σϓϩΠͷ࣮ଶ 9
σϓϩΠͱ CONTRACT CREATIONΛߦ͏ํ๏ EOA ৽نCA CONTRACT CREATION EOA ৽نCA CONTRACT
CREATION MESSAGE CALL CA CA͕࣮ߦ͢ΔτϥβΫγϣϯΛ ෦τϥϯβΫγϣϯͱݴ͍·͢ 1 2 10
࣮ࡍʹͬͯΈΔ ͍͔ͭ͘ํ๏͋ΔͷͰྻڍͯ͠ΈΔ 1. Ethereum ClientΛͬͯEOA͔ΒContract Creation ͷτϥϯβΫγϣϯΛ࣮ߦ͢Δ 2. deployؔΛ࣋ͬͨFactoryίϯτϥΫτΛ࣮͠ɺͦͷ deployؔΛ࣮ߦ͢Δʢ෦τϥϯβΫγϣϯͰContract
Creation͕࣮ߦ͞ΕΔʣ 3. RemixΛͬͯContract CreationΛ࣮ߦ͢Δ 11
࣮ࡍʹͬͯΈΔ ͍͔ͭ͘ํ๏͋ΔͷͰྻڍͯ͠ΈΔʢৄࡉʣ 1. Ethereum ClientΛͬͯEOA͔ΒContract Creation ͷτϥϯβΫγϣϯΛ࣮ߦ͢Δ ‣ ຊ֨తͳ։ൃΛ͢ΔͳΒ͜Ε ‣
TruffleΛ͏͜ͱͰCLI͔ΒσϓϩΠͰ͖Δ ‣ ෳͷίϯτϥΫτΛ͖ͳॱ൪ͰσϓϩΠͰ͖Δͷ Ͱͬͱॊೈੑ͕ߴ͍ 12
࣮ࡍʹͬͯΈΔ ͍͔ͭ͘ํ๏͋ΔͷͰྻڍͯ͠ΈΔʢৄࡉʣ 2. deployؔΛ࣋ͬͨFactoryίϯτϥΫτΛ࣮͠ɺͦͷ deployؔΛ࣮ߦ͢Δ ‣ ΞϓϦར༻ऀ͕ίϯτϥΫτΛσϓϩΠͰ͖Δ ‣ ؆୯ʹτʔΫϯΛൃߦͰ͖ΔγεςϜΛ࡞Δͱ͢Δͱɺ ͜ͷํ๏Ͱ֤τʔΫϯΛϢʔβʹσϓϩΠͯ͠Β͏
13
3. RemixΛָͬͯ͢Δ ‣ Remix͜ͱϒϥβIDEΛ͏ͱɺ؆୯ʹίϯτϥΫτ ΛσϓϩΠͰ͖Δ ‣ ϩʔΧϧ։ൃڥʹґଘ͠ͳ͍ͷͰษڧʹ࠷ద͕ͩɺ ຊ֨తͳ։ൃʹΓͳ͍͔ ‣ MetaMask͚ͩ͋Εྑ͍
࣮ࡍʹͬͯΈΔ ͍͔ͭ͘ํ๏͋ΔͷͰྻڍͯ͠ΈΔʢৄࡉʣ 14
࣮ࡍʹͬͯΈΔ 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
࣮ࡍʹͬͯΈΔ Լ४උ ‣ https://metamask.io/ Ͱ MetaMaskΛΠϯετʔϧ͢Δ ‣ MetaMaskͰΥϨοτΛΞΫ ςΟϕʔτ͓ͯ͘͠ ‣
ςετωοτ(Ropsten)ʹଓͯ͠ https://faucet.metamask.io/ Ͱ ETHΛೖख͓ͯ͘͠ 16
࣮ࡍʹͬͯΈΔ ίϯτϥΫτΛ࣮͢Δ 17
࣮ࡍʹͬͯΈΔ ίϯτϥΫτΛ࣮͢Δ ᶃϑΝΠϧͷ৽ن࡞࣮ͯ͠ 18
࣮ࡍʹͬͯΈΔ ίϯτϥΫτΛίϯύΠϧ͢Δ ᶃCompileΛ։͘ ᶄCompiler version֬ೝ ᶅStart to compileΛΫϦοΫ 19
࣮ࡍʹͬͯΈΔ ίϯτϥΫτΛσϓϩΠ͢Δ ᶄWeb3͕Inject͞Ε͍ͯΔ͔֬ೝ ᶃRunΛ։͘ ᶅDeployΛΫϦοΫ͢Δ 20
࣮ࡍʹͬͯΈΔ ίϯτϥΫτΛσϓϩΠ͢Δ ᶆMetaMaskͰॺ໊͢Δ 21
࣮ࡍʹͬͯΈΔ ίϯτϥΫτͰ༡ΜͰΈΔ ᶃίϯτϥΫτͷؔΛ࣮ߦͰ͖Δ 22
·ͱΊ ▸ σϓϩΠͱτϥϯβΫγϣϯͷContract Creationͷ͜ͱ ▸ ओʹ3ͭͷํ๏ͰσϓϩΠͰ͖Δ ▸ Ethereum ClientΛ͏ʢ։ൃ͚ʣ ▸
σϓϩΠ༻ͷίϯτϥΫτΛ࡞ΔʢϢʔβ͚ʣ ▸ Remixͱ͔؆қతʹߦ͑ΔπʔϧΛ͏ ▸ σϓϩΠͨ͠ͷ୭ͰࢀরՄೳͳͷͰΈͳ͞Μࢼͯ͠ ·͠ΐ͏ʂ 23