Slide 1

Slide 1 text

3VCZPO3BJMTͰ #JUDPJO"QQ։ൃ௒ೖ໳ ೥݄೔ ۚ !(PUBOEBSC খᔹप 4IV,PCVDIJ

Slide 2

Slide 2 text

ࣗݾ঺հ খᔹपɹ4IV,PCVDIJɹ!TIV@LPCTIVLPCVDIJ ·Ͱͣͬͱؔ੢ ʙલ৬ͷ4*FSͰେࡕ͔Β౦ژసۈ େ࡚ ʙϑϨηοπ จژ۠ຊڷ w ҉߸ࢿ࢈औҾۀऀ޲͚΢ΥϨοτϕϯμʔ ඼઒۠೥ͪΐͬͱࡏॅɺίϩφͰϑϧϦϞʔτʹɹ 2

Slide 3

Slide 3 text

ίϛϡχςΟ঺հ ೔ຊ҉߸௨՟ϢʔβձɹIUUQTDSZQUPDVSSFODZDPOOQBTTDPN ʮϏοτίΠϯͱ͔ษڧձʯʢ݄̍ճɿฏ೔໷ʣ w ۚ ʙɹDMJHIUOJOH -JHIUOJOH/FUXPSL ϋϯζΦϯ ʮ҉߸௨՟ಡॻձʯʢ݄̍ճɿฏ೔໷ʣ w ࣍ճௐ੔த ΞʔΧΠϒಈը΋ଟ਺͋Γ·͢ 3

Slide 4

Slide 4 text

ϏοτίΠϯͱ͔ ϒϩοΫνΣʔϯ ษڧͯ͠Έ͍ͨΜ͚ͩͲͶ

Slide 5

Slide 5 text

ϏοτίΠϯͱ͔ ϒϩοΫνΣʔϯ ษڧͯ͠Έ͍ͨΜ͚ͩͲͶ Α͘ฉ͘ηϦϑͰ͢

Slide 6

Slide 6 text

ϏοτίΠϯΛֶͿʹ͸ 5FTUOFUରԠ΢ΥϨοτΛೖΕͯɺ5FTUOFUίΠϯΛૹۚͯ͠༡ΜͰΈΔ -JOVYଟগͳΓͱ΋৮ΕΔͳΒ
 #JUDPJO$PSF CJUDPJOE ΛΠϯετʔϧͯ͠ίϚϯυΛୟ͍ͯΈΔ ϓϩάϥϛϯάଟগͳΓͱ΋Ͱ͖ΔͳΒ
 #JUDPJO$PSFͷίϚϯυΛϥοϐϯά͢ΔΞϓϦΛ։ൃ 6 .BJOOFU 5FTUOFU 3FHUFTU ελϯυΞϩϯ

Slide 7

Slide 7 text

#JUDPJOͱ3VCZϥΠϒϥϦͱॻ੶ #JUDPJO$PSFʢ$ʣ IUUQTHJUIVCDPNCJUDPJOCJUDPJO CJUDPJOSCʢ3VCZϥΠϒϥϦʣ IUUQTHJUIVCDPNDIBJOUPQFCJUDPJOSC PQFOBTTFUTSCʢ3VCZϥΠϒϥϦʣ IUUQTHJUIVCDPNDIBJOUPQFPQFOBTTFUTSC ଞʹ΋ϒϩοΫνΣʔϯ3VCZϥΠϒϥϦଟ਺ IUUQTHJUIVCDPNDIBJOUPQF ॻ੶ʮϒϩοΫνΣʔϯɾϓϩάϥϛϯάԾ૝௨՟ೖ໳ʯ CJUDPJOSVCZCJUDPJOSC͕ޙܧ PQFOBTTFUTSVCZPQFOBTTFUTSC͕ޙܧ վగ༧ఆ 7

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

CJUDPJODMJίϚϯυ IUUQTHJUIVCDPNTIVLPCSBJMTCJUDPJOSBJMTCJUDPJO
 ΛࢀߟʹCJUDPJOEΛΠϯετʔϧ CJUDPJODMJHFUOFXBEESFTT
 UCRDB[E[GSYZHVSWFEQSHE[XXGQ[YFKSB CJUDPJODMJTFOEUPBEESFTT UCRDB[E[GSYZHVSWFEQSHE[XXGQ[YFKSB
 GDCBFECDCCFCDBCEGFFFG DF⒎EE CJUDPJODMJHFUSBXUSBOTBDUJPO GDCBFECDCCFCDBCEGFFFG DF⒎EE 9

Slide 10

Slide 10 text

CJUDPJODMJͱCJUDPJO31$ϝιουͷରԠ CJUDPJODMJHFUOFXBEESFTT
 UCRDB[E[GSYZHVSWFEQSHE[XXGQ[YFKSB CJUDPJODMJTFOEUPBEESFTT UCRDB[E[GSYZHVSWFEQSHE[XXGQ[YFKSB
 GDCBFECDCCFCDBCEGFFFG DF⒎EE CJUDPJODMJHFUSBXUSBOTBDUJPO GDCBFECDCCFCDBCEGFFFG DF⒎EE 10 bitcoinRPC('getnewaddress',[]) bitcoinRPC('sendtoaddress',[address, amount]) bitcoinRPC('getrawtransaction',[txid])

Slide 11

Slide 11 text

DPOUSPMMFS SBJMTOFXCJUDPJO@BQQ BQQDPOUSPMMFSTCJUDPJO@BQQ@DPOUSPMMFSSC 11 require 'bitcoin' require 'net/http' require 'json' Bitcoin.chain_params = :regtest RPCUSER="hoge" RPCPASSWORD="hoge" HOST="localhost" PORT=18443 class BitcoinAppController < ApplicationController def index @blockchaininfo = bitcoinRPC('getblockchaininfo',[]) render template: ‘bitcoin_app/index' end private def bitcoinRPC(method,param) http = Net::HTTP.new(HOST, PORT) request = Net::HTTP::Post.new('/') request.basic_auth(RPCUSER,RPCPASSWORD) request.content_type = 'application/json' request.body = {method: method, params: param, id: 'jsonrpc'}.to_json JSON.parse(http.request(request).body)["result"] end end end bitcoinRPC('getblockchaininfo',[])

Slide 12

Slide 12 text

WJFXͱSPVUFT BQQWJFXTCJUDPJO@BQQJOEFYIUNMFSC 12 DPOpHSPVUFTSC <%= @blockchaininfo %> Rails.application.routes.draw do get '/', to: 'bitcoin_app#index' get '/index', to: 'bitcoin_app#index' end SBJMTT

Slide 13

Slide 13 text

։ൃྫ ϒϩοΫϋογϡɺϒϩοΫߴɺτϥϯβΫγϣϯ*%ɺΞυϨεͱ͍͏छྨ Λݕࡧ૭ͭͰ͞͹͍͍ͯΔ ܧଓ։ൃதɿIUUQTHJUIVCDPNTIVLPCSBJMTCJUDPJO 13

Slide 14

Slide 14 text

ࢀߟࢿྉ

Slide 15

Slide 15 text

ϒϩοΫνΣʔϯΤΫεϓϩʔϥ ༷ʑͳ։ൃݩ͔ΒϒϩοΫνΣʔϯΤΫεϓϩʔϥ͕ఏڙ͞Ε͍ͯΔ IUUQTCMPDLTUSFBNJOGP IUUQTHJUIVCDPNCMPDLTUSFBNFTQMPSB w #MPDLTUSFBNFTQMPSB͸044ʢ3VCZͰ͸ͳ͍ʣ 15

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

ΞϦε͕Ϙϒʹ#5$ΛૹΔ Ҏલड͚औֹ͍ͬͯͨΛ߹ࢉͯ͠ɺ૬खʹૹΓɺ͓௼Γ͸ࣗ෼΁ 59தʹهࡌͷͳֹ͍ ͜͜Ͱ͸#5$ ͸ޙʹϚΠφʔ΁ τϥϯβΫγϣϯ5SBOTBDUJPO59 18 ΞϦε Ϙϒ 5SBOTBDUJPO 59 */165 065165 ΞϦε Ωϟϩϧ ΞϦεˠϘϒ #5$ ΩϟϩϧˠΞϦε #5$ ΞϦεˠΞϦε ͓௼Γ #5$ #5$ σϏοτˠΞϦε #5$ #5$ σϏοτ ܭ#5$ ܭ#5$ ϚΠφʔ ωοτϫʔΫख਺ྉ #5$ ˞59ʹهࡌ͸ͳ͍ ൿີ伴Λࠩ͠ࠐΜͰ ϩοΫղআɿిࢠॺ໊ ΞϦεͷ ൿີ伴 ΞϦεͷ ൿີ伴 ΞϦεͷ ެ։伴 Ϙϒͷ ެ։伴 ΞϦεͷ ެ։伴 ΞϦεͷ ެ։伴

Slide 19

Slide 19 text

τϥϯβΫγϣϯ৘ใ ໘౗ HFUUYUYJEͷΑ͏ͳײ͡ͰUYJEΛΫΤϦʹ CJUDPJODMJHFUSBXUSBOTBDUJPOUYJE SFTQPOTFSBXUSBOTBDUJPO CJUDPJODMJEFDPEFSBXUSBOTBDUJPOSBXUSBOTBDUJPO SFTQPOTFͷதʹ͸PVUQVUͷΞυϨεɾૹֹۚ͸ؚ·ΕΔ͕ɺJOQVUͷΞυ Ϩεɾֹ΍ख਺ྉ͸ؚ·Εͳ͍ w CJUDPJODMJHFUUSBOTBDUJPOUYJEͩͱڭ͑ͯ͘ΕΔ͕ɺ#JUDPJO$PSF ࣗ਎ͷXBMMFU಺ͷUYͷΈ JOQVU෦ WJO ͷUYJE WPVU͔ΒHFUSBXUSBOTBDUJPO EFDPEFSBXUSBOTBDUJPOͰJOQVUͷΞυϨεͱֹΛٻΊΔ ख਺ྉʹJOQVU෦ͷ߹ܭֹʔPVUQVU෦ͷ߹ܭֹ 19

Slide 20

Slide 20 text

τϥϯβΫγϣϯͷঝೝ਺ɺ࢖༻ࡁ EFDPEFSBXUSBOTBDUJPOSBXUSBOTBDUJPOͷ3FTQPODFʹ͸ϒϩοΫঝೝ਺ ͸ؚ·Ε͍ͯͳ͍ CJUDPJODMJHFUCMPDLDIBJOJOGPͰ࠷৽ͷϒϩοΫߴΛऔಘ ࠷৽ͷϒϩοΫߴ͔Β߱ॱʹHFUCMPDLIBTI HFUCMPDLͰϒϩοΫ಺ͷUYJEΛ ݟ͍͖ͯɺର৅ͷUYΛؚΉϒϩοΫ͔Βঝೝ਺ΛಘΔ CJUDPJODMJHFUUYPVUUYJEWPVU͕ଘࡏ͢Ε͹ະ࢖༻ɺͳ͚Ε͹࢖༻ࡁ 20

Slide 21

Slide 21 text

औΓѻ͍஫ҙͷ59 $PJOCBTF59ͷ*OQVU WJOʹUYJE͕ͳ͍ͳͲͯ͠൑ผ (FOFTJT#MPDLͷ59 CJUDPJODMJHFUSBXUSBOTBDUJPOUYJEͰऔಘͰ͖ͳ͍ ϋʔυίʔσΟϯά͞Εͨ59 59*% BFFCBBCGBBDCDGGFDDBCCBGE FEBC ͜ͷ59*%͸.BJOOFU 5FTUOFU 3FHUFTU 4JHOFUڞ௨ 21

Slide 22

Slide 22 text

ΞυϨε৘ใ HFUBEESFTTBEESFTTͷΑ͏ͳײ͡ͰBEESFTTΛΫΤϦʹ ͓޷ΈͰCJUDPJODMJWBMJEBUFBEESFTTBEESFTTͰ༗ޮͳΞυϨε͔Ͳ͏͔ CJUDPJODMJHFUSBXNFNQPPMͰNFNQPPMͷUYJEΛऔಘ CJUDPJODMJHFUCMPDLDIBJOJOGPͰ࠷৽ͷϒϩοΫߴΛऔಘ ࠷৽ͷϒϩοΫߴ͔Β߱ॱʹHFUCMPDLIBTI HFUCMPDLͰϒϩοΫ಺ͷUYJEΛ औಘ HFUSBXUSBOTBDUJPOUYJE EFDPEFSBXUSBOTBDUJPOSBXUSBOTBDUJPOͰ WPVUʹΞυϨε͕͋Δ͔ΛݟΔ WJOͷUYJE΋HFUSBXUSBOTBDUJPOUYJE EFDPEFSBXUSBOTBDUJPO SBXUSBOTBDUJPOͰWPVUʹΞυϨε͕͋Δ͔ΛݟΔ ΞυϨεʹؔ܎͋Δ59ͷ৘ใΛ࣌ܥྻͷ߱ॱʹฒ΂Δ NFNQPPMͷ59͕Ұ൪্ ঝೝ਺ͳͲ͸τϥϯβΫγϣϯҰཡΛࢀߟʹ 22

Slide 23

Slide 23 text

ΞυϨε৘ใ CJUDPJODMJHFUUYPVUUYJEWPVU͕ଘࡏ͢Ε͹ະ࢖༻ɺͳ͚Ε͹࢖༻ࡁ ະ࢖༻ͷ6590Λ͔͖ूΊͯ࢒ߴܭࢉ͕Մೳ $PJOCBTF59͸ঝೝ͠ͳ͍ͱ࢖͑ͳ͍ ΞυϨεҰཡը໘ͰΞυϨεʹؔ܎͢Δશ59ͷঝೝ਺·ͰٻΊ͍ͯͨΒॲཧ ͕ऴΘΒͳ͍ʢۤসʣ3FHUFTUͰ΋ ͦΖͦΖ%#ͷग़൪ 23

Slide 24

Slide 24 text

ݕࡧ ϒϩοΫϋογϡɺϒϩοΫߴɺ59*%ɺΞυϨεͰͷݕࡧϑΟʔϧυ QPTU ύϥϝʔλͷαΠζ͕ͷ৔߹ ϒϩοΫϋογϡ͔59*% BFFCBBCGBBDCDGGFDDBCC BGEFEBCͷ৔߹͸ɺ(FOFTJTϒϩοΫͷ59*% HFUSBXUSBOTBDUJPOUYJEͰϨεϙϯε͕͋Ε͹59 HFUCMPDLIBTICMPDLIBTIͰϨεϙϯε͕͋Ε͹ϒϩοΫ ύϥϝʔλͷαΠζ͕ɺ .BJOOFUɾ4JHOFUCFDI ɾ 5FTUOFUɾ 3FHUFTU CFDI ͷ͍ͣΕ͔ͷ৔߹͸ΞυϨε ύϥϝʔλ͕਺஋ͷ৔߹ɺϒϩοΫߴ HFUCMPDLIBTIQBSBNTͰϨεϙϯε͕͋Ε͹ɺϒϩοΫ ͦΕͧΕɺϒϩοΫ৘ใɺτϥϯβΫγϣϯ৘ใɺΞυϨε৘ใͷؔ਺ʹ SFEJSFDU ͍ͣΕͰ΋ͳ͍৔߹OPUGPVOEը໘ 24