我在网络上发现了许多区块链实现,但是它们是可以扩展的真正的区块链吗?
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 repository或Ethereum's
关于javascript - 所有的区块链数组实现都不正确吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54084583/