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
810
スマートコントラクトのデプロイって何だろう
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
110
深センではテクノロジーを使う人がイノベーションを起こしている
ngo275
0
590
プロトタイピングするならFirebaseを使ってみよう
ngo275
0
1.8k
Ethereumで開発を始めるなら知っておきたいこと
ngo275
10
5.1k
スマートコントラクトをHTTPで実行する
ngo275
0
130
EOSでスマートコントラクトを実行してみる
ngo275
0
1.1k
iOSアプリエンジニアがReact Nativeを使ってみて
ngo275
0
280
中東のシリコンバレーことイスラエルに行ってきた
ngo275
0
140
ペイモのアーキテクチャ
ngo275
0
680
Other Decks in Programming
See All in Programming
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
170
XP, Testing and ninja testing ZOZ5
m_seki
3
590
どの様にAIエージェントと 協業すべきだったのか?
takefumiyoshii
2
640
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
1.2k
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
220
Signals & Resource API in Angular: 3 Effective Rules for Your Architecture @BASTA 2025 in Mainz
manfredsteyer
PRO
0
110
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
280
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
Devoxx BE - Local Development in the AI Era
kdubois
0
120
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
970
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
350
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
8
1.6k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
28
4k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Code Reviewing Like a Champion
maltzj
525
40k
Building Adaptive Systems
keathley
43
2.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Balancing Empowerment & Direction
lara
4
680
Why Our Code Smells
bkeepers
PRO
339
57k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Side Projects
sachag
455
43k
Thoughts on Productivity
jonyablonski
70
4.9k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
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