Bitcoin CoreとRuby on Railsでブロックチェーンエクスプローラ開発

Bitcoin CoreとRuby on Railsでブロックチェーンエクスプローラ開発

ビットコインとか勉強会第40回で、Bitcoin Core、bitcoinrb、Ruby on Railsでブロックチェーンエクスプローラ開発したことをLTで発表しました。
https://cryptocurrency.connpass.com/event/172580/

D3e027f453bb96ac1398cc98620f2920?s=128

Shu Kobuchi

April 28, 2020
Tweet

Transcript

  1. ϒϩοΫνΣʔϯ ΤΫεϓϩʔϥ։ൃೖ໳ ೥݄೔ Ր !ϏοτίΠϯͱ͔ษڧձ ೔ຊ҉߸௨՟Ϣʔβձɹখᔹप 4IV,PCVDIJ

  2. ࣗݾ঺հ খᔹपɹ4IV,PCVDIJɹ!TIV@LPCTIVLPCVDIJ ෱Ԭݝ൧௩ࢢੜ·Εɹฌݿݝ੢ٶࢢɾๅ௩ࢢҭͪ ਆށେֶւࣄՊֶ෦ଔۀ ಸྑઌ୺Պֶٕज़େֶӃେֶ৘ใՊֶݚڀՊम࢜ྃ ৽ଔͰՈిϝʔΧʔͰιϑτ΢ΣΞ։ൃ ͦͷޙ4*FSͰͷडୗ։ൃ౳ લ൒େࡕͷϕϯνϟʔͰ#JUDPJO8FC8BMMFUࢼ࡞඼։ൃ ʙ*5ϕϯμʔͷେࡕࢧࣾʹೖࣾ͠4& ʙϒϩοΫνΣʔϯͷاը౳ਪਐͷͨΊ౦ژຊࣾసۈ

    ʙϑϨηοπ w Ծ૝௨՟ࣄۀऀ޲͚΢ΥϨοτ։ൃͷޙɺݱࡏ͸อकɾӡ༻Λ୲౰ 2
  3. ίϛϡχςΟ঺հ ೔ຊ҉߸௨՟ϢʔβձɹIUUQTDSZQUPDVSSFODZDPOOQBTTDPN ʮϏοτίΠϯͱ͔ษڧձʯʢ݄̍ճɿฏ೔໷ʣ w ࣍ճௐ੔தʢ-JHIUOJOH/FUXPSLͷ༧ఆʣ ʮ҉߸௨՟ಡॻձʯʢ݄̍ճɿฏ೔໷ʣ w ࣍ճௐ੔த DSBTIBDBEFNZ *5ܥಈը഑৴

    ϏοτίΠϯͱ͔ษڧձͷΞʔΧΠϒ഑৴
 IUUQTDSBTIBDBEFNZDPNNVOJUZDSZQUPDVSSFODZ :PV5VCFνϟϯωϧʢษڧձʗಡॻձʣIUUQCJUMZZPVUVCFDDTUVEZ 3
  4. ͶΒ͍ ϒϩοΫνΣʔϯ߹ಉࢽʹدߘͨ͠ʮ3VCZPO3BJMTͰϒϩοΫνΣʔϯΤΫ εϓϩʔϥΛ։ൃ͢Δʯ಺༰ͷଓ͖Λ࿩͍͖͍ͯͨ͠ͱࢥ͍·͢ ϒϩοΫνΣʔϯΤΫεϓϩʔϥ͸044Ͱ΋͋Γɺ3FHUFTUʹ΋స༻ՄೳͰ͢ ͕ɺࠓճ͝঺հ͢Δ಺༰͸ֶश༻ʹ࡞͍ͬͯΔ΋ͷͰ͢ #JUDPJO$PSFΛSFHUFTUϞʔυͰىಈ͠ɺ%#ͳ͠ͷϒϩοΫνΣʔϯΤΫε ϓϩʔϥ8FCΞϓϦέʔγϣϯΛ։ൃ͍ͯ͠·͢ %#ͳͩ͠ͱɺࠓͷ4JHOFUͰ΋ରԠ͸ՄೳͰ͕͢ɺ.BJOOFUɺ5FTUOFUͩͱ%# ͳ͍ͱݫ͍͠Ͱ͢ʢશϒϩοΫɺશ59ΛݟΕΔ৔߹ʣ 3VCZPO3BJMTʹݶΒͣɺϒϩοΫνΣʔϯΤΫεϓϩʔϥ΍ଞͷΞϓϦέʔ

    γϣϯ։ൃͷ͓໾ʹཱͯΕ͹޾͍Ͱ͢ɻ IUUQTHJUIVCDPNTIVLPCSBJMTCJUDPJO 4
  5. ϒϩοΫνΣʔϯΤΫεϓϩʔϥ ༷ʑͳ։ൃݩ͔ΒϒϩοΫνΣʔϯΤΫεϓϩʔϥ͕ఏڙ͞Ε͍ͯΔ IUUQTCMPDLTUSFBNJOGP IUUQTHJUIVCDPNCMPDLTUSFBNFTQMPSB w #MPDLTUSFBNFTQMPSB͸044 5

  6. ؆୯ͳγεςϜਤ CJUDPJOͷ3VCZϥΠϒϥϦʮCJUDPJOSCʯΛ༻͍ͯ#JUDPJO$PSFͱ+TPO31$ "1*Λ༻͍Δ 6 #FSLFMZ %# /P42- #JUDPJO$PSF 3VCZPO3BJMT CJUDPJOSC

    ϥΠϒϥϦ DPOUSPMMFS 31$3FRVFTU +40/3FTQPOTF WJFX
  7. ϒϩοΫҰཡ ϒϩοΫνΣʔϯΤΫεϓϩʔϥͷτοϓ͸ϒϩοΫҰཡͰ͋Δ͜ͱ͕ଟ͍ τοϓͷϒϩοΫҰཡ͕JOEFYʹ͢Δ ϧʔςΟϯά΋ઃఆ CJUDPJODMJHFUCMPDLDIBJOJOGPͰ࠷৽ϒϩοΫߴΛऔಘ ࠷৽ϒϩοΫߴ͔Β߱ॱʹ CJUDPJODMJHFUCMPDLIBTICMPDLIFJHIUͰϒϩοΫϋογϡΛಘͯɺ CJUDPJODMJHFUCMPDLCMPDLIBTIͰϒϩοΫͷத਎ΛಘΔ ϒϩοΫͷ਺͕ଟ͘ͳͬͨΒɺϖʔδωʔγϣϯΛೖΕΔ 7

  8. ϒϩοΫͷ৘ใ ؆୯ HFUCMPDLCMPDLIBTIͷΑ͏ͳײ͡ͰΫΤϦʹϒϩοΫϋογϡ CJUDPJODMJHFUCMPDLCMPDLIBTI Ϩεϙϯεͷ+TPOΛ7JFXʹૹΓ͜ΜͰඞཁͳσʔλΛදࣔ HFUCMPDLͷ͍͍ͱ͜Ζ͸ঝೝ਺΍࣍ͷϒϩοΫϋογϡ΋ؚΊͯڭ͑ͯ͘ΕΔ ΋ͪΖΜલͷϒϩοΫϋογϡ΋ 8

  9. ΞϦε͕Ϙϒʹ#5$ΛૹΔ Ҏલड͚औֹ͍ͬͯͨΛ߹ࢉͯ͠ɺ૬खʹૹΓɺ͓௼Γ͸ࣗ෼΁ 59தʹهࡌͷͳֹ͍ ͜͜Ͱ͸#5$ ͸ޙʹϚΠφʔ΁ τϥϯβΫγϣϯ5SBOTBDUJPO59 9 ΞϦε Ϙϒ 5SBOTBDUJPO

    59 */165 065165 ΞϦε Ωϟϩϧ ΞϦεˠϘϒ #5$ ΩϟϩϧˠΞϦε #5$ ΞϦεˠΞϦε ͓௼Γ  #5$ #5$ σϏοτˠΞϦε #5$ #5$ σϏοτ ܭ#5$ ܭ#5$ ϚΠφʔ ωοτϫʔΫख਺ྉ #5$ ˞59ʹهࡌ͸ͳ͍ ൿີ伴Λࠩ͠ࠐΜͰ ϩοΫղআɿిࢠॺ໊ ΞϦεͷ ൿີ伴 ΞϦεͷ ൿີ伴 ΞϦεͷ ެ։伴 Ϙϒͷ ެ։伴 ΞϦεͷ ެ։伴 ΞϦεͷ ެ։伴
  10. τϥϯβΫγϣϯ৘ใ ໘౗ HFUUYUYJEͷΑ͏ͳײ͡ͰUYJEΛΫΤϦʹ CJUDPJODMJHFUSBXUSBOTBDUJPOUYJE SFTQPOTFSBXUSBOTBDUJPO CJUDPJODMJEFDPEFSBXUSBOTBDUJPOSBXUSBOTBDUJPO SFTQPOTFͷதʹ͸PVUQVUͷΞυϨεɾૹֹۚ͸ؚ·ΕΔ͕ɺJOQVUͷΞυ Ϩεɾֹ΍ख਺ྉ͸ؚ·Εͳ͍ w CJUDPJODMJHFUUSBOTBDUJPOUYJEͩͱڭ͑ͯ͘ΕΔ͕ɺ#JUDPJO$PSF

    ࣗ਎ͷXBMMFU಺ͷUYͷΈ JOQVU෦ WJO ͷUYJE WPVU͔ΒHFUSBXUSBOTBDUJPO  EFDPEFSBXUSBOTBDUJPOͰJOQVUͷΞυϨεͱֹΛٻΊΔ ख਺ྉʹJOQVU෦ͷ߹ܭֹʔPVUQVU෦ͷ߹ܭֹ 10
  11. τϥϯβΫγϣϯͷঝೝ਺ɺ࢖༻ࡁ EFDPEFSBXUSBOTBDUJPOSBXUSBOTBDUJPOͷ3FTQPODFʹ͸ϒϩοΫঝೝ਺ ͸ؚ·Ε͍ͯͳ͍ CJUDPJODMJHFUCMPDLDIBJOJOGPͰ࠷৽ͷϒϩοΫߴΛऔಘ ࠷৽ͷϒϩοΫߴ͔Β߱ॱʹHFUCMPDLIBTI HFUCMPDLͰϒϩοΫ಺ͷUYJEΛ ݟ͍͖ͯɺର৅ͷUYΛؚΉϒϩοΫ͔Βঝೝ਺ΛಘΔ CJUDPJODMJHFUUYPVUUYJEWPVU͕ଘࡏ͢Ε͹ະ࢖༻ɺͳ͚Ε͹࢖༻ࡁ 11

  12. औΓѻ͍஫ҙͷ59  $PJOCBTF59ͷ*OQVU WJOʹUYJE͕ͳ͍ͳͲͯ͠൑ผ  (FOFTJT#MPDLͷ59 CJUDPJODMJHFUSBXUSBOTBDUJPOUYJEͰऔಘͰ͖ͳ͍ ϋʔυίʔσΟϯά͞Εͨ59 59*% BFFCBBCGBBDCDGGFDDBCCBGE

    FEBC ͜ͷ59*%͸.BJOOFU 5FTUOFU 3FHUFTU 4JHOFUڞ௨ 12
  13. ΞυϨε৘ใ HFUBEESFTTBEESFTTͷΑ͏ͳײ͡ͰBEESFTTΛΫΤϦʹ ͓޷ΈͰCJUDPJODMJWBMJEBUFBEESFTTBEESFTTͰ༗ޮͳΞυϨε͔Ͳ͏͔ CJUDPJODMJHFUSBXNFNQPPMͰNFNQPPMͷUYJEΛऔಘ CJUDPJODMJHFUCMPDLDIBJOJOGPͰ࠷৽ͷϒϩοΫߴΛऔಘ ࠷৽ͷϒϩοΫߴ͔Β߱ॱʹHFUCMPDLIBTI HFUCMPDLͰϒϩοΫ಺ͷUYJEΛ औಘ HFUSBXUSBOTBDUJPOUYJE EFDPEFSBXUSBOTBDUJPOSBXUSBOTBDUJPOͰ

    WPVUʹΞυϨε͕͋Δ͔ΛݟΔ WJOͷUYJE΋HFUSBXUSBOTBDUJPOUYJE EFDPEFSBXUSBOTBDUJPO SBXUSBOTBDUJPOͰWPVUʹΞυϨε͕͋Δ͔ΛݟΔ ΞυϨεʹؔ܎͋Δ59ͷ৘ใΛ࣌ܥྻͷ߱ॱʹฒ΂Δ NFNQPPMͷ59͕Ұ൪্ ঝೝ਺ͳͲ͸τϥϯβΫγϣϯҰཡΛࢀߟʹ 13
  14. ΞυϨε৘ใ CJUDPJODMJHFUUYPVUUYJEWPVU͕ଘࡏ͢Ε͹ະ࢖༻ɺͳ͚Ε͹࢖༻ࡁ ະ࢖༻ͷ6590Λ͔͖ूΊͯ࢒ߴܭࢉ͕Մೳ $PJOCBTF59͸ঝೝ͠ͳ͍ͱ࢖͑ͳ͍ ΞυϨεҰཡը໘ͰΞυϨεʹؔ܎͢Δશ59ͷঝೝ਺·ͰٻΊ͍ͯͨΒॲཧ ͕ऴΘΒͳ͍ʢۤসʣ3FHUFTUͰ΋ ͦΖͦΖ%#ͷग़൪ 14

  15. ݕࡧ ϒϩοΫϋογϡɺϒϩοΫߴɺ59*%ɺΞυϨεͰͷݕࡧϑΟʔϧυ QPTU  ύϥϝʔλͷαΠζ͕ͷ৔߹ ϒϩοΫϋογϡ͔59*% BFFCBBCGBBDCDGGFDDBCC BGEFEBCͷ৔߹͸ɺ(FOFTJTϒϩοΫͷ59*% HFUSBXUSBOTBDUJPOUYJEͰϨεϙϯε͕͋Ε͹59 HFUCMPDLIBTICMPDLIBTIͰϨεϙϯε͕͋Ε͹ϒϩοΫ

    ύϥϝʔλͷαΠζ͕ɺ .BJOOFUɾ4JHOFUCFDI ɾ 5FTUOFUɾ 3FHUFTU CFDI ͷ͍ͣΕ͔ͷ৔߹͸ΞυϨε ύϥϝʔλ͕਺஋ͷ৔߹ɺϒϩοΫߴ HFUCMPDLIBTIQBSBNTͰϨεϙϯε͕͋Ε͹ɺϒϩοΫ ͦΕͧΕɺϒϩοΫ৘ใɺτϥϯβΫγϣϯ৘ใɺΞυϨε৘ใͷؔ਺ʹ SFEJSFDU ͍ͣΕͰ΋ͳ͍৔߹OPUGPVOEը໘ 15
  16. ૲Λੜ΍ͦ͏ʢా২͑ʣ ίϩφͰ౔೔ɾฏ೔໷͕ՋʹͳΓɺίʔυΛ ೔ ͔Βຖ೔ॻ͍ͯΈͨ ݸਓ։ൃ͍ͯ͠Δͱ(JU)VCʹ݁ߏ૲ੜ͑Δ ʮా২͑ʯͱ໊෇͚͍ͨXX ܧଓ͸ྗͳΓ (8͸ίʔυॻ͍ͯΈΑ͏ʂ 16

  17. ίϛϡχςΟ঺հ ೔ຊ҉߸௨՟ϢʔβձɹIUUQTDSZQUPDVSSFODZDPOOQBTTDPN ʮϏοτίΠϯͱ͔ษڧձʯʢ݄̍ճɿฏ೔໷ʣ w ࣍ճௐ੔தʢ-JHIUOJOH/FUXPSLͷ༧ఆʣ ʮ҉߸௨՟ಡॻձʯʢ݄̍ճɿฏ೔໷ʣ w ࣍ճௐ੔த DSBTIBDBEFNZ *5ܥಈը഑৴

    ϏοτίΠϯͱ͔ษڧձͷΞʔΧΠϒ഑৴
 IUUQTDSBTIBDBEFNZDPNNVOJUZDSZQUPDVSSFODZ :PV5VCFνϟϯωϧʢษڧձʗಡॻձʣIUUQCJUMZZPVUVCFDDTUVEZ 17