所有的区块链阵列实现都是错误的吗?

时间:2019-01-08 02:44:34

标签: javascript arrays blockchain ethereum bitcoin

我在网络上发现了许多区块链实现,但是它们是可以扩展的真正的区块链吗? 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亿个元素。

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

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

1 个答案:

答案 0 :(得分:1)

  • 可扩展性问题来自节点之间验证交易并达成共识的成本。因此,在这里访问问题并不是要花费某个块的代价。
  • 区块链是不是数组。从概念上讲,它更像是一个链接列表
  • 块的数量没有没有限制(尽管硬币数量有一个)。存储这些块的空间也不受限制。

回答问题

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