Upgrade to Pro — share decks privately, control downloads, hide ads and more …

スマートコントラクトをHTTPで実行する

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 スマートコントラクトをHTTPで実行する

スマートコントラクトをHTTPで実行する

Avatar for Shuichi Nagao

Shuichi Nagao

June 22, 2018
Tweet

More Decks by Shuichi Nagao

Other Decks in Programming

Transcript

  1. εϚʔτίϯτϥΫτͱ͸ ~࣮ߦ·Ͱͷϑϩʔ~ Private key ࣮ߦ ࣮ߦऀ͕͜ͷϑϩʔΛߦ͏ඞཁ͕͋Δ ㅟ ㅟ ㅟ ㅟ

    ଟ͘ͷΞϓϦ(DApp)Ͱ͸͜Ε͸Ϣʔβ͕ߦ͏ !6 Txͷੜ੒ Txੜ੒ʹඞཁͳσʔλΛ·ͱΊΔ ൿີ伴Ͱॺ໊͢Δ Ethereum Client͕ ωοτϫʔΫʹ఻͑Δ
  2. εϚʔτίϯτϥΫτͱ͸ ~࣮ߦ·Ͱͷϑϩʔ~ Private key ࣮ߦ ࣮ߦऀ͕͜ͷϑϩʔΛߦ͏ඞཁ͕͋Δ ㅟ ㅟ ㅟ ㅟ

    ଟ͘ͷΞϓϦ(DApp)Ͱ͸͜Ε͸Ϣʔβ͕ߦ͏ => αʔϏεଆ͕ݞ୅ΘΓͰ͖ͳ͍ͷ͔…?? !7 Txͷੜ੒ Txੜ੒ʹඞཁͳσʔλΛ·ͱΊΔ ൿີ伴Ͱॺ໊͢Δ Ethereum Client͕ ωοτϫʔΫʹ఻͑Δ
  3. ۩ମతͳ࣮૷ ~ϋϚΓͲ͜ᶃ~ • Txੜ੒͸Nonce͕ඞཁͰߴεϧʔϓοτ͕ٻΊΒΕΔͳΒΠϯΫϦϝϯ τ͢Δ࢓૊ΈΛ࡞Δඞཁ͕͋Δ • Nonceʹ͸࣮ߦΞΧ΢ϯτͷTransactionCountΛ༻͍Δ͜ͱ͕ଟ͍ ͕ɺϒϩοΫ͕৽نੜ੒͞ΕΔεϐʔυΑΓૣ͘ॲཧ͢Δʹ͸ TransactionCountΛNonceʹར༻Ͱ͖ͳ͍ •

    ͕ͨͬͯ͜͜͠Ͱ͸ɺTransactionCountΛNonceʹར༻͢ΔͨΊ ʹɺϦΞϧλΠϜੑΛ٘ਜ਼ʹͯ͠batchͰॲཧ͢ΔίϯτϥΫτΛ ࡞੒ͨ͠ • ଞͷํ๏ͱͯ͠͸ίϯτϥΫτΛ࣮ߦ͢ΔΞΧ΢ϯτΛNݸʹ͢Ε ͹εϧʔϓοτ΋NഒʹͳΔ !15
  4. ۩ମతͳ࣮૷ ~ϋϚΓͲ͜ᶄ~ • EthereumΞυϨεͷݕূʹ͸EcrecoverΛར༻͢Δ • ͦͷϢʔβ͸ຊ౰ʹͦͷΞυϨεʹରͯ͠ൿີ伴Λ͍࣋ͬͯͯॺ໊ Ͱ͖ΔΑͶɺͱ͍͏֬ೝΛͯ͠σλϥϝͳΞυϨεʹτʔΫϯΛ͹ Β·͘ͷΛ๷͙ • ϝοηʔδΛൿີ伴Ͱॺ໊ͨ݁͠Ռ͔ΒΞυϨεΛநग़͢Δํ๏

    • ϝοηʔδ͑͞෼͔͍ͬͯΕ͹ΞυϨε͕Θ͔Δ • EthereumAddress / message / sign Λड͚औͬͯॺ໊(sign)͔Β messageΛ࢖ͬͯEthereumAddressΛܭࢉ͠ɺ౉͖ͬͯͨ EthereumAddressͱಉ͡ʹͳΕ͹ਖ਼౰ͩͱΈͳͤΔ !16
  5. ۩ମతͳ࣮૷ ~ϋϚΓͲ͜ᶅ~ • GCP(AppEngineϝΠϯ)Ͱ࡞͕ͬͨɺ૝૾Ҏ্ʹ੍໿͕ଟ͔ͬͨ • Cloud Functions͕ར༻Ͱ͖ΔͳΒAppEngineᶄͷ෦෼͸Cloud FunctionsͰΑ͔ͬͨ • αʔόϨεʹͯ͠Πϯλʔωοτ͔Βִ཭͔ͨͬͨ͠

    • AWSͳΒLambdaҰ୒͔΋ • GAE StandardͰ͸Goͷ௿ϨΠϠʔͷAPI͕ར༻Ͱ͖ͣEtheruemܥ ͷϥΠϒϥϦ͸࢖͑ͳ͔ͬͨ • ݁ՌతʹFlexibleͷnodejsͰ࣮૷͢Δ͜ͱʹ !17
  6. ·ͱΊ • αʔόʹൿີ伴Λஔ͔ͳ͍ͱ͍͚ͳ͍ • => KMSΛར༻ • αʔό͸Ψε୅ͷETHΛ͍࣋ͬͯͳ͍ͱ͍͚ͳ͍ • =>

    αʔόΛΠϯλʔωοτ͔ΒͰ͖Δִ͚ͩ཭͢Δ • EthereumͷTxੜ੒͸͍͍ͤͥඵؒʹ਺ճ͔͠Ͱ͖ͳ͍ • => batchॲཧ͕Ͱ͖ΔΑ͏ʹίϯτϥΫτΛ࣮૷͠ɺPubSubͰ ΩϡʔΠϯά͢Δ • DDoS߈ܸΛ৯Β͏ͱΨε୅͕ແବʹൃੜ͢Δ • => reCAPTCHAͰରԠ !18