主页 > imtoken钱包怎么下载 > 比特币的区块结构分析
比特币的区块结构分析
比特币的区块数据包含了比特币链上的核心信息,包括比特币如何交易、区块扩容等问题。
从比特币诞生到现在比特币现金的区块大小,每 10 分钟就有一个区块诞生。如果您访问并查看最新的区块信息,您可以看到当前的区块大小已经接近或超过了中本聪设定的 1MB 容量。
一、区块链数据结构
一个完整的块结构主要由以下几部分组成:
数据项字节字段说明
魔法NO
4
幻数
常数 0xD9B4BEF9
块大小
4
块大小
此字段后的块大小(以字节为单位)
块头
80
区块头
组成区块头的几个字段
交易计数器
1-9
交易计数器
此区块中包含的交易数量,包括 coinbase 交易
交易
不确定
交易
区块中记录的交易信息采用原生交易信息格式比特币现金的区块大小,交易在数据流中的位置必须与默克尔树的叶子节点顺序一致
二、区块信息分析
我们选择一个区块哈希值为000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506的早期区块进行分析。
可以看到区块包含三个交易信息,下面解析区块信息字段。
1.区块头分析
前 80 个字节是区块头。
{
"hash": "000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506",
"ver": 1,
"prev_block": "000000000002d01c1fccc21636b607dfd930d31d01c3a62104612a1719011250",
"mrkl_root": "f3e94742aca4b5ef85488dc37c06c3282295ffec960994b2c0d5ac2a25a95766",
"time": 1293623863,
"bits": 453281356,
"nonce": 274148111
}
字节字段说明
4
版本
区块版本号,表示该区块遵守的验证规则
32
父区块头哈希值
上一个区块的哈希值,使用SHA256(SHA256(父区块头))计算本区块中交易的Merkle树根的哈希值,同样使用SHA256(SHA256())计算
4
时间戳
这个区块产生的大概时间,精确到秒的UNIX时间戳,必须严格大于前11个区块时间的中位数,全节点也会拒绝超过自己2小时时间戳的区块
4
难度目标
此区域区块工作量证明算法的难度目标已使用特定算法进行编码
4
随机数
为了找到满足难度目标的随机数集,为了解决算力飙升时32位随机数不够用的问题。规定可以更改时间戳和coinbase交易信息,从而扩大nonce的数量。
说明:
2.Coinbase 交易信息分析
一个区块的第一笔交易定义为coinbase交易,即挖矿产生的比特币奖励。奖励为 12.5 BTC,下一次减半将在 2020 年发生。
对“矿工”的激励除了挖矿奖励外,还包括新记账的手续费,未来比特币总量不增加后,这将成为矿工的主要收入。
{
"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"
}
字节字段说明
4
版本
本次交易参考规则
1-9
输入计数器
包含的交易输入数
32
交易哈
不指任何交易,所有值为0
4
事务输出索引
固定为 0xFFFFFFFF
1-9
Coinbase 数据长度
coinbase 数据长度
变量
Coinbase 数据
在V2版本的区块中,除了区块高度外,其他数据可以任意填写额外的nonce和挖矿标签
4
序列号
p>
值都是1,0xFFFFFFFF
1-9
输出计数器
包含的交易输出数量
8
金额
以 satoshis 为单位的比特币价值
1-9
锁定脚本大小
使用以下锁定脚本的长度(以字节为单位)
不确定
锁定脚本
定义支付输出所需条件的脚本
4
锁定时间
块号或 UNIX 时间戳
3.交易信息记录
看下面的正常交易记录。
{
"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"
}
三、如何解决膨胀问题
在比特币的早期,中本聪为了保证比特币系统的安全性和稳定性,防止比特币系统受到攻击,将区块大小设置为1M。当时比特币用户数量不多,比特币交易不存在拥塞问题。
随着比特币网络的发展,越来越多的交易信息存储在单个区块中。一个 1MB 的区块只能容纳大约 2,000 笔交易。
当交易量大时,需要Queued进行区块写确认,交易网络拥塞问题越来越严重,容量问题也出现了几种解决方案。
1.块扩展
要解决块太小的问题,最直接的办法就是扩容。 2015 年中位块大小翻了一番,从 1 月的 292KB 迅速增长到 12 月的 749KB。
在 2015 年 12 月 Pieter Wuille 在比特币香港扩展会议上提出隔离见证后,扩展问题甚至被简化到只有 2MB。
为什么不让块更大,比如 30MB?
块存储交易信息。如果将块大小限制提高到 30MB,那么最大的问题不是 CPU 计算能力的瓶颈,而是块的传播和存储。
一个30MB的块可能会导致整个网络的孤块率和空块率急剧增加。年产1.5TB的区块链数据也超过了大部分节点机的硬盘容量。
基于这1.5TB的数据,区块链浏览器、钱包服务商等可能会扩大10倍至15TB,远远超过普通机器/数据库的磁盘容量。 .
除了扩展之外,其他解决方案还有隔离见证和闪电网络。
2.隔离见证和闪电网络
隔离见证(SegWit)是从交易数据中剥离交易签名数据来解决延展性攻击。
比特币交易主要由两部分数据组成。其中一部分是交易数据,它记录了比特币的来源和去向。
另一部分是见证数据,由一些加密数据组成,用以证明这些交易请求是真实的。
中本聪在设计比特币时,将这两条信息直接放在了区块中,所以一个区块不能承载更多的交易信息。
如果“见证数据”是隔离的,那么区块链只记录交易数据,所以一个区块可以承载更多的交易。
闪电网络(Lightning Network)方案是在比特币网络中增加一个“闪电网络(Lightning Network)”,
原始比特币链的金额较小。交易转移到这个闪电网络进行处理,完成后记录在原链上。
这是一个链下交易,目的是加快交易速度。以太坊也有类似的解决方案,称为雷电网络。
假设乘坐公共汽车,想象比特币区块是一辆在固定时间每十分钟一班的公共汽车,
当想乘车的人如果超过了公共汽车的容量,那些不能上车的人将不得不等待下一班公共汽车。我们的目的是让更多的人乘坐,也就是承载更多的交易。
比特币区块链本身可以根据交易率先完成交易。如果想快速完成转账等功能,可以设置更高的费用。
这类似于公共汽车让支付较高票价的人先上公共汽车的方式,而那些不想支付较高票价的人必须等到公共汽车上的人减少。
Segregated Witness 是指我们在公交车后面挂了一辆卡车(SegWit box),所有乘客都必须把背包和行李放在这辆卡车上,
因为没有个人物品的人很少,所以每个人占用的空间减少了,公交车可以载更多的人,载客量会增加。
闪电网络可以理解为在公交线路旁边设置一条铁路,让上不了车的人直接上火车,这样就需要坐车的人太多了(交易),而且车太贵了。小问题。
Segwit 和闪电网络在技术上是可行的,但也存在很多疑问。
闪电网络等依赖隔离见证的第二层网络不能被视为比特币的扩容解决方案,因为闪电网络交易并不等同于比特币的点对点链上交易。比特币交易场景不适用于闪电网络。
假设闪电网络部署成功,也会出现大型支付中心的问题,这违背了比特币作为点对点支付系统的初衷。
参考
比特币大师 比特币大师
区块链:从数字货币到信用社会