我在网络上发现了许多区块链实现,但是它们是可以扩展的真正的区块链吗? 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,因此有足够的空间用于未来。我在想的真正问题是,读取数组的最后一个元素需要花费多长时间,并且可以扩展吗? 在区块链中,“块”结构始终需要读取最后一个块的哈希,因此我认为随着扩展,它花费的时间越来越长。
如果比特币和/或以太坊的区块链数组没有更多空间来存储区块,该怎么办?区块链会就此结束吗?
答案 0 :(得分:1)
是的,问题中给出的所有实现都不正确/不足以使区块链正常工作。对于某些实现,您可以参考Bitcoin's repository或Ethereum's