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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shuichi Nagao
September 28, 2018
Programming
0
850
スマートコントラクトのデプロイって何だろう
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
130
深センではテクノロジーを使う人がイノベーションを起こしている
ngo275
0
640
プロトタイピングするならFirebaseを使ってみよう
ngo275
0
1.8k
Ethereumで開発を始めるなら知っておきたいこと
ngo275
10
5.2k
スマートコントラクトをHTTPで実行する
ngo275
0
150
EOSでスマートコントラクトを実行してみる
ngo275
0
1.2k
iOSアプリエンジニアがReact Nativeを使ってみて
ngo275
0
290
中東のシリコンバレーことイスラエルに行ってきた
ngo275
0
150
ペイモのアーキテクチャ
ngo275
0
710
Other Decks in Programming
See All in Programming
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
360
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
120
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
3
1.2k
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
830
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
870
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
390
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
110
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
280
株式会社 Sun terras カンパニーデック
sunterras
0
2.1k
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
530
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
130
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
130
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
130
Rails Girls Zürich Keynote
gr2m
96
14k
Marketing to machines
jonoalderson
1
5k
Evolving SEO for Evolving Search Engines
ryanjones
0
150
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The agentic SEO stack - context over prompts
schlessera
0
690
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
The browser strikes back
jonoalderson
0
780
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
77
So, you think you're a good person
axbom
PRO
2
1.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
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