是否所有区块链阵列实现都不正确



我在网上发现了许多区块链实现,但它们真的是可以扩展的区块链吗?在这里我们可以看到,区块链是作为一个数组启动的

var blockchain = [getGenesisBlock()];

在这里我们可以看到相同的实现:

constructor() {
this.chain = [this.createGenesis()];
}

本文还推荐它:

constructor(genesisNode) {
this.chain = [this.createGenesisBlock()];

然而,这些实现中的任何一个都准备好进行扩展了吗?

从技术上讲,

根据ECMA-262第5版的阵列的最大长度由于ToUint32抽象操作,因此最长的数组可能具有232-1=4294967295=42.9亿个元素。

大小不是问题。以太坊只使用了700万块,比特币只使用了50万块,因此未来有足够的空间。我想的真正问题是,读取数组的最后一个元素需要多长时间,这是否可以扩展?在区块链中,"区块"结构总是需要读取最后一个区块的哈希,因此我认为随着它的扩展,它需要越来越长的时间来完成。

如果比特币和/或以太坊的区块链阵列没有更多的空间来存储区块,他们会怎么做?区块链会就此结束吗?

  • 可伸缩性问题源于验证事务和在节点之间达成共识的成本。因此,访问某个块的成本并不是问题所在
  • 区块链是而不是数组。从概念上看,它更像是一个链表
  • 区块数量没有限制(但硬币数量有一个限制)。存储这些块的空间也不受限制

回答问题

是的,问题中给出的所有实现都不正确/不足以让区块链发挥作用。对于某些实现,您可以参考比特币的存储库或以太坊的

最新更新