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
スマートコントラクトをHTTPで実行する
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shuichi Nagao
June 22, 2018
Programming
0
150
スマートコントラクトをHTTPで実行する
スマートコントラクトをHTTPで実行する
Shuichi Nagao
June 22, 2018
Tweet
Share
More Decks by Shuichi Nagao
See All by Shuichi Nagao
UX for Key Management
ngo275
0
130
深センではテクノロジーを使う人がイノベーションを起こしている
ngo275
0
630
スマートコントラクトのデプロイって何だろう
ngo275
0
840
プロトタイピングするならFirebaseを使ってみよう
ngo275
0
1.8k
Ethereumで開発を始めるなら知っておきたいこと
ngo275
10
5.2k
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
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
600
CSC307 Lecture 05
javiergs
PRO
0
490
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
210
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
110
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
540
SourceGeneratorのススメ
htkym
0
190
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5.9k
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
680
Basic Architectures
denyspoltorak
0
660
Fluid Templating in TYPO3 14
s2b
0
130
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.8k
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
89
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
420
GraphQLとの向き合い方2022年版
quramy
50
14k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
430
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
From π to Pie charts
rasagy
0
120
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
270
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
Transcript
εϚʔτίϯτϥΫτ ΛHTTPͰͨͨ͘ 18/6/22 @ngo275 !1
༰ • εϚʔτίϯτϥΫτͱ • HTTPͰ࣮ߦ͢Δ্Ͱͷ՝ • ۩ମతͳ࣮ !2
εϚʔτίϯτϥΫτͱ • ϒϩοΫνΣʔϯ্Ͱಈ͘ϓϩάϥϜ • όοΫΤϯυΛϒϩοΫνΣʔϯʹஔ͘Πϝʔδ • ϑϩϯτΤϯυैདྷͷٕज़Ͱͳ͍ • Ethereum͕ͦͷϓϥοτϑΥʔϜͱͯͬ͠ͱར༻͞Εͯ ͍Δɻ͜͜ͰEthereumΛఆ͢Δ
• ࣮ߦ͢ΔͨΊʹ࣮ߦऀͷൿີ伴ʹΑΔॺ໊ͱ࣮ߦʹ͔͔Δ Ψεͷࢧ͍͕ඞཁ !3
εϚʔτίϯτϥΫτͱ ~࣮ߦ·Ͱͷϑϩʔ~ Private key ࣮ߦ !4 TxੜʹඞཁͳσʔλΛ·ͱΊΔ ൿີ伴Ͱॺ໊͢Δ Ethereum Client͕
ωοτϫʔΫʹ͑Δ
εϚʔτίϯτϥΫτͱ ~࣮ߦ·Ͱͷϑϩʔ~ Private key ࣮ߦ !5 TxੜʹඞཁͳσʔλΛ·ͱΊΔ ൿີ伴Ͱॺ໊͢Δ ʣTxͱɺεϚʔτίϯτϥΫτ࣮ߦʹඞཁͳॺ໊ࡁΈσʔλͷ͜ͱͰɺ TxΛϒϩοΫνΣʔϯʹϒϩʔυΩϟετ͢Δ͜ͱͰɺ
εϚʔτίϯτϥΫτ͕࣮ߦ͞ΕΔ Ethereum Client͕ ωοτϫʔΫʹ͑Δ
εϚʔτίϯτϥΫτͱ ~࣮ߦ·Ͱͷϑϩʔ~ Private key ࣮ߦ ࣮ߦऀ͕͜ͷϑϩʔΛߦ͏ඞཁ͕͋Δ ㅟ ㅟ ㅟ ㅟ
ଟ͘ͷΞϓϦ(DApp)Ͱ͜ΕϢʔβ͕ߦ͏ !6 Txͷੜ TxੜʹඞཁͳσʔλΛ·ͱΊΔ ൿີ伴Ͱॺ໊͢Δ Ethereum Client͕ ωοτϫʔΫʹ͑Δ
εϚʔτίϯτϥΫτͱ ~࣮ߦ·Ͱͷϑϩʔ~ Private key ࣮ߦ ࣮ߦऀ͕͜ͷϑϩʔΛߦ͏ඞཁ͕͋Δ ㅟ ㅟ ㅟ ㅟ
ଟ͘ͷΞϓϦ(DApp)Ͱ͜ΕϢʔβ͕ߦ͏ => αʔϏεଆ͕ݞΘΓͰ͖ͳ͍ͷ͔…?? !7 Txͷੜ TxੜʹඞཁͳσʔλΛ·ͱΊΔ ൿີ伴Ͱॺ໊͢Δ Ethereum Client͕ ωοτϫʔΫʹ͑Δ
ཁ͜ΕΛ࣮ݱ͍ͨ͠ • Ϣʔβ͕εϚʔτίϯτϥΫτΛ࣮ߦ͠ͳ͍ • ϢʔβαʔϏεʹHTTPͰϦΫΤετ͢Δ͚ͩ • αʔϏεଆ͕ॺ໊͠ɺΨεෛ୲ͯ͠εϚʔτίϯτϥ ΫτΛ࣮ߦ͢Δ !8
HTTPͰ࣮ߦ͢Δ্Ͱͷ՝ • αʔόʹൿີ伴Λஔ͔ͳ͍ͱ͍͚ͳ͍ • αʔόΨεͷETHΛ͍࣋ͬͯͳ͍ͱ͍͚ͳ͍ • EthereumͷTxੜ͍͍ͤͥඵؒʹճ͔͠Ͱ͖ͳ͍ • DDoS߈ܸΛ৯Β͏ͱΨε͕ແବʹൃੜ͢Δ !9
۩ମతͳ࣮ ~ྫ~ • τʔΫϯͷΛ۩ମྫʹݟ͍ͯ͘͜ͱʹ͢Δ • Ϣʔβ͕HTTPͰτʔΫϯ͘ΕϦΫΤετΛ͢Δͱɺ αʔό͕εϚʔτίϯτϥΫτΛ࣮ߦͯ͠Ϣʔβʹ τʔΫϯΛૹΔ • TxੜճΛݮΒͨ͢Ίʹ֤ΞυϨεʹରͯ͠ૹΔ
ͷͰͳ͘ɺbatchTransfer(ಉ࣌ʹෳΞυϨεʹૹ ۚ͢Δ)ؔΛ࣮ߦ͢Δ !10
۩ମతͳ࣮ ~ઃܭ~ • ൿີ伴KMSΛͬͯ҆શʹཧ͢Δ • Ϣʔβ͔ΒͷϦΫΤετΛΩϡʔΠϯάͯ͠ɺͦΕΛࢹ ͢ΔαʔόΛཱ͓ͯͯ͘ • ࢹ͍ͯ͠Δαʔό͕TxΛੜͯ͠εϚʔτίϯτϥΫτ Λ࣮ߦ͢Δ
• ࢹ͍ͯ͠ΔαʔόΠϯλʔωοτ͔ΒΞΫηεͰ͖ͳ ͍Α͏ʹ͢Δ !11
۩ମతͳ࣮ ~ઃܭ~ !12
۩ମతͳ࣮ ~ઃܭ~ 1. HTTPϦΫΤετ͕ਖ਼͍͔͠ݕূ 2. ϦΫΤετͷEthereumΞυϨεݕূ(ෆ ਖ਼ͳΞυϨεΛ͘͡) 3. reCAPTCHAτʔΫϯͷݕূ(DDoSର ࡦ)
!13
۩ମతͳ࣮ ~ઃܭ~ 1. KMSʹൿີ伴ΛऔΓʹߦ͘ 2. PubSubʹೖ͍ͬͯΔෳͷΞυϨεʹ ରͯ͠τʔΫϯΛૹۚ͢Δɺͱ͍͏Tx Λੜ͢Δ(Ұ݅ͳ͍ͱ͖ऴྃ) 3. Web3ܦ༝ͰEthereumωοτϫʔΫʹ
ϒϩʔυΩϟετ͢ΔΑ͏ʹୡ 4. batchTransferͱ͍͏͕ؔωοτϫʔ ΫͰ࣮ߦ͞ΕΔ !14
۩ମతͳ࣮ ~ϋϚΓͲ͜ᶃ~ • TxੜNonce͕ඞཁͰߴεϧʔϓοτ͕ٻΊΒΕΔͳΒΠϯΫϦϝϯ τ͢ΔΈΛ࡞Δඞཁ͕͋Δ • Nonceʹ࣮ߦΞΧϯτͷTransactionCountΛ༻͍Δ͜ͱ͕ଟ͍ ͕ɺϒϩοΫ͕৽نੜ͞ΕΔεϐʔυΑΓૣ͘ॲཧ͢Δʹ TransactionCountΛNonceʹར༻Ͱ͖ͳ͍ •
͕ͨͬͯ͜͜͠ͰɺTransactionCountΛNonceʹར༻͢ΔͨΊ ʹɺϦΞϧλΠϜੑΛ٘ਜ਼ʹͯ͠batchͰॲཧ͢ΔίϯτϥΫτΛ ࡞ͨ͠ • ଞͷํ๏ͱͯ͠ίϯτϥΫτΛ࣮ߦ͢ΔΞΧϯτΛNݸʹ͢Ε εϧʔϓοτNഒʹͳΔ !15
۩ମతͳ࣮ ~ϋϚΓͲ͜ᶄ~ • EthereumΞυϨεͷݕূʹEcrecoverΛར༻͢Δ • ͦͷϢʔβຊʹͦͷΞυϨεʹରͯ͠ൿີ伴Λ͍࣋ͬͯͯॺ໊ Ͱ͖ΔΑͶɺͱ͍͏֬ೝΛͯ͠σλϥϝͳΞυϨεʹτʔΫϯΛ Β·͘ͷΛ͙ • ϝοηʔδΛൿີ伴Ͱॺ໊ͨ݁͠Ռ͔ΒΞυϨεΛநग़͢Δํ๏
• ϝοηʔδ͔͍͑ͬͯ͞ΕΞυϨε͕Θ͔Δ • EthereumAddress / message / sign Λड͚औͬͯॺ໊(sign)͔Β messageΛͬͯEthereumAddressΛܭࢉ͠ɺ͖ͬͯͨ EthereumAddressͱಉ͡ʹͳΕਖ਼ͩͱΈͳͤΔ !16
۩ମతͳ࣮ ~ϋϚΓͲ͜ᶅ~ • GCP(AppEngineϝΠϯ)Ͱ࡞͕ͬͨɺ૾Ҏ্ʹ੍͕ଟ͔ͬͨ • Cloud Functions͕ར༻Ͱ͖ΔͳΒAppEngineᶄͷ෦Cloud FunctionsͰΑ͔ͬͨ • αʔόϨεʹͯ͠Πϯλʔωοτ͔Βִ͔ͨͬͨ͠
• AWSͳΒLambdaҰ͔ • GAE StandardͰGoͷϨΠϠʔͷAPI͕ར༻Ͱ͖ͣEtheruemܥ ͷϥΠϒϥϦ͑ͳ͔ͬͨ • ݁ՌతʹFlexibleͷnodejsͰ࣮͢Δ͜ͱʹ !17
·ͱΊ • αʔόʹൿີ伴Λஔ͔ͳ͍ͱ͍͚ͳ͍ • => KMSΛར༻ • αʔόΨεͷETHΛ͍࣋ͬͯͳ͍ͱ͍͚ͳ͍ • =>
αʔόΛΠϯλʔωοτ͔ΒͰ͖Δִ͚ͩ͢Δ • EthereumͷTxੜ͍͍ͤͥඵؒʹճ͔͠Ͱ͖ͳ͍ • => batchॲཧ͕Ͱ͖ΔΑ͏ʹίϯτϥΫτΛ࣮͠ɺPubSubͰ ΩϡʔΠϯά͢Δ • DDoS߈ܸΛ৯Β͏ͱΨε͕ແବʹൃੜ͢Δ • => reCAPTCHAͰରԠ !18