区块、链
准备
Hash
Hash也称散列、哈希。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出(更多解释见知乎)
特点是:相同的输入一定得到相同的输出,不同的输入大概率得到不同的输出
举例:用shell命令行下的
md5sum来计算任意的字符的MD5哈希$ md5sum <<< haha 7494ab07987ba112bd5c4f9857ccfb3f - $ md5sum <<< hehe e4439267203fb5277d347e6cd6e440b5 - $ md5sum <<< hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh 6f2362c812dcfd693da2e3ae537cfb41 -常见的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相结合,赋予了区块链不可篡改的特性
最后更新于
这有帮助吗?
