Bitcoin区块验证
Posted failymao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bitcoin区块验证相关的知识,希望对你有一定的参考价值。
目录
区块的生成
矿工在挖矿前要组建区块
将coinbase交易打包进区块
将交易池中高优先级的交易打包进区块
优先级 = 交易的额度 * UTXO的深度/交易的size
- 防粉尘攻击
创建区块的头部
版本号
|父区块哈希
|Merkle树根
|时间戳
|难度值
|Nonce
?
挖矿成功后,将计算出来的随机数noncet填入区块头部,向临近节点传播
区块的验证链接
验证过程
- 相邻节点收到新区快后,立即做以下检查
- 验证Pow的nonce值是否符合难度值
- 检查时间戳是否小于当前时间2小时(10分钟一个块)
- 检查Merkle树根是否正确
- 检查区块size要小于区块size的上限
- 第一笔交易必须是coinbase的交易
- 验证每笔交易
Merkle Tree结构
二叉树
树--由多个节点组成的一种数据结构
- 每个节点存储数据
- 根节点root
- 父节点,子节点,兄弟节点
构建二叉搜索数
12
5
2
18
19
15
17
16
9
?
Merkle Tree
防止数据篡改
快速验证某个交易是否存在
节点存储Hash值
从子节点构造树
Merkle Path - 验证路径
只需log2(N)个已知数,即可验证K是否被包含在区块中
H[^K]为查找交易
H[^ABCDEFGH]和H[^MNOP]及H[^IJ] 为临近已知父节点
H[^L]为相邻节点交易Hash
?
以上是关于Bitcoin区块验证的主要内容,如果未能解决你的问题,请参考以下文章