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

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

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

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

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