区块
区块链是由网路参与者共同维护的帐本,我们可以将区块链想像成一本帐簿,而「区块」就是每一页的交易纪录。
一个完整的区块需包含四个部分:
区块大小(Block Size):该区块的容量大小 (比特币的区块大小限制在 1MB 以内)
区块头(Block Header):用于验证区块的有效性
交易数量(Transaction Counter):该区块中的交易数量
交易资讯(Transactions):每一笔被包含在这个区块中的交易资讯
区块头(Block Header)
区块头主要目的是让矿工快速的审核该区块的有效性,并让每一个区块与前一个区块资料产生无形的连结,确保区块序列及歷史纪录的正确性,这也是形成「链」最关键的连结,就好比帐佈的每一页都会有页码,如果有人窜改帐本撕掉其中一页,因为页码对不上我们就能很轻易的发现资料有误。区块头由六个部分所构成:
版本(Version):当前区块链版本
前Hash值(Previous Block Hash ):父区块头的 Hash 值
哈希树根(Merkle Root):被包含在该区块的最终 Hash 值
时间戳(Timestamp):该区块产生的时间
难度目标(Difficulty Target):该区块工作量证明的难度
随机数(Nonce):符合计帐条件的随机数
区块体(Block Body)
区块体较为简单,所包含的内容就是由该区块矿工所验证的交易的支出地址详情、接收地址详情、交易数量统计、交易时间戳以及交易 Hash 值等。
支出地址详情:发起比特币交易的地址
接收地址详情:接收比特币交易的地址
交易数量统计:交易的比特币数量
交易时间戳:时间戳是指1970年01月01日格林威治时间 00:00:00 到交易发起时的总秒数。
交易 Hash 值:该笔交易在区块链上的交易编号每一笔交易的 Hash 值,都是 Merkle Tree 的一部分,最终会生成区块头中的 Merkle Root,保障了纪录在区块链上每一笔交易的有效性与不可窜改性。
此外,纪录在区块体中的交易分为两种。
Coinbase 交易:只有收款方,没有付款方。比特币区块链上的每个区块之中会包含多个交易(transaction),其中第一个交易就叫做 Coinbase 交易,也就是系统给矿工的挖矿奖励
一般交易:一般的链上交易
创世区块(Genesis Block)
创世区块就是整个区块链的第一个区块,另一个说法是区块高度为 0( Block #0) 的区块。根据上文所说,每一个区块的区块头都必须引用前一个区块的 Hash 值,因此,系统诞生时必须直接生成创世区块 Block #0,Block #1 才能引用其 Hash 值放进区块头,接着就能够按照这个规则不断产生区块,连接成区块链。