BTC源码分析 区块(一)

概念

在《比特币:一种点对点的电子现金系统》中,比特币被设计成完全不依赖任何受信任的第三方金融机构。为了在不需要第三方支持的情况下解决电子货币双重支付问题,中本聪交易记录工作量证明(PoW, proof-of-work)结合在一起,以链表的形式表达,链表结点则是区块(Block)。

在这里插入图片描述
区块中包含着众多的交易,同时也包含了时间戳等其他信息。由于交易的哈希值会影响区块的哈希值,前一区块的哈希值会影响后一区块的哈希值,因此形成了一条环环相扣的链。而维系着链强度的,则是工作量证明

数据结构

在bitcoin-0.1.5中,与区块相关的数据结构主要集中在main.h文件中,类图如下:

CBlock int nVersion uint256 hashPrevBlock uint256 hashMerkleRoot uint nTime uint nBits uint nNonce vector<CTransaction> vtx; vector<uint256> vMerkleTree; CTransaction int nVersion vector<CTxIn> vin; vector<CTxOut> vout; int nLockTime

nVersion:区块版本
hashPrevBlock:前一区块的哈希值
hashMerkleRoot:交易的梅克尔树根哈希值
nTime:区块时间戳
nBits:工作量证明的难度
nNonce:被用于寻找符合条件的工作量证明
vtx:区块包含的交易
vMerkleTree:交易哈希值的梅克尔树,本树不会被包含在区块头中

区块哈希:仅计算区块头部的哈希值,即从nVersion字段到nNonce字段

区块生成

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值