所有的区块链数组实现都不正确吗?
Are all Blockchain array implementations incorrect?
我在网上发现了很多区块链的实现,但它们是真正的可以扩展的区块链吗?
Here我们可以看到区块链是作为数组启动的
var blockchain = [getGenesisBlock()];
Here 我们可以看到相同的实现:
constructor() {
this.chain = [this.createGenesis()];
}
This文章也推荐它:
constructor(genesisNode) {
this.chain = [this.createGenesisBlock()];
但是,这些实施是否已准备好扩展?
技术上,根据 maerics、
the maximum length of an array according to the ECMA-262 5th Edition
specification is bound by an unsigned 32-bit integer due to the
ToUint32 abstract operation, so the longest possible array could have
232-1 = 4,294,967,295 = 4.29 billion elements.
尺寸不是问题。以太坊已经‘只’用了7 millions blocks, Bitcoin 'only' 500k,所以有足够的space供以后使用。我在想的真正问题是,读取数组的最后一个元素需要多长时间,这是否可扩展?
在区块链中,'Block' 结构总是需要读取最后一个块的哈希值,因此我假设随着它的扩展,它需要越来越长的时间来完成它。
如果比特币 and/or 以太坊的区块链数组没有更多 space 来存储区块,它会做什么?区块链会就此结束吗?
- 可扩展性问题来自验证交易和在节点之间达成共识的成本。所以这里的问题不是访问某个块的成本。
- 区块链不是数组。从概念上讲,它更像是一个 Linked List
- 块的数量没有限制(但是硬币的数量是有限制的)。存储这些块的space也没有限制。
回答问题
是的,问题中给出的所有实现都是 incorrect/insufficient 区块链的工作。对于某些实现,您可以参考 Bitcoin's repository or Ethereum's
我在网上发现了很多区块链的实现,但它们是真正的可以扩展的区块链吗? Here我们可以看到区块链是作为数组启动的
var blockchain = [getGenesisBlock()];
Here 我们可以看到相同的实现:
constructor() {
this.chain = [this.createGenesis()];
}
This文章也推荐它:
constructor(genesisNode) {
this.chain = [this.createGenesisBlock()];
但是,这些实施是否已准备好扩展?
技术上,根据 maerics、
the maximum length of an array according to the ECMA-262 5th Edition specification is bound by an unsigned 32-bit integer due to the ToUint32 abstract operation, so the longest possible array could have 232-1 = 4,294,967,295 = 4.29 billion elements.
尺寸不是问题。以太坊已经‘只’用了7 millions blocks, Bitcoin 'only' 500k,所以有足够的space供以后使用。我在想的真正问题是,读取数组的最后一个元素需要多长时间,这是否可扩展? 在区块链中,'Block' 结构总是需要读取最后一个块的哈希值,因此我假设随着它的扩展,它需要越来越长的时间来完成它。
如果比特币 and/or 以太坊的区块链数组没有更多 space 来存储区块,它会做什么?区块链会就此结束吗?
- 可扩展性问题来自验证交易和在节点之间达成共识的成本。所以这里的问题不是访问某个块的成本。
- 区块链不是数组。从概念上讲,它更像是一个 Linked List
- 块的数量没有限制(但是硬币的数量是有限制的)。存储这些块的space也没有限制。
回答问题
是的,问题中给出的所有实现都是 incorrect/insufficient 区块链的工作。对于某些实现,您可以参考 Bitcoin's repository or Ethereum's