0

我已经建立了一个简单的区块链。我想建立一个数字数组的版本控制。我想记录新号码的添加、删除和号码的交换。存储这些更改的节省空间的方式是什么?我考虑过为数组的所有元素创建一个 merkle 树并存储 merkle 根以检查版本是否匹配,但是将相同的数据存储到多个块中是多余且低效的。请指导我!

STATE 1: [3,4,5,6]
STATE 2: [3,4,5,6,4]
STATE 3: [4,3,5,6,4]


Block1 HeaderHash: h(h(34)+h(56))
Block2 HeaderHash: h(h(34)+h(56)+h(44))
Block3 HeaderHash: h(h(43)+h(56)+h(44))

PS我正在学习区块链的概念并从头开始构建它。请不要评判项目本身。

4

1 回答 1

0

为了跟踪更改,您可以简单地为数组中的每个元素保存单独的更改。在您的示例中,它会是这样的:

STATE 1: [1:3,2:4,3:5,4:6]
STATE 2: [5:4]
STATE 3: [1:1,2:-1]

如果每次状态更新都有很多变化,那么它不会节省空间。但是,如果超过一半的阵列保持不变,您将受益。

Merkle Tree 用于验证从未知或鲜为人知的来源接收到的单个数据块(交易)。它用于区块链钱包或种子客户端。它不用于存储数组。

于 2018-05-06T16:40:10.537 回答