日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

比特币的区块结构解析

發(fā)布時間:2025/3/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 比特币的区块结构解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

比特幣的區(qū)塊數(shù)據(jù)里包含了比特幣鏈上的核心信息,包括比特幣如何交易,區(qū)塊擴(kuò)容等問題。

比特幣從誕生到現(xiàn)在,每10分鐘誕生一個區(qū)塊,訪問?https://blockchain.info/?查看最近的區(qū)塊信息,可以看到當(dāng)前的區(qū)塊大小已經(jīng)接近或超過中本聰設(shè)置的1MB容量。

一、區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)

一個完整的區(qū)塊結(jié)構(gòu)主要由以下幾部分構(gòu)成:

數(shù)據(jù)項(xiàng) 字節(jié) 字段 說明
Magic NO 4 魔數(shù) 常數(shù)0xD9B4BEF9
Blocksize 4 區(qū)塊大小 用字節(jié)表示的該字段之后的區(qū)塊大小
Blockheader 80 區(qū)塊頭 組成區(qū)塊頭的幾個字段
Transaction counter 1-9 交易計數(shù)器 該區(qū)塊包含的交易數(shù)量,包含coinbase交易
Transactions 不定 交易 記錄在區(qū)塊里的交易信息,使用原生的交易信息格式,并且交易在數(shù)據(jù)流中的位置必須與Merkle樹的葉子節(jié)點(diǎn)順序一致

?

二、區(qū)塊信息解析

我們從?https://webbtc.com?選擇一個區(qū)塊哈希值為000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506的早期區(qū)塊進(jìn)行分析。

可以看到該區(qū)塊中包含了三筆交易信息,下面對區(qū)塊信息字段進(jìn)行解析。

?

1.區(qū)塊頭分析

前80個字節(jié)是區(qū)塊頭。

1 2 3 4 5 6 7 8 9 { ????"hash":?"000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506", ????"ver": 1, ????"prev_block":?"000000000002d01c1fccc21636b607dfd930d31d01c3a62104612a1719011250", ????"mrkl_root":?"f3e94742aca4b5ef85488dc37c06c3282295ffec960994b2c0d5ac2a25a95766", ????"time": 1293623863, ????"bits": 453281356, ????"nonce": 274148111 }

  

字節(jié) 字段 說明
4 版本 區(qū)塊版本號,表示本區(qū)塊遵守的驗(yàn)證規(guī)則
32 父區(qū)塊頭哈希值 前一區(qū)塊的哈希值,使用SHA256(SHA256(父區(qū)塊頭))計算
32 Merkle根 該區(qū)塊中交易的Merkle樹根的哈希值,同樣采用SHA256(SHA256())計算
4 時間戳 該區(qū)塊產(chǎn)生的近似時間,精確到秒的UNIX時間戳,必須嚴(yán)格大于前11個區(qū)塊時間的中值,同時全節(jié)點(diǎn)也會拒絕那些超出自己2個小時時間戳的區(qū)塊
4 難度目標(biāo) 該區(qū)塊工作量證明算法的難度目標(biāo),已經(jīng)使用特定算法編碼
4 Nonce 為了找到滿足難度目標(biāo)所設(shè)定的隨機(jī)數(shù),為了解決32位隨機(jī)數(shù)在算力飛升的情況下不夠用的問題,規(guī)定時間戳和coinbase交易信息均可更改,以此擴(kuò)展nonce的位數(shù)

說明:

  • 版本、父區(qū)塊頭哈希值和Merkle根采用的是小端格式編碼,即低有效位放在前面。
  • 時間戳表示的是自1970年1月1日0時0分0秒以來的秒數(shù)

?

2.Coinbase交易信息分析

一個區(qū)塊第一個交易規(guī)定為coinbase交易,即由挖礦產(chǎn)生的比特幣獎勵,可以看到目前挖出每個區(qū)塊的獎勵是12.5個比特幣,下一次減半會發(fā)生在2020年。

除了挖礦獎勵,“礦工”的激勵還有新增賬本記賬的手續(xù)費(fèi),在未來比特幣總量不增加之后,后者會成為礦工的主要收入。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 { ????"hash":?"8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87", ????"ver": 1, ????"vin_sz": 1, ????"vout_sz": 1, ????"lock_time": 0, ????"size": 135, ????"in": [{ ????????"prev_out": { ????????????"hash":?"0000000000000000000000000000000000000000000000000000000000000000", ????????????"n": 4294967295 ????????}, ????????"coinbase":?"044c86041b020602" ????}], ????"out": [{ ????????"value":?"50.00000000", ????????"scriptPubKey":?"041b0e8c2567c12536aa13357b79a073dc4444acb83c4ec7a0e2f99dd7457516c5817242da796924ca4e99947d087fedf9ce467cb9f7c6287078f801df276fdf84 OP_CHECKSIG", ????????"next_in": { ????????????"hash":?"f3e6066078e815bb24db0dfbff814f738943bddaaa76f8beba360cfe2882480a", ????????????"n": 12 ????????} ????}], ????"nid":?"70ab531a68f973f7d20b8260cb5e7fecba3699c48715b8b44539ff9776d0b88e" }

  

字節(jié) 字段 描述
4 版本 這筆交易參照的規(guī)則
1-9 輸入計數(shù)器 包含的交易輸入數(shù)量
32 交易哈希 不引用任何一個交易,值全部為0
4 交易輸出索引 固定為0xFFFFFFFF
1-9 Coinbase數(shù)據(jù)長度 coinbase數(shù)據(jù)長度
不定 Coinbase數(shù)據(jù) 在V2版本的區(qū)塊中,除了需要以區(qū)塊高度開始外,其它數(shù)據(jù)可以任意填寫,用于extra nonce和挖礦標(biāo)簽
4 順序號 值全部為1,0xFFFFFFFF
1-9 輸出計數(shù)器 包含的交易輸出數(shù)量
8 總量 用聰表示的比特幣值
1-9 鎖定腳本大小 用字節(jié)表示的后面的鎖定腳本長度
不定 鎖定腳本 一個定義了支付輸出所需條件的腳本
4 鎖定時間 一個區(qū)塊號或UNIX時間戳

?

3.交易信息記錄

下面來看下普通的交易記錄。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 { ????"hash":?"fff2525b8931402dd09222c50775608f75787bd2b87e56995a7bdd30f79702c4", ????"ver": 1, ????"vin_sz": 1, ????"vout_sz": 2, ????"lock_time": 0, ????"size": 259, ????"in": [{ ????????"prev_out": { ????????????"hash":?"87a157f3fd88ac7907c05fc55e271dc4acdc5605d187d646604ca8c0e9382e03", ????????????"n": 0 ????????}, ????????"scriptSig":?"3046022100c352d3dd993a981beba4a63ad15c209275ca9470abfcd57da93b58e4eb5dce82022100840792bc1f456062819f15d33ee7055cf7b5ee1af1ebcc6028d9cdb1c3af774801 04f46db5e9d61a9dc27b8d64ad23e7383a4e6ca164593c2527c038c0857eb67ee8e825dca65046b82c9331586c82e0fd1f633f25f87c161bc6f8a630121df2b3d3" ????}], ????"out": [{ ????????????"value":?"5.56000000", ????????????"scriptPubKey":?"OP_DUP OP_HASH160 c398efa9c392ba6013c5e04ee729755ef7f58b32 OP_EQUALVERIFY OP_CHECKSIG", ????????????"address":?"1JqDybm2nWTENrHvMyafbSXXtTk5Uv5QAn", ????????????"next_in": { ????????????????"hash":?"5aa8e36f9423ee5fcf17c1d0d45d6988b8a5773eae8ad25d945bf34352040009", ????????????????"n": 6 ????????????} ????????}, ????????{ ????????????"value":?"44.44000000", ????????????"scriptPubKey":?"OP_DUP OP_HASH160 948c765a6914d43f2a7ac177da2c2f6b52de3d7c OP_EQUALVERIFY OP_CHECKSIG", ????????????"address":?"1EYTGtG4LnFfiMvjJdsU7GMGCQvsRSjYhx", ????????????"next_in": { ????????????????"hash":?"220ebc64e21abece964927322cba69180ed853bb187fbc6923bac7d010b9d87a", ????????????????"n": 0 ????????????} ????????} ????], ????"nid":?"fc7704fdd7ec5e69163e51b827fea2133990a26defee2b475408b3c16fd9a968" }

  

三、擴(kuò)容問題如何解決

在比特幣誕生初期,中本聰為了比特幣系統(tǒng)的安全和穩(wěn)定,防止比特幣系統(tǒng)被攻擊而把區(qū)塊大小設(shè)置為1M。在當(dāng)時比特幣用戶量少,比特幣交易是不存在擁堵問題的。

隨著比特幣網(wǎng)絡(luò)的發(fā)展,單個區(qū)塊存儲的交易信息越來越多,1MB區(qū)塊僅能容納2000條左右交易,

交易量大時需要排隊等待區(qū)塊寫入確認(rèn),交易網(wǎng)絡(luò)擁堵問題越來越嚴(yán)重,為此也出現(xiàn)了解決容量問題的幾個方案。

1.區(qū)塊擴(kuò)容

解決區(qū)塊過小問題,最直接的辦法就是擴(kuò)容。區(qū)塊體積中位數(shù)在2015年里得到了翻番,從1月份的292KB快速增長至12月份的749KB。
2015 年12月比特幣香港擴(kuò)容會議由Pieter Wuille提出了隔離見證(Segregated Witness)之后,擴(kuò)容問題甚至已經(jīng)簡化為僅升級至2MB。

為什么不把區(qū)塊設(shè)置的更大一些,比如30MB?
區(qū)塊存儲的是交易信息,若提高區(qū)塊體積限制至30MB,最大的問題不是CPU計算能力瓶頸,而是塊的傳播與存儲。

30MB的塊可能會導(dǎo)致全網(wǎng)孤塊率和空塊率大幅上升,一年產(chǎn)出1.5TB的區(qū)塊鏈數(shù)據(jù)也超出大部分節(jié)點(diǎn)機(jī)器的硬盤容量。

基于這1.5TB的數(shù)據(jù),區(qū)塊鏈瀏覽器、錢包服務(wù)商等則可能膨脹10倍達(dá)到15TB,對于目前來說已經(jīng)遠(yuǎn)超普通機(jī)器/數(shù)據(jù)庫的磁盤容量。

除了擴(kuò)容,還有另外的解決方案就是隔離見證和閃電網(wǎng)絡(luò)。

2.隔離見證和閃電網(wǎng)絡(luò)

隔離見證(SegWit)是把交易的簽名數(shù)據(jù)從交易數(shù)據(jù)中剝離出來,用于解決延展性攻擊。

比特幣交易主要是由兩部分?jǐn)?shù)據(jù)組成。其中一部分為交易數(shù)據(jù),它負(fù)責(zé)記錄比特幣的來源和去處。

而另外一部分則是見證數(shù)據(jù),這部分?jǐn)?shù)據(jù)由一些加密數(shù)據(jù)組成,用于證明這些交易請求是真實(shí)可信的。

中本聰在設(shè)計比特幣的時候直接把這兩部分信息都放在了區(qū)塊內(nèi),所以一個區(qū)塊就承載不了更多的交易信息。

如果隔離了“見證數(shù)據(jù)”,那么區(qū)塊鏈只記錄交易數(shù)據(jù),那么一個區(qū)塊可承載更多的交易。

閃電網(wǎng)絡(luò)(Lightning Network)方案是在比特幣網(wǎng)絡(luò)上再外加一個「閃電網(wǎng)絡(luò)(Lightning Network)」,

把原有比特幣鏈上金額較少的交易,轉(zhuǎn)移到這個閃電網(wǎng)絡(luò)來處理,完成后再記錄到原鏈上。
這是一種鏈外交易(Off-chain transaction),目的是解決加快交易速度,以太坊(Ethereum)也有類似的方案叫Raiden Network。

?

用搭乘公共汽車的來假設(shè),試想像比特幣的區(qū)塊是一輛公共汽車,每隔十分鐘,固定時間發(fā)車,

當(dāng)要乘車的人超過公共汽車容量,不能上車的人就要等待下一班。我們的目的就是讓更多的人可以乘車,即承載更多的交易。

比特幣區(qū)塊鏈本身是可以根據(jù)交易費(fèi)率來優(yōu)先完成交易的,如果你想快速完成轉(zhuǎn)賬等功能,可以設(shè)置較高的手續(xù)費(fèi)。

這就類似公共汽車讓出更高價格買票的人先上車,不愿付高車票的人就要一直等下去,直到坐車的人變少。

?

隔離見證就是我們在公共汽車后面加掛一個貨車(SegWit車箱),所有乘車的人都要把背包和行李放到這個貨車上面,

因?yàn)樯倭穗S身物品,每個人占的空間變少了,公共汽車就可以多載一些人,乘載量就變多了。

閃電網(wǎng)絡(luò)可以理解為在公交車路線旁邊再架一條鐵路,讓擠不上公共汽車的人直接去坐火車,解決掉太多人要搭乘車(交易),而汽車太小的問題。

?

隔離見證和閃電網(wǎng)絡(luò)在技術(shù)上有可行性,但是同樣有許多質(zhì)疑。
依賴于隔離見證的閃電網(wǎng)絡(luò)等二層網(wǎng)絡(luò)并不能被認(rèn)為是比特幣的擴(kuò)容方案,因?yàn)殚W電網(wǎng)絡(luò)的交易并不等價于比特幣的點(diǎn)對點(diǎn)的鏈上交易,大部分比特幣交易的場景并不適用于閃電網(wǎng)絡(luò)。

假設(shè)閃電網(wǎng)絡(luò)部署成功,也會存在大型支付中心的問題,這違背了比特幣做為點(diǎn)對點(diǎn)支付系統(tǒng)的初衷。

?

參考

Master Bitcoin 精通比特幣?
《區(qū)塊鏈:從數(shù)字貨幣到信用社會》

總結(jié)

以上是生活随笔為你收集整理的比特币的区块结构解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。