比特幣第一版v0.01運行體驗及6次確認和Coinbase的120次成熟時間

  比特幣源碼第一版(BitCoin v0.01 ALPHA),是對照比特幣白皮書研究區塊鏈的最佳選擇,下載解壓後目錄結構如圖一所示。其中src爲源碼文件夾,bitcoin.exe爲可執行文件,在Win7x64環境下可直接運行(Win10環境下運行失敗,可通過源碼編譯運行)。

                                                    圖一 比特幣第一版源碼目錄結構

                                                    圖二 比特幣運行時系統目錄結構

  準備兩臺連網機器,IP分別是:192.168.1.108和192.168.1.110,在110機器的運行目錄下新建addr.txt,輸入:192.168.1.108:8333,保存。首先在108機器上運行,然後在110機中運行,勾選Options菜單下的Generate Coins,運行結果見圖三和圖四。

                                               圖三 192.168.1.108運行,挖礦成功5次

                                        圖四 192.168.1.110運行,挖礦成功7次/5確認

  從圖三和圖四下方的狀態欄可以看出,各有1個網絡連接、11個區塊,第6次纔開始確認區塊,120次確認成熟時間。

  關於6次確認和120次Coinbase成熟時間(源碼中成熟時間爲100),下述爲轉載描述:


  確認次數 = 當前區塊高度 - 交易所在區塊的高度

  針對非Coninbase的交易:區塊的每一次確認都會增加上一個區塊被篡改的難度,6個區塊之後,交易被篡改的可能性幾乎爲0,所以有了“交易經過6次確認之後加入區塊鏈不可更改”的的說法。

  針對Coinbase交易的100次確認:當一個塊成爲孤立塊時,它的所有有效交易被重新添加到排隊交易池中,並將被包括在另一個塊中。對於孤兒區塊的50BTC獎勵將丟失,這就是爲什麼Coinbase需要100次確認的原因。再具體些,塊鏈分叉會產生孤塊,並且這些塊中的挖掘回報丟失。這只是比特幣工作方式中不可避免的一部分,有時甚至當沒有人攻擊網絡時也會發生。如果沒有100區塊確認的成熟時間,那麼每當分叉時,非主鏈的孤塊上的交易全部會丟失,即使沒有任何形式的雙重花費或其他攻擊。在分叉鏈上,成千上萬的人可以發現錢包裏的硬幣不見了,即使沒有人真正攻擊他們,也沒有理由懷疑他們收到的錢。例如,假如沒有成熟時間,礦工可能將25BTC存入EWallet,如果我從同一個EWallet上完全不相關的賬戶中提取錢,那麼如果有分叉,我的提款可能就會消失,而且我不幸提取了礦工的Coinbase費用。由於這種污染傾向於“感染”交易,每個區塊的BTC遠遠超過25。每一個無效塊都會導致價值數百個比特幣的交易被逆轉。所以,有了成熟時間的設置,只要分叉不超過100塊,任何人都不可能像這樣意外丟失硬幣。如果分叉的壽命超過100個塊,那麼由無效交易引起的損壞很可能是一個巨大的災難。

  再舉例說明:比如沒有成熟時間的限制,A區塊產生後,A中的挖礦交易UTXO可以在下一個區塊B中被使用,那麼區塊B中包含了區塊A中的a交易。

  當某些原因出現分叉,B區塊成爲孤塊,這時應該將B中的有效交易添加到內存池,打包到新的區塊中。這時B中的a交易因爲引用了區塊A的Coinbase費用不能輕易重新打包到其他的塊中。因爲更換了區塊後,Coinbase交易就失效了。


  對addr.dat、wallet.dat、blkindex.dat文件的解讀(BerkeleyDB UI)見如下幾圖:

  對區塊文件blk0001.dat的解讀(BlockDataParser)如下:

工具下載:

BerkeleyDBUI

BlockDataParser​

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章