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
Shuichi Nagao
June 22, 2018
Programming
160
0
Share
スマートコントラクトをHTTPで実行する
スマートコントラクトをHTTPで実行する
Shuichi Nagao
June 22, 2018
More Decks by Shuichi Nagao
See All by Shuichi Nagao
UX for Key Management
ngo275
0
130
深センではテクノロジーを使う人がイノベーションを起こしている
ngo275
0
640
スマートコントラクトのデプロイって何だろう
ngo275
0
860
プロトタイピングするならFirebaseを使ってみよう
ngo275
0
1.8k
Ethereumで開発を始めるなら知っておきたいこと
ngo275
10
5.2k
EOSでスマートコントラクトを実行してみる
ngo275
0
1.2k
iOSアプリエンジニアがReact Nativeを使ってみて
ngo275
0
290
中東のシリコンバレーことイスラエルに行ってきた
ngo275
0
160
ペイモのアーキテクチャ
ngo275
0
710
Other Decks in Programming
See All in Programming
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
1.3k
おれのAgentic Coding 2026/03
tsukasagr
1
120
AI Assistants for YourAngular Solutions @Angular Graz, March 2026
manfredsteyer
PRO
0
140
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
220
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
910
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
280
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
320
ファインチューニングせずメインコンペを解く方法
pokutuna
0
250
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
130
Nuxt Server Components
wattanx
0
230
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
420
「速くなった気がする」をデータで疑う
senleaf24
0
120
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
190
A Tale of Four Properties
chriscoyier
163
24k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
780
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
We Have a Design System, Now What?
morganepeng
55
8.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
From π to Pie charts
rasagy
0
160
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Amusing Abliteration
ianozsvald
1
150
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
92
The browser strikes back
jonoalderson
0
870
Site-Speed That Sticks
csswizardry
13
1.1k
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