本文中,所有H()標識hash函式
1.位元幣技術點
- 非對稱加密( ECDSA橢圓曲線加密演算法)
- 哈希演算法(sha-256)
- 鏈表
- 二叉樹
2.位元幣資料結構

位元幣區塊鏈就是如圖所示的一個鏈表,每個區塊分為兩部分,區塊頭、區塊體,要實際了解區塊的具體資訊,可訪問 https://btc.tokenview.com/cn
2.1區塊體
區塊體是一顆二叉樹,所有交易資訊都保存在葉子節點(這些交易分為兩種:1.鑄幣交易,可以憑空造指定數量位元幣,沒有轉賬人(轉賬地址),只有收款人(收款地址),2.普通轉賬交易,轉賬人、收款人都有,需要校驗轉賬人的賬戶是否有足夠余額),按照上圖所示,一級一級向上求hash值,最終生成一顆merkle tree(可信樹),樹的指標為子節點的hash值,
2.2區塊頭
區塊頭是一些區塊的元資訊,包括:
- hash(指向前一個區塊的指標哈希指標,是前一個區塊的hash值,而不是普通鏈表中的記憶體地址,至于如何通過前一個區塊的hash值尋址到前一個區塊,可以看后續內容)
- version(協議版本號)
- merkle root hash(可信樹的根哈希,可信樹就是區塊體,也就是區塊體的根節點的哈希值)、區塊產生時間
- nBits(挖礦采用的目標閾值,用來確定挖礦難度,根據演算法調節,不可以隨意更改,以保證區塊的平均出塊時間穩定在10分鐘,后續具體介紹)
- Nonce(挖礦需要尋找的亂數)
- 其它資料

圖片來源于 北京大學肖臻老師《區塊鏈技術與應用》公開課筆記5——BTC具體實作篇
3.BTC挖礦的實質
挖礦本質上就是不斷調整block header中的nonce值,使整個block header的哈希值小于等于給定的目標閾值(也就是nBits編碼前的值 target),target越小,挖礦難度越大,
位元幣系統采用的哈希演算法為SHA-256,所以hash值的結果有2^256種可能,target是256位二進制數,target越小,前面的0越多(如 0000000000001···110101),所以調節nonce值使得block header的哈希值得到的目標哈希值也要前面有很多0,(隨著難度的提升,某些情況下,即使嘗試nonce所有可能值,有2^32種可能,都無法使得block header的哈希值小于等于target,這時情況下怎么辦?后續會有方案,)
4.BTC挖礦難度計算
位元幣的平均出塊時間穩定在10分鐘,這是怎么實作的呢?
1.在BTC協議中規定,每隔2016個區塊需要調整一次難度,也就是target值,根據10min產生一個新區塊可以得到,大概需要14天的時間,
2.target計算方法:
target=target*actualTime/expectTime
actualTime:最近2016個區塊實際花費時間,累加
expectTime:2016個區塊期望花費時間,固定值 2016*10分鐘
5.交易
上述區塊體中,每一個葉子節點,都是一筆可信的交易,此小結主要介紹位元幣系統交易的資料結構,
圖1:區塊頭截圖,截圖來自網址: https://btc.tokenview.com/en/block/716888
圖2:區塊交易串列截圖,截圖來自網址: https://btc.tokenview.com/en/block/716888
如圖2所示,第一筆為.鑄幣交易,后續都是普通轉賬交易,
圖3:.鑄幣交易詳細資訊

如圖3.鑄幣交易,c19ed29106bba7b7c11ab44224446a46fdb4f498a7d3ec2f6b4b196e15241b8f是交易的哈希值,Input是交易的輸入地址串列,因為是鑄幣交易不需要輸入地址(付款方),只需要輸出地址(收款方),所以此處可以隨意寫任何字串,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/402494.html
標籤:區塊鏈
上一篇:山東希爾金技術服務怎么樣?
下一篇:區塊鏈知識


