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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
640
スマートコントラクトのデプロイって何だろう
ngo275
0
850
プロトタイピングするなら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
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
780
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
180
文字コードの話
qnighy
44
17k
The Ralph Wiggum Loop: First Principles of Autonomous Development
sembayui
0
3.7k
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
350
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
7.9k
nilとは何か 〜interfaceの構造とnil!=nilから理解する〜
kuro_kurorrr
3
1.9k
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
550
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
390
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
350
モジュラモノリスにおける境界をGoのinternalパッケージで守る
magavel
0
3.5k
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
220
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
150
The Invisible Side of Design
smashingmag
302
51k
How STYLIGHT went responsive
nonsquared
100
6k
My Coaching Mixtape
mlcsv
0
69
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
190
Discover your Explorer Soul
emna__ayadi
2
1.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
150
Exploring anti-patterns in Rails
aemeredith
2
290
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
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