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

BitcoinCoreで学ぶブロックチェーン・プログラミング入門

 BitcoinCoreで学ぶブロックチェーン・プログラミング入門

2018年2月24日オープンソースカンファレンス東京にて、日本暗号通貨ユーザ会として発表させていただきました。
今注目を集める暗号通貨ビットコインとその基盤技術ブロックチェーン。
ビットコインもオープンソースでできています。Linuxにインストールして使用するビットコイン公式クライアント
「Bitcoin Core」の扱い方を通して、ビットコイン・ブロックチェーンの仕組みを、基礎から丁寧にアプリケーション
開発へ応用の効くように解説します。

Shu Kobuchi

February 24, 2018
Tweet

More Decks by Shu Kobuchi

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ w খᔹप 4IV,PCVDIJ  w ೥ྸɿY'ࡀʢࠓ೥ͰYࡀʂʂʣ w 04$ͷৗ࿈ w

    ຊۀ͸γεςϜձࣾͷϒϩοΫνΣʔϯ ࣮຿୲౰4& w TIVLPCVDIJ w !TIV@LPC &UIFSFVNൃ໌ऀ 7JUBMJL#VUFSJOͱ  ౦ژϏοτίΠϯϛʔτΞοϓʹͯ
  2. ίϛϡχςΟͷ঺հ w ೔ຊ҉߸௨՟Ϣʔβձɿ҉߸௨՟ɾϒϩοΫνΣʔϯٕज़Λษڧ͢ΔͨΊͷΤϯδχΞί ϛϡχςΟ w DPOOQBTTʮ҉߸௨՟ಡॻձʗษڧձʯ
 IUUQTDSZQUPDVSSFODZDPOOQBTTDPN
 ฏ೔໷ʙ౎۠಺Ͱಡॻձ݄̍ճɺษڧձ݄̍ճʢ༵೔΍৔ॴͷݻఆͳ͠ʣ
 ˙ಡॻձʮ҉߸௨՟ྠಡձʯ8IJUF1BQFS ӳޠ࿦จ

    Λߨࢣ͕೔ຊޠͰղઆɿதʙ্ڃऀ޲ ͚
 ˙ษڧձʮϏοτίΠϯͱ͔ษڧձʯ҉߸௨՟ٕज़Λߨࢣ͕ղઆɿॳ৺ऀʙதڃऀ޲͚
 ˞྆ํͱ΋ొஃऀืूதʂ w :PV5VCFʢษڧձͷΞʔΧΠϒΛࢹௌՄೳʣ
 IUUQTXXXZPVUVCFDPNDIBOOFM6$ZFX;.DZ-R2;J&#WO;RX w DSBTIBDBEFNZʢϏοτίΠϯͱ͔ษڧձΞʔΧΠϒ͕ܝࡌʣ
 IUUQTDSBTIBDBEFNZMFDUVSFSDSZQUPDVSSFODZ
  3. #JUDPJO͋Β·͠ w ೥ʹ4BUPTIJ/BLBNPUP ਖ਼ମෆ໌ ʹΑͬͯߟҊ͞Εɺ೥ ݄ʹՔಇ࢝͠Ίͨ11ిࢠΩϟογϡγεςϜ w #JUDPJO"1FFSUP1FFS&MFDUSJD$BTI4ZTUFN
 IUUQTCJUDPJOPSHCJUDPJOQEG w

    φΧϞτ࿦จ೔ຊޠ༁ʢෳ਺͋Γʣ
 IUUQLPHBSBTIJOFUQJUDICMFOEFXQDPOUFOUVQMPBET #JUDPJO8IJUFQBQFS+BQBOFTFQEG w ۚ༥ػؔͷΑ͏ͳ৴པͰ͖ΔୈࡾऀػؔΛඞཁͱͤͣɺར༻ऀ͔Βར ༻ऀ΁௚઀ΦϯϥΠϯͰࢧ෷͍͕Ͱ͖Δ
 㱺044ͷد෇ʹ΋࢖͑ͳ͍͔ʁ
  4. ࠷ॳͷίϚϯυ w CJUDPJOE
 Ͱىಈ w CJUDPJOEUFTUOFUUYJOEFYEBFNPO
 ΦϓγϣϯΛ͚ͭͯىಈͰ͖Δ w CJUDPJODMJUFTUOFUTUPQ w

    UFTUOFU։ൃ༻ͷແՁ஋ͳϏοτίΠϯωοτϫʔΫ
 UYJOEFYશτϥϯβΫγϣϯΛऔಘʢ༰ྔ͸େ͖͘ͳΔʣ EBFNPOόοΫάϥ΢ϯυىಈ
 ଞʹ΋༷ʑͳΦϓγϣϯ
  5. CJUDPJOEͱCJUDPJODMJ w #JUDPJO$PSFͰͳͯ͘΋ϓϩτίϧ͕߹͑͹#JUDPJOωοτϫʔΫʹࢀՃͰ͖Δ CJUDPJOE CJUDPJODMJ CJUDPJOE CJUDPJODMJ CJUDPJOE CJUDPJODMJ 11௨৴

    11௨৴ 3FRVFTU 3FTQPOTF +40/31$ 8FCαʔϏε #JUDPJO$PSF #JUDPJO$PSF #JUDPJO$PSF τϥϯβΫγϣϯ ϒϩοΫΛ όέπϦϨʔ
  6. ಉظͷ֬ೝ w CJUDPJODMJHFUCMPDLDIBJOJOGP
 ʜ
 CMPDLT 
 IFBEFST 
 ʜ w

    CMPDLT͕ࣗ෼ͷϊʔυͰಉظ͍ͯ͠Δ࠷৽ϒϩοΫ
 IFBEFST͕ωοτϫʔΫ্ͰΘ͔ͬͨ࠷৽ϒϩοΫ w ࠷৽ϒϩοΫ·Ͱಉظ͠ͳ͍ͱ࢖͑ͳ͍ίϚϯυ΋͋Δ
  7. 5SBOTBDUJPO 59 ߏ଄ 59*%444 O ଠ࿠ͷΞυϨε"Ѽ #5$ 59*%""" O ՖࢠͷΞυϨε(Ѽ

    #5$ 59*%""" O ଠ࿠ͷΞυϨε$Ѽ #5$ */ */ 065 065 59*%""" 59*%### 59*%9:; O ଠ࿠ͷΞυϨε"Ѽ #5$ 59*%""" O ՖࢠͷΞυϨε(Ѽ #5$ ωοτϫʔΫख਺ྉ #5$ 59*%### O ೋ࿠ͷΞυϨε1Ѽ #5$ 59*%### O ՖࢠͷΞυϨε)Ѽ #5$ ωοτϫʔΫख਺ྉ #5$ ΞυϨεʹରԠ͢Δ ൿີ伴͕͋Ε͹6590 ͷϩοΫΛղআͯ͠ ࢖༻Մೳ 59*%333 O ଠ࿠ͷΞυϨε#Ѽ #5$ 59*%""" O ߒࢠͷΞυϨε'Ѽ #5$ ͓௼ΓΛࣗ෼Ѽʹ
  8. ࢒ߴͷදݱ w ଠ࿠ͷΞυϨε"͕͍͘Β͍࣋ͬͯΔ͔͸֤ϊʔυͷ୆ாʹه࿥͞Ε͍ͯ Δ w ଠ࿠͸ΞυϨε̍ͭͱ͸ݶΒͳ͍ w ࢒ߴ͸6590ͷ͔͖ूΊͰදݱ
 ଠ࿠ͷΞυϨε"ʹ ɺΞυϨε#ʹ

    #5$
 ଠ࿠ͷ߹ܭ͸#5$ w ൿີ伴Λ͍࣋ͬͯΔͱॴ༗͍ͯ͠Δͱݴ͑Δ w ٯʹ͍͏ͱɺൿີ伴͕Θ͔Βͳ͘ͳΔͱฆࣦ w ୭͔ʹ஌ΒΕΔͱɺ౪·ΕΔՄೳੑ
  9.  DFGGE DEBE DEDDD FBG લͷϒϩοΫϔομ ϒϩοΫਤղ w ϒϩοΫϔομͷϋογϡΛφϯεΛͲΜͲΜม͑ͯܭࢉʢϚΠχϯάʣ
 DFGGEDEBEDEDDDFBG

    w ಄ʹ͕࿈ଓ͢ΔϋογϡΛݟ͚ͭΔͷ͸ࠔ೉ʢ֬཰తʹͱͯ΋খ͍͞΋ͷΛݟ͚ͭΔʣ
 ໿෼ʹ̍ݸͷϒϩοΫ͕Ͱ͖ΔΑ͏ʹ಄ͷͷܻ਺Λ໿̎िؒ͝ͱʹௐ੔ w ిؾ୅͕όΧΈ͍ͨʹ͔͔Δ w 1SPPGPG8PSLʢ࡞ۀূ໌ʣʹΑΓɺվ͟Μ͢Δʹ΋๲େͳܭࢉΛ΍Γ௚͞ͳ͍ͱ͍͚ͳ͍
 㱺ɹ଱վ͟Μੑ͕͋Δ w ϚΠφʔʹΑΔϚΠχϯάڝ૪Ͱɺ̍ϒϩοΫੜ੒Ͱݱࡏ#5$ͱؚ·ΕΔ59ͷख਺ྉશ෦͕ใु w վ͟Μ͢Δʹ΋͔͔ۚΔ͠ɺյ͢ΑΓ΋ਖ਼͍͠खॱͰϒϩοΫΛ࡞ͬͨํ͕Ṷ͔Δ
 ΠϯηϯςΟϒΛ༻͍ͯɺߦಈܦࡁֶతʹγεςϜ͕ҡ࣋͞ΕΔ࢓૊Έ લϒϩοΫϔομ ͷϋογϡ ࡞੒͢ΔϒϩοΫ λΠϜελϯϓ φϯε ύϥϝʔλ 59ͷ୅ද஋ ϚʔΫϧϧʔτ ͻͨ͢Βม͑Δ ϋογϡܭࢉ
  10. ϒϩοΫͰঝೝ w ϒϩοΫʹ59͕औΓࠐ·ΕΔͱɺ$POpSNBUJPO ঝೝ ͞Ε ͨͱݴΘΕΔ w डऔਓ͸ड͚औͬͨ59͕ঝೝ͞ΕΔͱૹۚऀͷೋॏ࢖༻ͷ ϦεΫ͕ͳ͘ͳΔ w

    ٯΛݴ͏ͱɺϒϩοΫʹऔΓࠐ·Εͨͱ͍͏͜ͱ͸6590 ͕࢖༻ࡁΈʹͳͬͨͱ͍͏͜ͱ͕޿ใ͞ΕΔ w ࢖༻ࡁΈʹͳͬͨ͜ͱΛΈΜͳʹ஌ΒͤΔ͜ͱʹΑΓɺೋ ॏࢧ෷͍Λ๷͙
  11. ίϛϡχςΟͷ঺հ ࠶ܝ w ೔ຊ҉߸௨՟Ϣʔβձɿ҉߸௨՟ɾϒϩοΫνΣʔϯٕज़Λษڧ͢ΔͨΊͷΤϯδχΞί ϛϡχςΟ w DPOOQBTTʮ҉߸௨՟ಡॻձʗษڧձʯ
 IUUQTDSZQUPDVSSFODZDPOOQBTTDPN
 ฏ೔໷ʙ౎۠಺Ͱಡॻձ݄̍ճɺษڧձ݄̍ճʢ༵೔΍৔ॴͷݻఆͳ͠ʣ
 ˙ಡॻձʮ҉߸௨՟ྠಡձʯ8IJUF1BQFS

    ӳޠ࿦จ Λߨࢣ͕೔ຊޠͰղઆɿதʙ্ڃऀ޲ ͚
 ˙ษڧձʮϏοτίΠϯͱ͔ษڧձʯ҉߸௨՟ٕज़Λߨࢣ͕ղઆɿॳ৺ऀʙதڃऀ޲͚
 ˞྆ํͱ΋ొஃऀืूதʂ w :PV5VCFʢษڧձͷΞʔΧΠϒΛࢹௌՄೳʣ
 IUUQTXXXZPVUVCFDPNDIBOOFM6$ZFX;.DZ-R2;J&#WO;RX w DSBTIBDBEFNZʢϏοτίΠϯͱ͔ษڧձΞʔΧΠϒ͕ܝࡌʣ
 IUUQTDSBTIBDBEFNZMFDUVSFSDSZQUPDVSSFODZ
  12. ϒϩοΫνΣʔϯ͸طଘͷ%# ͱԿ͕ҧ͏ʁ w %#͸੩తͳσʔλ͕อଘ͞Ε͍ͯΔ w ϒϩοΫνΣʔϯ͸ঢ়ଶมԽΛه࿥͢Δʢಈతʣ w #JUDPJOͷτϥϯβΫγϣϯ ҎԼɺ59 ͸ෳࣜ฽هܗࣜ

    w %#Ͱ΋ಈతͳมԽΛه࿥͢Δ͜ͱ͸͋Δʢ؂ࠪͷͨΊͷϩάɿࣾһ ͷଠ࿠͕ސ٬Ֆࢠ͞ΜͷॅॴΛz࡛ۄݝʜz͔Βz౦ژ౎ʜzʹߋ৽͠ ͨʣ w %#ͷϨίʔυʹߋ৽લͷ஋ΛೖΕΔઃܭ΋͋Δ w ϒϩοΫνΣʔϯ͸؂ࠪΛ༰қʹ͢Δ