时间:2023-07-22|浏览:206
区块链是一个使用哈希指针而不是指针构建的链表。
区块链的一个用例是构建一个防篡改的日志。我们可以存储一堆数据的日志数据结构,并允许将数据附加到日志的末尾。如果有人改变了日志中较早的数据,我们将会检测到。
要了解为什么区块链可以实现这个防篡改的属性,让我们来看一看,如果对手想篡改链中间的数据会发生什么。对手的目标是只记住区块链头部的哈希指针的人将无法检测到篡改。对手改变了一些区块k的数据,由于数据已经被改变,区块k+1中的哈希值是整个区块k的哈希值,因此不会匹配。由于哈希函数具有抗碰撞性,新哈希将不会与更改后的内容相匹配。因此,我们将检测区块k中的新数据与区块k+1中的哈希指针之间的不一致。对手可以继续尝试通过改变下一个区块的哈希来掩盖这个变化,但是当对手到达列表的头部时,这个策略就会失败。只要我们将哈希指针列表的头部存储在对手不能改变的地方,对手将不能在不被检测的情况下改变任何区块。
这样做的结果是,如果对手想要在整个链中的任何地方篡改数据,为了保持故事的一致性,他将不得不篡改哈希指针直到它开始的地方。而且他最终会遇到障碍,因为他无法篡改列表的头部。因此,通过记住这个单独的哈希指针,我们基本上记住了一个防篡改哈希的整个列表。因此,我们可以构建一个包含我们想要的区块的区块链,并追溯到列表的开始的一些特殊的区块,我们称之为起源区块。