区块、链
准备
Hash
Hash也称散列、哈希。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出(更多解释见知乎)
特点是:相同的输入一定得到相同的输出,不同的输入大概率得到不同的输出
举例:用shell命令行下的
md5sum
来计算任意的字符的MD5哈希常见的hash算法:
文件防篡改:MD5
比特币挖矿:SHA256
证明数据片段:Merkle root
文本去重:SimHash
区块
区块(block)由区块头(block header)和交易列表(transaction list,tx list)组成,block之间通过block header的hash连接成了一个链表结构。
block header
比特币的block header(Github)
以太坊的block header(Github)
当前我们只需要关注其中两个字段(其他字段会在后续课程中解释)
hashPrevBlock
/ParentHash
,上一个block header的hashhashMerkleRoot
/TxHash
,tx list的hash
block body
block body
block body就是tx list,block header通过
TxHash
指向唯一的tx list从tx hash list得到
TxHash
的hash算法叫做默克尔树(Merkle tree),相比其他的hash算法有特殊的性质(可以简洁地证明tx存在其中)
链
TxHash
和ParentHash
相结合,赋予了区块链不可篡改的特性
最后更新于