概念
在《比特币:一种点对点的电子现金系统》中,比特币被设计成完全不依赖任何受信任的第三方金融机构。为了在不需要第三方支持的情况下解决电子货币双重支付问题,中本聪将交易记录及工作量证明(PoW, proof-of-work)结合在一起,以链表的形式表达,链表结点则是区块(Block)。
区块中包含着众多的交易,同时也包含了时间戳等其他信息。由于交易的哈希值会影响区块的哈希值,前一区块的哈希值会影响后一区块的哈希值,因此形成了一条环环相扣的链。而维系着链强度的,则是工作量证明。
数据结构
在bitcoin-0.1.5中,与区块相关的数据结构主要集中在main.h文件中,类图如下:
nVersion:区块版本
hashPrevBlock:前一区块的哈希值
hashMerkleRoot:交易的梅克尔树根哈希值
nTime:区块时间戳
nBits:工作量证明的难度
nNonce:被用于寻找符合条件的工作量证明
vtx:区块包含的交易
vMerkleTree:交易哈希值的梅克尔树,本树不会被包含在区块头中
区块哈希:仅计算区块头部的哈希值,即从nVersion字段到nNonce字段