arrays - 使用区块链为简单数组创建版本控制
问题描述
我已经建立了一个简单的区块链。我想建立一个数字数组的版本控制。我想记录新号码的添加、删除和号码的交换。存储这些更改的节省空间的方式是什么?我考虑过为数组的所有元素创建一个 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我正在学习区块链的概念并从头开始构建它。请不要评判项目本身。
解决方案
为了跟踪更改,您可以简单地为数组中的每个元素保存单独的更改。在您的示例中,它会是这样的:
STATE 1: [1:3,2:4,3:5,4:6]
STATE 2: [5:4]
STATE 3: [1:1,2:-1]
如果每次状态更新都有很多变化,那么它不会节省空间。但是,如果超过一半的阵列保持不变,您将受益。
Merkle Tree 用于验证从未知或鲜为人知的来源接收到的单个数据块(交易)。它用于区块链钱包或种子客户端。它不用于存储数组。
推荐阅读
- django - 如何使用突变一次更新一个字段?石墨烯-django
- javascript - Jquery - 获取空格后单词的第一个字符
- c - K&R C 编程语言练习 1-16
- swift - 为自定义按钮使用 UINavigationBar 外观“后退”图标?
- javascript - Javascript、HTML 和 CSS:我做错了什么?
- python - micro:bit Python 发送无线电图像
- flutter - 如何使用 WebRTC 和 Web Socket 让 Flutter 应用程序监听来电
- nginx - nginx - 带有返回 301 重定向的 proxy_pass
- swift - 快速将键值对附加到现有字典值
- python - 在未安装 python 的情况下通过云服务器在本地机器上运行 Python(py 文件)