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
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スマートコントラクトをHTTPで実行する
スマートコントラクトをHTTPで実行する
Shuichi Nagao
June 22, 2018
More Decks by Shuichi Nagao
See All by Shuichi Nagao
UX for Key Management
ngo275
0
140
深センではテクノロジーを使う人がイノベーションを起こしている
ngo275
0
690
スマートコントラクトのデプロイって何だろう
ngo275
0
880
プロトタイピングするならFirebaseを使ってみよう
ngo275
0
1.9k
Ethereumで開発を始めるなら知っておきたいこと
ngo275
10
5.2k
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
えっ!!コードを読まずに開発を!?
hananouchi
0
190
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
360
どこまでゆるくて許されるのか
tk3fftk
0
470
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
100
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
250
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
480
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
840
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
200
Contextとはなにか
chiroruxx
1
390
AIエージェントで 変わるAndroid開発環境
takahirom
2
540
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
170
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
210
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
40k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
650
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Building AI with AI
inesmontani
PRO
1
1.1k
Balancing Empowerment & Direction
lara
6
1.2k
Ethics towards AI in product and experience design
skipperchong
2
330
The Limits of Empathy - UXLibs8
cassininazir
1
460
Utilizing Notion as your number one productivity tool
mfonobong
4
380
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.7k
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