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
890
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スマートコントラクトのデプロイって何だろう
Ethereumのコントラクトのデプロイについて見ていきます。既存のWeb開発におけるデプロイとは似ているのですがデプロイフローは異なるのでその紹介をします。
Shuichi Nagao
September 28, 2018
More Decks by Shuichi Nagao
See All by Shuichi Nagao
UX for Key Management
ngo275
0
140
深センではテクノロジーを使う人がイノベーションを起こしている
ngo275
0
700
プロトタイピングするならFirebaseを使ってみよう
ngo275
0
1.9k
Ethereumで開発を始めるなら知っておきたいこと
ngo275
10
5.3k
スマートコントラクトをHTTPで実行する
ngo275
0
170
EOSでスマートコントラクトを実行してみる
ngo275
0
1.2k
iOSアプリエンジニアがReact Nativeを使ってみて
ngo275
0
300
中東のシリコンバレーことイスラエルに行ってきた
ngo275
0
170
ペイモのアーキテクチャ
ngo275
0
720
Other Decks in Programming
See All in Programming
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.4k
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
670
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.7k
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
290
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
380
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
340
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
540
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
220
yield再入門 #phpcon
o0h
PRO
0
970
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
330
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
580
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
New Earth Scene 8
popppiees
3
2.5k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Optimizing for Happiness
mojombo
378
71k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The Spectacular Lies of Maps
axbom
PRO
1
890
Ethics towards AI in product and experience design
skipperchong
2
340
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Navigating Team Friction
lara
192
16k
Prompt Engineering for Job Search
mfonobong
0
400
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