我在网络上发现了许多区块链实现,但是它们是可以扩展的真正的区块链吗?
Here我们可以看到区块链以数组形式启动

var blockchain = [getGenesisBlock()];


Here我们可以看到相同的实现:

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


This文章也推荐它:

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


但是,这些实现中的任何一种都可以扩展吗?

从技术上讲,根据maerics


  根据ECMA-262第5版的最大阵列长度
  规范受一个无符号的32位整数约束,这是因为
  ToUint32抽象操作,因此可能的最长数组
  232-1 = 4,294,967,295 = 42.9亿个元素。


大小没有问题。以太坊使用了'only'7 millions blocks,比特币'only'500k,因此有足够的空间供将来使用。我在想的真正问题是,读取数组的最后一个元素需要花费多长时间,并且可以扩展吗?
在区块链中,“块”结构始终需要读取最后一个块的哈希,因此,我认为随着扩展,它花费的时间越来越长。

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

最佳答案

可伸缩性问题来自验证事务和在节点之间达成共识的成本。因此,这不是问题所在,而是访问某个特定块的成本。
区块链不是数组。从概念上讲,它更像是一个链接列表
块数没有限制(尽管硬币数为1)。存储这些块的空间也不受限制。


回答问题

是的,问题中给出的所有实现都不正确/不足以使区块链正常工作。对于某些实现,您可以参考Bitcoin's repositoryEthereum's

关于javascript - 所有的区块链数组实现都不正确吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54084583/

10-12 19:19