Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Bitcoin Core v0.19とbitcoinrbハンズオン
Shu Kobuchi
December 13, 2019
Programming
1
310
Bitcoin Core v0.19とbitcoinrbハンズオン
ビットコインとか勉強会#36【Bitcoin Core v0.19とbitcoinrbハンズオン】
https://cryptocurrency.connpass.com/event/155804/
Shu Kobuchi
December 13, 2019
Tweet
Share
More Decks by Shu Kobuchi
See All by Shu Kobuchi
ビットコイン・ライトニングネットワーク概論
shukob
0
33
NFTを開発するためのブロックチェーン・スマートコントラクト技術
shukob
1
390
Mastering the Lightning Network 第1章を読む補足資料
shukob
0
140
オープンソースが法定通貨になる!ビットコイン・ライトニングネットワーク入門
shukob
0
350
ビットコイン・ブロックチェーン入門
shukob
0
150
Bitcoin v0.21.0とSignetの使い方
shukob
0
230
Bitcoin Cashハードフォークの 振り返りと関連技術説明
shukob
0
200
ブロックチェーン初心者のためのビットコイン送金体験
shukob
1
200
ビットコイン・ブロックチェーン入門
shukob
2
270
Other Decks in Programming
See All in Programming
FullStack eXchange, July 2022
brucel
0
200
Pluggable Storage in PostgreSQL
sira
1
190
Windows コンテナ Dojo 第5回 OpenShift で学ぶ Kubernetes 入門
oniak3ibm
PRO
0
170
ESM移行は無理だけどおれもSindreのライブラリが使いたい!
sosukesuzuki
2
540
ZOZOTOWNにおけるDatadogの活用と、それを支える全社管理者の取り組み / 2022-07-27
tippy
1
3.2k
アジャイルで始める データ分析基盤構築
nagano
1
890
VIMRC 2022
achimnol
0
130
読みやすいコード クラスメソッド 2022 年度新卒研修
januswel
0
2.9k
WindowsコンテナDojo:第6回 Red Hat OpenShift入門
oniak3ibm
PRO
0
180
More Than Micro Frontends: 3 Further Use Cases for Module Federation @DWX 2022
manfredsteyer
PRO
0
370
Scaling Productivity- How we have improved our dev experience
sockeqwe
1
120
Rに管理されてみる
kazutan
0
250
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
16
8.4k
Raft: Consensus for Rubyists
vanstee
127
5.5k
Infographics Made Easy
chrislema
233
17k
A better future with KSS
kneath
226
16k
Scaling GitHub
holman
451
140k
Code Review Best Practice
trishagee
44
9.7k
Gamification - CAS2011
davidbonilla
75
3.9k
Stop Working from a Prison Cell
hatefulcrawdad
262
17k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.4k
We Have a Design System, Now What?
morganepeng
35
3k
Teambox: Starting and Learning
jrom
123
7.7k
A Philosophy of Restraint
colly
192
15k
Transcript
#JUDPJO$PSFWϨϏϡʔͱ CJUDPJOSCϋϯζΦϯ ݄ ຊ҉߸௨՟Ϣʔβձɹখᔹप 4IV,PCVDIJ
ࣗݾհ খᔹपɹ4IV,PCVDIJɹ!TIV@LPCTIVLPCVDIJ Ԭݝ൧௩ࢢੜ·Εɹฌݿݝٶࢢɾๅ௩ࢢҭͪ ਆށେֶւࣄՊֶ෦ଔۀ ಸྑઌՊֶٕज़େֶӃେֶใՊֶݚڀՊम࢜ྃ ৽ଔͰՈిϝʔΧʔͰιϑτΣΞ։ൃ ͦͷޙ4*FSͰͷडୗ։ൃ લେࡕͷϕϯνϟʔͰ#JUDPJO8FC8BMMFUࢼ࡞։ൃ ʙ*5ϕϯμʔͷେࡕࢧࣾʹೖࣾ͠4& ʙϒϩοΫνΣʔϯͷاըਪਐͷͨΊ౦ژຊࣾసۈ
ʙϑϨηοπͷγχΞιϑτΣΞΤϯδχΞ w Ծ௨՟ࣄۀऀ͚ΥϨοτ։ൃͷޙɺݱࡏอकɾӡ༻Λ୲ 2
ίϛϡχςΟհ ຊ҉߸௨՟ϢʔβձɹIUUQTDSZQUPDVSSFODZDPOOQBTTDPN ʮϏοτίΠϯͱ͔ษڧձʯʢ݄̍ճɿฏʣ w ࣍ճ݄ௐத ʮ҉߸௨՟ಡॻձʯʢ݄̍ճɿฏʣ w ࣍ճ݄ௐத DSBTIBDBEFNZ *5ܥಈը৴
ʹͯϏοτίΠϯͱ͔ษڧձͷΞʔΧΠϒ৴த IUUQTDSBTIBDBEFNZDPNNVOJUZDSZQUPDVSSFODZ :PV5VCFνϟϯωϧʢษڧձʗಡॻձʣIUUQCJUMZZPVUVCFDDTUVEZ 3
(#&$ (P#MPDLDIBJO&OHJOFFSJOH$PNNVOJUZ IUUQTHPCMPDLDIBJOOFUXPSL ίʔυΛॻ͘͜ͱ͚͕ͩ#MPDLDIBJOΛਐԽͤ͞Δ ʮಈըͰֶͿϒϩοΫνΣʔϯʯͳͲίϯςϯπ๛ ݄ ʹ)BTI)VCͰ.FFUVQ 4
ϏοτίΠϯΦʔϓϯιʔε ϏοτίΠϯ #JUDPJO Φʔϓϯιʔε ୭Ͱ։ൃʹࢀՃՄೳʂ IUUQTHJUIVCDPNCJUDPJOCJUDPJO ϏοτίΠϯΛ͡Ίɺ҉߸௨՟ɾϒϩοΫνΣʔϯͷଟ͘044 ٕज़తʹ໘ന͍ʂʂ ϥΠτίΠϯ -JUFDPJO
#JUDPJOͷιʔείʔυ͔ΒϑΥʔΫ IUUQTHJUIVCDPNMJUFDPJOQSPKFDUMJUFDPJO ϞφίΠϯ .POBDPJO -JUFDPJOͷιʔείʔυ͕ϕʔε IUUQTHJUIVCDPNNPOBDPJOQSPKFDUNPOBDPJO ΠʔαϦΞϜ &UIFSFVN Φʔϓϯιʔε IUUQTHJUIVCDPNFUIFSFVNHPFUIFSFVN 5
ΞδΣϯμ #JUDPJO$PSFʹ͍ͭͯগ͠ 3FHUFTUϞʔυͰϋϯζΦϯ #JUDPJO$PSFW CJUDPJOSCϋϯζΦϯ ࣍ճ݄#JUDPJO$PSF CJUDPJOSC 3VCZPO3BJMTͰΞϓϦ։ൃ 6
8JOEPXTͷํͷࣄલ४උ 8JOEPXTͷํ6CVOUVΛΠϯετʔϧ͍ͯͩ͘͠͞ IUUQTXXXNJDSPTPGUDPNKBKQQVCVOUV OCMHHINTW BDUJWFUBCQJWPUPWFSWJFXUBC 6CVOUVͰ࣮ߦ TVEPBQUVQEBUF TVEPBQUVQHSBEF 7
#JUDPJO$PSF #JUDPJOϦϑΝϨϯε࣮ͷϊʔυ ެࣜΫϥΠΞϯτιϑτΣΞ ։ൃݴޠ$ গ͠1ZUIPOೖΔΑ͏ʹ CJUDPJOEͱ͍͏ 8
ϏϧυͱΠϯετʔϧ HJUDMPOFIUUQTHJUIVCDPNCJUDPJOCJUDPJO DECJUDPJO HJUUBH &OUFS͔ˣΩʔͰWΛݟ͚ͭΔ HJUDIFDLPVUW 6CVOUV IUUQTRJJUBDPNLFBDIJUFNTCCDDFG w ʮϏϧυͷલʹґଘ͢ΔQBDLBHFΛΠϯετʔϧʯ͔Βॱ൪ʹ࣮ߦ
.BD IUUQTCMPDLDIBJOKQCJUDPJOJOTUBMMCJUDPJOEPONBD NBLFʹ͕͔͔࣌ؒΔͷͰɺͦͷؒʹઆ໌ 9
ॳظىಈͱऴྃ ىಈ CJUDPJOESFHUFTUUYJOEFYEBFNPO ϒϩοΫνΣʔϯใΛࢀর CJUDPJODMJSFHUFTUHFUCMPDLDIBJOJOGP ఀࢭ CJUDPJODMJSFHUFTUTUPQ ੨ࣈλʔϛφϧʹଧͪࠐΜͰ࣮ߦ͢ΔίϚϯυ 10
CJUDPJODPOG -JOVYͷ߹ DEdCJUDPJO .BDͷ߹ DE6TFST\64&3^-JCSBSZ"QQMJDBUJPO4VQQPSU#JUDPJO OBOPCJUDPJODPOG·ͨWJCJUDPJODPOG ԼهΛίϐϖͯ͠อଘ 11 regtest=1 #
regtestϞʔυ༗ޮԽ txindex=1 # શͯͷTXΛऔಘ(ϑϧϊʔυ) server=1 # RPCΞΫηεՄೳʹ daemon=1 # ίϯιʔϧϩά͕ग़ͳ͍ rpcuser=hoge # RPCΞΫηεϢʔβ rpcpassword=hoge # RPCΞΫηεύεϫʔυ [regtest] # regtest༻ઃఆ rpcport=18332 # RPC༻port port=18333 # ଞͷϊʔυͱ௨৴͢Δport
࠶ىಈͯ͠ίϚϯυΛݟΔ CJUDPJOE CJUDPJODMJIFMQ CJUDPJODMJIFMQHFUCMPDLDIJBOJOGP 12
3FHUFTUϞʔυ 5FTUOFUແՁͳ#JUDPJOͷྲྀ௨͢ΔωοτϫʔΫ 1P8 1SPPGPG8PSL ܕͰϚΠχϯά͍ͯ͠Δ w ϒϩοΫੜִؒฏۉ͕ͩɺ҆ఆ͠ͳ͍ w ٸܹʹૣ͘ͳͬͨಈͰ͘ͳͬͨΓ 3FHUFTU։ൃ༻ͷωοτϫʔΫ
ҙͷλΠϛϯάͰϚΠχϯά͠์ʢίετ̌ʣ w ঝೝͱ͍͏ςετ͙͢ʹͰ͖Δ ωοτͷͳ͍ڥͰ͑Δ ෳܨ͛Δ͜ͱՄೳ w 3FPSHͷςετ؆୯ʹͰ͖Δ w #MPDLXJUIIPMEJOHBUUBDL ηϧϑΟογϡɾϚΠχϯά߈ܸ ؆୯ 13
3FHUFTUϚΠχϯάͱૹۚ CJUDPJODMJHFUOFXBEESFTT .T'9D:#-CJW'R-VSR-%SC&K7 BEESFTT.T'9D:#-CJW'R-VSR-%SC&K7 ΑΓޙ֤ࣗग़ྗ͞ΕͨΞυϨεͰஔ͖͍͑ͯͩ͘͞ CJUDPJODMJHFOFSBUFUPBEESFTTBEESFTT CJUDPJODMJHFUCBMBODF CJUDPJODMJHFUOFXBEESFTT /"T6RK&5UX;E#$U"%UUFN-35JB2 BEESFTT/"T6RK&5UX;E#$U"%UUFN-35JB2
ΑΓޙ֤ࣗग़ྗ͞ΕͨΞυϨεͰஔ͖͍͑ͯͩ͘͞ CJUDPJODMJTFOEUPBEESFTTBEESFTT DFFGFDEGEBDBCBDEFCDDE BEF 14
τϥϯβΫγϣϯͷࢀর UYJEDFFGFDEGEBDBCBDEFCDD EBEF ΑΓޙ֤ࣗग़ྗ͞ΕͨτϥϯβΫγϣϯͰஔ͖͍͑ͯͩ͘͞ CJUDPJODMJHFUUSBOTBDUJPOUYJE CJUDPJODMJHFUSBXUSBOTBDUJPOUYJE SBXUSBOTBDUJPO CJUDPJODMJHFUSBXUSBOTBDUJPOUYJE FDIPSBXUSBOTBDUJPO
CJUDPJODMJEFDPEFSBXUSBOTBDUJPOSBXUSBOTBDUJPO 15
ΞϦε͕Ϙϒʹ#5$ΛૹΔ Ҏલड͚औֹ͍ͬͯͨΛ߹ࢉͯ͠ɺ૬खʹૹΓɺ͓Γࣗ 59தʹهࡌͷͳֹ͍ ͜͜Ͱ#5$ ޙʹϚΠφʔ τϥϯβΫγϣϯͷߏ 16 ΞϦε Ϙϒ 5SBOTBDUJPO
59 */165 065165 ΞϦε Ωϟϩϧ ΞϦεˠϘϒ #5$ ΩϟϩϧˠΞϦε #5$ ΞϦεˠΞϦε ͓Γ #5$ #5$ σϏοτˠΞϦε #5$ #5$ σϏοτ ܭ#5$ ܭ#5$ ϚΠφʔ ωοτϫʔΫखྉ #5$ ˞59ʹهࡌͳ͍ ൿີ伴Λࠩ͠ࠐΜͰ ϩοΫղআɿిࢠॺ໊ ΞϦεͷ ൿີ伴 ΞϦεͷ ൿີ伴 ΞϦεͷ ެ։伴 Ϙϒͷ ެ։伴 ΞϦεͷ ެ։伴 ΞϦεͷ ެ։伴
3FMFBTF/PUFͷຊޠ༁CZ҆ໜږࢯ IUUQTCJUDPJODPSFPSHKBSFMFBTFT #JUDPJO$PSFWFSTJPO 17 $ bitcoin-cli getbalances { "mine": {
"trusted": 7699.99774240, "untrusted_pending": 0.00000000, "immature": 2500.00205560 } }
CJUDPJOSC CJUDPJOSVCZ IUUQTHJUIVCDPNMJBOCJUDPJOSVCZ CJUDPJOͷSVCZϥΠϒϥϦɺ#JUDPJOE CJUDPJODPSF ͱซ༻ ్த͔ΒDIBJOUPQF$50҆ໜږࢯ͕DPOUSJCVUFSʹ CJUDPJOSVCZͷ-JBO͕ཧΛΊͨͷͰɺ҆ࢯ͕৽ͨʹCJUDPJOSCΛΦʔϓ ϯιʔεͰ։ൃ։࢝ IUUQTHJUIVCDPNDIBJOUPQFCJUDPJOSC
ॻ੶CJUDPJOSVCZͰॻ͔Ε͍ͯΔ͕ɺҰ෦CJUDPJOSCͰͷίʔσΟϯάʹ Ԡ༻Մೳ 18
3VCZΠϯετʔϧ .BDͷ߹ IUUQTXXXPJBYKQSBJMT[BLLBO SBJMT@@@JOTUBMMBUJPO@PO@NBDPTYIUNM 6CVOUVͷ߹ IUUQTXXXPJBYKQSBJMT[BLLBO SBJMT@@@JOTUBMMBUJPO@PO@VCVOUIUNM 3VCZΠϯετʔϧ·ͰʢʮHFNSDͷ࡞ʯͷखલSVCZW·Ͱʣ 3BJMTΠϯετʔϧෆཁ ίʔυதͷWFSʹஔ͖࣮͑ͯߦ
19
CJUDPJOSCΠϯετʔϧ IUUQTHJUIVCDPNDIBJOUPQFCJUDPJOSC 3&"%.&ΛಡΜͰΠϯετʔϧ 20
JSC 3VCZରܕϞʔυ CJUDPJOSC JSC SFRVJSFCJUDPJO #JUDPJODIBJO@QBSBNTSFHUFTU #JUDPJO,FZHFOFSBUF #JUDPJO,FZHFOFSBUFQSJW@LFZ #JUDPJO,FZHFOFSBUFQVCLFZ 21
.OFNPOJD #JUDPJO8BMMFU.BTUFS,FZHFOFSBUF 22 irb(main):035:0> mk = Bitcoin::Wallet::MasterKey.generate => #<Bitcoin::Wallet::MasterKey:0x00000000019d8d10 @mnemonic=["shed",
"horror", "bleak", "destroy", "shield", "salute", "dose", "blast", "aim", "orphan", "crawl", "model", "salon", "fall", "amount", "repair", "unfold", "craft", "wall", "mean", "strong", "obtain", "holiday", "couple"], @seed="2a462344bbeafbc81996bd3bb93beb3eb0db9e1826de4dfab165e2d6714bf37f8a4ade6195579ae686365dd467e8687791 9bca0740f58eaa1beb393bb557471e", @encrypted=false, @salt=""> irb(main):036:0> mk = Bitcoin::Wallet::MasterKey.generate.mnemonic => ["rocket", "habit", "slam", "pioneer", "ethics", "client", "outer", "name", "alarm", "bulb", "visa", "special", "index", "shadow", "tube", "bronze", "focus", "skin", "deposit", "climb", "tattoo", "chimney", "anger", "daring"]
#JUDPJO4DSJQU -*'0 -BTU*O'JSTU0VU ͷ୯७ͳεΫϦϓτ 'PSUIͷΑ͏ͳٯϙʔϥϯυه๏ #JUDPJO5SBOTBDUJPOʹඞؚͣ·ΕΔ #JUDPJO$PSF CJUDPJOE ϥΠϒϥϦΛ͏ͱɺ#JUDPJO4DSJQUΛҙࣝ͠ͳ ͯ͘ɺϓϩάϥϜॻ͚Δ
6OMPDLJOH4DSJQUͱ-PDLJOH4DSJQUΛಉ࣌ʹ࣮ߦ ਖ਼࣮͘͠ߦͰ͖Ε6OMPDLJOH4DSJQUͰ-PDLJOH4DSJQUΛղআͯ͠ɺτϥϯ βΫγϣϯͷ༗ޮੑΛࣔͤΔ 23 6OMPDLJOH4DSJQU -PDLJOH4DSJQU
୯७ͳྫ 6OMPDLJOH4DSJQUɺ-PDLJOH4DSJQUͷॱͰ࣮ߦ͢Δ ελοΫʹσʔλͱ01ίʔυΛೖΕ͍ͯ͘ 01ίʔυΛελοΫʹೖΕͨͱ໋͖ྩʹԠͯ͡Լͷσʔλͭ·ͨෳ ʹରͯ͠ԋࢉ͢Δ 24 -PDLJOH4DSJQU 6OMPDLJOH4DSJQU 01@"%%01@&26"-Λ࣮ߦ
01@"%% Ճࢉ ༗ޮ 01@&26"- 01@"%%01@&26"- ಉ͔ ͍͠
#JUDPJO4DSJQU TDSJQU#JUDPJO4DSJQUGSPN@TUSJOH 01@"%%01@&26"-z TDSJQUSVO TDSJQU#JUDPJO4DSJQUGSPN@TUSJOH 01@"%%01@&26"-z TDSJQUSVO 25
irb(main):017:0> script = Bitcoin::Script.from_string("2 4 OP_ADD 6 OP_EQUAL").run => true irb(main):018:0> script = Bitcoin::Script.from_string("2 3 OP_ADD 6 OP_EQUAL").run => false irb(main):019:0> script = Bitcoin::Script.from_string("2 4 OP_ADD 6 OP_EQUAL") => #<Bitcoin::Script:0x0000000001be1c10 @chunks=["R", "T", "\x93", "V", "\x87"]> irb(main):020:0> script.run => true
ࢀߟʣ11, 1BZUP1VCMJD,FZ TJHൿີ伴Λ༻͍ͯੜ͞ΕΔॺ໊ɺ1VC,ެ։伴 26 -PDLJOH4DSJQU 6OMPDLJOH4DSJQU TJH1VC,01@$)&$,4*(Λ࣮ߦ TJH 1VC, TJH
1VC, 536& ༗ޮ $)&$,4*( TJH 1VC,01@$)&$,4*( ॺ໊Λݕূ
ࢀߟʣ11,) 1BZUP1VCMJD,FZ)BTIʢ11,ͷൃల൛ʣ ެ։伴ϋογϡΛ༻͍Δ͜ͱͰΞυϨεΛ͘දݱͰ͖Δ TDSJQUʢʣͰͷݺͼํ͋Δ 27 -PDLJOH4DSJQU TDSJQU1VC,FZ 6OMPDLJOH4DSJQU TDSJQU4JH TJH
TJH1VC,01@%6101@)"4)1VC,)BTI01@&26"-7&3*': 01@$)&$,4*(Λ࣮ߦ TJH 536& 1VC, TJH 1VC, TJH 1VC, 1VC, 1VC, 1VC,)BTI TJH 1VC, 1VC,)BTI 1VC,)BTI TJH 1VC, 1VC,)BTI 1VC,)BTI TJH 1VC, 01@%61 )"4) ෳ 01@&26"- ͍͠ TJH1VC, 01@%6101@)"4)1VC,)BTI 01@&26"-7&3*':01@$)&$,4*( ಉ͔ 4)"ͷޙ 3*1&.% ෳ
ࢀߟʣ11,)ʢଓ͖ʣ Γ11,ͱಉ͡ 28 -PDLJOH4DSJQU 6OMPDLJOH4DSJQU TJH 1VC, TJH 1VC,
536& $)&$,4*( TJH1VC, 01@%6101@)"4)1VC,)BTI 01@&26"-7&3*':01@$)&$,4*( ॺ໊Λݕূ
ࢀߟʣϚϧνγά NPGOʢOਓதNਓͷॺ໊ͰϩοΫղআͰ͖ΔʣϚϧνγά Α͋͘ΔPGͷྫ 29 -PDLJOH4DSJQU TDSJQU1VC,FZ 6OMPDLJOH4DSJQU TDSJQU4JH 01@TJH"4JH#1VC,"1VC,#1VC,$01@$)&$,.6-5*4*( )"4)
01@TJH"TJH# 1VC,"1VC,#1VC,$ 01@$)&$,.6-5*4*( 536& TJHOBUVSF# 1VCMJD,FZ$ $)&$,.6-5*4*( TJHOBUVSF" 1VCMJD,FZ# 1VCMJD,FZ"
CJUDPJOSC༻ JSC ԼهͷίʔυΛෳߦؙ͝ͱίϐϖ 30 irb(main):001:0> require 'bitcoin' => true irb(main):002:0>
require 'net/http' => true irb(main):003:0> require 'json' => false irb(main):004:0> Bitcoin.chain_params = :regtest => :regtest irb(main):005:0> RPCUSER="hoge" => "hoge" irb(main):006:0> RPCPASSWORD="hoge" => "hoge" irb(main):007:0> HOST="localhost" => "localhost" irb(main):008:0> PORT=18332 => 18332 irb(main):011:0> def bitcoinRPC(method,param) irb(main):012:1> http = Net::HTTP.new(HOST, PORT) irb(main):013:1> request = Net::HTTP::Post.new('/') irb(main):014:1> request.basic_auth(RPCUSER,RPCPASSWORD) irb(main):015:1> request.content_type = 'application/json' irb(main):016:1> request.body = {method: method, params: param, id: 'jsonrpc'}.to_json irb(main):017:1> JSON.parse(http.request(request).body)["result"] irb(main):018:1> end => :bitcoinRPC require 'bitcoin' require 'net/http' require 'json' Bitcoin.chain_params = :regtest RPCUSER="hoge" RPCPASSWORD="hoge" HOST="localhost" PORT=18332 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
CJUDPJO31$Ͱ#JUDPJO$PSFΛૢ࡞ JSC NBJO CJUDPJO31$ bHFUCMPDLDIBJOJOGP` <> BEESFTTCJUDPJO31$ bHFUOFXBEESFTT <>
CJUDPJO31$ HFOFSBUFUPBEESFTT < BEESFTT> 31 irb(main):019:0> bitcoinRPC('getblockchaininfo',[]) => {"chain"=>"regtest", "blocks"=>259, "headers"=>259, "bestblockhash"=>"537f9822f97e2110fa8d04d7676855eef5c7628c425a2a2e271a49d6a0741480", "difficulty"=>4.656542373906925e-10, "mediantime"=>1574683242, "verificationprogress"=>1, "initialblockdownload"=>true, "chainwork"=>"0000000000000000000000000000000000000000000000000000000000000208", "size_on_disk"=>108511, "pruned"=>false, "softforks"=>{"bip34"=>{"type"=>"buried", "active"=>false, "height"=>500}, "bip66"=>{"type"=>"buried", "active"=>false, "height"=>1251}, "bip65"=>{"type"=>"buried", "active"=>false, "height"=>1351}, "csv"=>{"type"=>"buried", "active"=>false, "height"=>432}, "segwit"=>{"type"=>"buried", "active"=>true, "height"=>0}, "testdummy"=>{"type"=>"bip9", "bip9"=>{"status"=>"started", "bit"=>28, "start_time"=>0, "timeout"=>9223372036854775807, "since"=>144, "statistics"=>{"period"=>144, "threshold"=>108, "elapsed"=>116, "count"=>116, "possible"=>true}}, "active"=>false}}, "warnings"=>""}
࣍ճ༧ࠂ ࠓճֶΜͩ͜ͱΛੜ͔ͯ͠ɺ3VCZPO3BJMTʹͯ#JUDPJO8FCϢʔβΠϯλʔ ϑΣʔεΛ։ൃ 32
ίϛϡχςΟհ ຊ҉߸௨՟ϢʔβձɹIUUQTDSZQUPDVSSFODZDPOOQBTTDPN ʮϏοτίΠϯͱ͔ษڧձʯʢ݄̍ճɿฏʣ w ࣍ճ݄ௐத ʮ҉߸௨՟ಡॻձʯʢ݄̍ճɿฏʣ w ࣍ճ݄ௐத DSBTIBDBEFNZ *5ܥಈը৴
ʹͯϏοτίΠϯͱ͔ษڧձͷΞʔΧΠϒ৴த IUUQTDSBTIBDBEFNZDPNNVOJUZDSZQUPDVSSFODZ :PV5VCFνϟϯωϧʢษڧձʗಡॻձʣIUUQCJUMZZPVUVCFDDTUVEZ 33