Hi-Con2018 より良いDApp開発をするための話と gethoについて

B0ada84fd8c179c329cc64455f11b04b?s=47 daisuke sato
November 10, 2018

Hi-Con2018 より良いDApp開発をするための話と gethoについて

Hi-Con2018で登壇した時の資料です。
---
より良いDApp開発をするために、ブロックチェーンネットワークとスマートコントラクトの実行という2つの点から問題点を指摘し、その解決をするために生まれたgethoというサービスについて話をします。
---

B0ada84fd8c179c329cc64455f11b04b?s=128

daisuke sato

November 10, 2018
Tweet

Transcript

  1. 1PQTIPPU *OD %BJTVLF4BUP ΑΓྑ͍%"QQ։ൃΛ͢ΔͨΊͷ࿩ͱ HFUIPʹ͍ͭͯ

  2. w ࠤ౻େี w !TU@ETL w $50BU1PQTIPPU *OD w Πϯϑϥɾαʔό ࣗݾ঺հ

  3. w ૑ۀ೥ w ϞόΠϧΞϓϦ։ൃɾӡӦ w ΠʔαϦΞϜ 1PQTIPPU *OD

  4. ͸͡Ίʹ

  5. None
  6. ຊ೔ਖ਼ࣜϦϦʔε͠·ͨ͠

  7. %"QQ։ൃͷͨΊͷ։ൃϓϥοτϑΥʔϜ ςετ༻ ϒϩοΫνΣʔϯωοτϫʔΫ εϚʔτίϯτϥΫτ σόοΨʔ

  8. ςʔϚ ʮΑΓྑ͍%"QQ։ൃΛ͢ΔͨΊʹ͸ʯ

  9. w %"QQ։ൃ w %"QQ։ൃʹ͓͚ΔϒϩοΫνΣʔϯωοτϫʔΫ w %"QQ։ൃʹ͓͚ΔεϚʔτίϯτϥΫτͷ࣮ߦ w HFUIPʹ͍ͭͯ ࿩͢͜ͱ

  10. w %"QQ։ൃ w %"QQ։ൃʹ͓͚ΔϒϩοΫνΣʔϯωοτϫʔΫ w %"QQ։ൃʹ͓͚ΔεϚʔτίϯτϥΫτͷ࣮ߦ w HFUIPʹ͍ͭͯ ࿩͢͜ͱ

  11. %"QQͱ͸ w ෼ࢄܕΞϓϦέʔγϣϯ %FDFOUSBMJ[FE"QQMJDBUJPO  w εϚʔτίϯτϥΫτΛૢ࡞͢ΔΠϯλϑΣʔεΛ࣋ͬͨ ιϑτ΢ΣΞ

  12. %"QQͱ͸ 8FCΞϓϦέʔγϣϯ ϞόΠϧΞϓϦ ΢ΥϨοτ ϒϩοΫνΣʔϯ
 ωοτϫʔΫ /PEF /PEF /PEF /PEF

    /PEF εϚʔτίϯτϥΫτ ͷ࣮ߦ ΫϥΠΞϯτ ΞϓϦέʔγϣϯ ˞Ұྫͱͯ͠Ϣʔβʔ͕ૢ࡞ՄೳͳΞϓϦέʔγϣϯͷߏ੒ਤ 5Yൃߦ
  13. %"QQ։ൃεϚʔτίϯτϥΫτ։ൃ ΫϥΠΞϯτΞϓϦέʔγϣϯ։ൃ

  14. %"QQ։ൃͷྲྀΕ ϓϥΠϕʔτωοτ ϓϥΠϕʔτ؀ڥ ݸਓࣾ಺͔ΒͷΞΫηε
 ։ൃςετ εςʔδϯά؀ڥ ੈքத͔ΒΞΫηε ࠷ऴςετ ຊ൪؀ڥ ੈքத͔ΒΞΫηε

    σϓϩΠͨ͠ΒมߋෆՄ ςετωοτ ϝΠϯωοτ
  15. %"QQ։ൃͷྲྀΕ ϓϥΠϕʔτωοτ ϓϥΠϕʔτ؀ڥ ݸਓࣾ಺͔ΒͷΞΫηε
 ։ൃςετ εςʔδϯά؀ڥ ੈքத͔ΒΞΫηε ࠷ऴςετ ຊ൪؀ڥ ੈքத͔ΒΞΫηε

    σϓϩΠͨ͠ΒมߋෆՄ ςετωοτ ϝΠϯωοτ %"QQ։ൃ͸ϓϥΠϕʔτωοτ͔Β࢝·Δ ˞ςετωοτͰ΋Մೳ
  16. ։ൃମ੍ εϚʔτίϯτϥΫτ ։ൃऀ ϒϩοΫνΣʔϯ ωοτϫʔΫ ΫϥΠΞϯτ։ൃऀ αʔόαΠυ։ൃऀ σϓϩΠ ςετ +40/31$8FC4PDLFU

    ϓϥΠϕʔτ؀ڥ
  17. ։ൃମ੍ εϚʔτίϯτϥΫτ ։ൃऀ ϒϩοΫνΣʔϯ ωοτϫʔΫ ΫϥΠΞϯτ։ൃऀ αʔόαΠυ։ൃऀ σϓϩΠ ςετ +40/31$8FC4PDLFU

    ϓϥΠϕʔτ؀ڥ
  18. w %"QQ։ൃ w %"QQ։ൃʹ͓͚ΔϒϩοΫνΣʔϯωοτϫʔΫ w %"QQ։ൃʹ͓͚ΔεϚʔτίϯτϥΫτͷ࣮ߦ w HFUIPʹ͍ͭͯ ࿩͢͜ͱ

  19. %"QQ։ൃʹ͓͍ͯ ศརͳϒϩοΫνΣʔϯωοτϫʔΫͱ͸

  20. w ։ൃ͕༰қ w खؒɾίετ͕͔͔Βͳ͍ w ҆ఆੑɾ࣋ଓੑ͕͋Δ %"QQ։ൃ࣌ʹ͓͍ͯ ศརͳϒϩοΫνΣʔϯωοτϫʔΫ

  21. w ؆୯ʹΞΫηεͰ͖Δ w ΫϥΠΞϯταʔό։ൃऀɺ2"ɺςελʔͳͲ΋ w τϥϯβΫγϣϯཤྺ΍࣮ߦϩάͳͲͷ৘ใྔ͕ଟ͍ w ΤΫεϓϩʔϥʔɺσόοά৘ใ w ίϯηϯαεΞϧΰϦζϜ΍ϊʔυઃఆͷࣗ༝౓͕ߴ͍

    w 1P"ɺ1P8 w QSFGVOEɺHBT౳ͷઃఆ ։ൃ͕༰қ
  22. w ߏஙɺӡ༻ͷखؒ w ϒϩοΫνΣʔϯͷߏஙɺӡ༻ w ӡ༻ίετ w Ͱ͖Δ͚ͩ௿ίετ खؒɾίετ

  23. w ϊʔυͷӡ༻ w ϊʔυͷεϖοΫ w ΫϥΠΞϯτΞοϓσʔτ w HFUIͳͲͷΞοϓσʔτ௥ै w Ӭଓੑ

    w DIBJOEBUBͷӬଓԽ ҆ఆੑɾ࣋ଓੑ
  24. w ςετωοτ w */'63" w ϩʔΧϧͷϒϩοΫνΣʔϯ w (BOBDIFɺ3FNJY+BWBTDSJQU7. w Ϋϥ΢υ্ʹཱͯͨϓϥΠϕʔτϊʔυ

    ϒϩοΫνΣʔϯωοτϫʔΫ
  25. ςετωοτ */'63" εϚʔτίϯτϥΫτ ։ൃऀ ΫϥΠΞϯτ։ൃऀ αʔόαΠυ։ൃऀ σϓϩΠ ςετ +40/31$8FC4PDLFU

  26. ςετωοτ */'63" εϚʔτίϯτϥΫτ ։ൃऀ ΫϥΠΞϯτ։ൃऀ αʔόαΠυ։ൃऀ σϓϩΠ ςετ +40/31$8FC4PDLFU ϝϦοτ


    ɾຊ൪؀ڥʹ࠷΋͍ۙ ɾϊʔυෆཁ ɾΞΫηε͠΍͍͢ ɾແྉ ɾαʔυύʔςΟ σϝϦοτ ɾΧελϜͰ͖ͳ͍ ɾ҆ఆੑʹएׯʹෆ҆
  27. εϚʔτίϯτϥΫτ ։ൃऀ ΫϥΠΞϯτ։ൃऀ αʔόαΠυ։ൃऀ σϓϩΠ ςετ +40/31$8FC4PDLFU ϩʔΧϧϒϩοΫνΣʔϯ (BOBDIF 3FNJY

    ϩʔΧϧ1$
  28. εϚʔτίϯτϥΫτ ։ൃऀ ΫϥΠΞϯτ։ൃऀ αʔόαΠυ։ൃऀ σϓϩΠ ςετ +40/31$8FC4PDLFU ϩʔΧϧϒϩοΫνΣʔϯ (BOBDIF 3FNJY

    ϩʔΧϧ1$ ϝϦοτ ɾ؆୯ ɾσϑΥϧτΞΧ΢ϯτ ɾσόοά৘ใ σϝϦοτ ɾΞΫηεͮ͠Β͍ ɾӬଓԽͰ͖ͳ͍
  29. εϚʔτίϯτϥΫτ ։ൃऀ (FUI 1BSJUZ ΫϥΠΞϯτ։ൃऀ αʔόαΠυ։ൃऀ σϓϩΠ ςετ +40/31$8FC4PDLFU Ϋϥ΢υ্ʹߏஙͨ͠ϓϥΠϕʔτϊʔυ

    "84($1
  30. εϚʔτίϯτϥΫτ ։ൃऀ (FUI 1BSJUZ ΫϥΠΞϯτ։ൃऀ αʔόαΠυ։ൃऀ σϓϩΠ ςετ +40/31$8FC4PDLFU Ϋϥ΢υ্ʹߏஙͨ͠ϓϥΠϕʔτϊʔυ

    "84($1 ϝϦοτ ɾΧελϜ͠΍͍͢ ɾӬଓԽՄೳ ɾΞΫηε͠΍͍͢ σϝϦοτ ɾߏஙӡ༻ͷखؒ ɾ৘ใෆ଍
  31. ςετωοτ ϩʔΧϧ Ϋϥ΢υ্ͷ ϓϥΠϕʔτϊʔυ ։ൃ͕༰қ ˚ ؆୯ʹΞΫηε ϊʔυࣗ༝౓௿͍ ̋ νʔϜ։ൃෆ޲͖

    ̋ ؆୯ʹΞΫηε ϊʔυࣗ༝౓ߴ͍ खؒ ίετ ˕ खؒෆཁɾແྉ ˕ खؒෆཁɾແྉ ˚ ߏஙͷखؒ ଟগͷίετ ҆ఆੑ ࣋ଓੑ ̋ ˚ DIBJOEBUBͷӬଓԽ͕ Ͱ͖ͳ͍ ˚ ϊʔυӡ༻͕ඞཁ ൺֱ
  32. w %"QQ։ൃʹదͨ͠ϒϩοΫνΣʔϯωοτϫʔΫෆ଍ w ։ൃ͕༰қ w खؒɾίετ͕͔͔Βͳ͍ w ҆ఆੑɾ࣋ଓੑ ໰୊఺

  33. w %"QQ։ൃ w %"QQ։ൃ࣌ʹ͓͚ΔϒϩοΫνΣʔϯωοτϫʔΫ w %"QQ։ൃ࣌ʹ͓͚ΔεϚʔτίϯτϥΫτͷ࣮ߦ w HFUIPʹ͍ͭͯ ࿩͢͜ͱ

  34. w ਖ਼͘͠ಈ͔͘ͷݕূ w σόοά εϚʔτίϯτϥΫτͷ࣮ߦ

  35. w طଘͷ࣮ߦํ๏ w 5SV⒐FDPOTPMF্͔Βୟ͘ w ϒϥ΢β*%& 3FNJY ্Ͱ࣮ߦ w 8FC

    D63- εϚʔτίϯτϥΫτͷ࣮ߦ
  36. USV⒐Fίϯιʔϧ͔Β࣮ߦ $ truffle migrate $ truffle console truffle> metaCoin =

    MetaCoin.at("0x345c...57e10") truffle> metaCoin.getBalance(web3.eth.coinbase) BigNumber { s: 1, e: 4, c: [ 10000 ] }
  37. $ truffle migrate $ truffle console truffle> metaCoin = MetaCoin.at("0x345c...57e10")

    truffle> metaCoin.getBalance(web3.eth.coinbase) BigNumber { s: 1, e: 4, c: [ 10000 ] } USV⒐Fίϯιʔϧ͔Β࣮ߦ ϝϦοτ ɾ8FC1SPWJEFSʹ ґଘͤͣ࢖͑Δ σϝϦοτ ɾσόοά৘ใ͕֬ೝ͠ ͮΒ͍ ɾ࣮ߦ͕ΊΜͲ͍͘͞
  38. 3FNJY͔Β࣮ߦ

  39. 3FNJY͔Β࣮ߦ ϝϦοτ ɾ(6*͔Β࣮ߦՄೳ ɾσόοά৘ใ͕๛෋ σϝϦοτ ɾ׳Ε͕ඞཁ

  40. w ࣮ߦ͕ΊΜͲ͍͘͞ w ׳Ε͕ඞཁ w σόοά͸ଟ͘ͷ࣌ؒΛऔΔ w ޮ཰Խ͍ͨ͠ ໰୊఺

  41. w %"QQ։ൃ࣌ͷϒϩοΫνΣʔϯωοτϫʔΫ w ։ൃ͠΍͢͞ɺखؒɾίετɺ҆ఆੑɾܧଓੑ w εϚʔτίϯτϥΫτͷ࣮ߦ w σόοά৘ใͷ๛෋͞ɺ؆୯ ·ͱΊ

  42. w %"QQ։ൃ࣌ʹ͓͚ΔϒϩοΫνΣʔϯωοτϫʔΫ w %"QQ։ൃ࣌ʹ͓͚ΔεϚʔτίϯτϥΫτͷ࣮ߦͱσόο ά w HFUIPʹ͍ͭͯ ࿩͢͜ͱ

  43. None
  44. w ϓϥΠϕʔτϒϩοΫνΣʔϯͷߏஙͱӡ༻ͷखؒΛল͘ w ։ൃΛΑΓ༰қʹ w εϚʔτίϯτϥΫτͷ࣮ߦͱσόοάΛ͠΍͘͢͢Δ w σόοάޮ཰޲্ HFUIP͕ղܾ͢Δ͜ͱ

  45. ൺֱ ςετωοτ ϩʔΧϧ Ϋϥ΢υ্ͷ ϓϥΠϕʔτϊʔυ HFUIP ։ൃ͕༰қ ˚ ؆୯ʹΞΫηε ϊʔυࣗ༝౓௿͍

    ̋ νʔϜ։ൃෆ޲͖ ̋ ؆୯ʹΞΫηε ϊʔυࣗ༝౓ߴ͍ ̋ ؆୯ʹΞΫηε ϊʔυࣗ༝౓ߴ͍ खؒ ίετ ˕ खؒෆཁɾແྉ ˕ खؒෆཁɾແྉ ˚ ߏஙͷखؒ ଟগͷίετ ̋ ख͍ؒΒͣ ແྉ͔Β࢖͑Δ ҆ఆੑ ࣋ଓੑ ̋ ˚ DIBJOEBUBͷӬଓ Խ͕Ͱ͖ͳ͍ ˚ ϊʔυӡ༻͕ඞཁ ̋ DIBJOEBUBӬଓԽ ϊʔυӡ༻ෆཁ
  46. ಛ௃ᶃ ϫϯΫϦοΫͰϓϥΠϕʔτϊʔυىಈ

  47. ։ൃ͕༰қ w ͙͢࢖͑Δ w ಠࣗΤϯυϙΠϯτ w 5Yཤྺɺ࣮ߦϩά w ΧελϜىಈ w

    σϑΥϧτΞΧ΢ϯτ w ,FZTUPSF
  48. खؒɾίετ w ߏஙɾӡ༻ͷखؒͳ͠ w جຊແྉ

  49. ҆ఆੑɾ࣋ଓੑ w DIBJOEBUBͷӬଓԽ w ΫϥΠΞϯτߋ৽ w εϖοΫௐ੔

  50. μογϡϘʔυը໘

  51. ಛ௃ᶄ εϚʔτίϯτϥΫτͷ8FCσόοΨʔ

  52. ίϯτϥΫτը໘

  53. ίϯτϥΫτը໘

  54. $-* $ go get github.com/popshootjapan/getho 
 // or
 $ brew

    tap popshootjapan/homebrew-getho $ brew install getho IUUQTHJUIVCDPNQPQTIPPUKBQBOHFUIP
  55. $-* $ getho login
 $ getho nodes nosy-owl-13990 mean-chicken-19748
 


    $ getho upload ./build/contracts/MetaCoin.json -s nosy-owl-13990
 
 $ getho contracts -s nosy-owl-13990 MetaCoin 0x6176e9ec8ab713e3ab4ca415d25f57eea52e3cd6
  56. w ෳ਺ϊʔυىಈ w 1P"PS1P8ͷબ୒ w ແఀࢭ w ΧελϜىಈ w εϖοΫௐ੔

    w αϙʔτ Ξυόϯευ
  57. ͳͥ։ൃπʔϧΛ࡞͍ͬͯΔͷ͔

  58. &UIFSFVNΛੈʹීٴ͍ͤͯͨ͘͞Ίʹ͸ ΑΓྑ͍%"QQ͕ΑΓͨ͘͞Μ ੜ·Εͯ͜ͳ͍ͱ͍͚ͳ͍

  59. ΑΓྑ͍։ൃπʔϧ͕ੜ·ΕΕ͹ ΑΓྑ͍%"QQ͕ੜ·Εͯ͘Δ͸ͣ

  60. ։ൃπʔϧ΋·ͩൃల్্

  61. ͍·͋Δ໰୊Λղܾ͢Δ

  62. HFUIPͷΰʔϧ

  63. %"QQ։ൃπʔϧͷ σϑΝΫτελϯμʔυͱͳͬͯ &UIFSFVNͷൃలʹߩݙ͍ͯ͘͠

  64. ڵຯͷ͋Δ։ൃऀ΍اۀͷํ͕͍·ͨ͠Β ͝࿈བྷ͍ͩ͘͞ʂ EBJTVLF@TBUP!QPQTIPPUDPKQ !TU@ETL

  65. ݄d೔ ϋοΧιϯ։࠵ IUUQTOFVUSJOPDPOOQBTTDPNFWFOU

  66. HFUIPΛΑΓྑ͍ͯ͘͘͠ ஥ؒΛืूͯ͠·͢ʂ

  67. ͋Γ͕ͱ͏͍͟͝·ͨ͠ IUUQTHFUIPJP