04 | 存储:区块链的存储设计有定式吗?
自游
你好,我是自游。
上一讲我们从直观的角度,用“铁索连环”的例子和你探讨了区块链技术特性,也顺便引出了区块链技术基础。从今天开始,我会用几讲的时间为你解释每一种技术在区块链中的最核心应用,以点带面,为你勾画出区块链技术体系。
这一讲我会带你深入单个区块链节点,让你了解区块链存储是如何设计的。其实一说到存储设计,我们首先想到的是区块链里如何存储数据,以及要使用哪种数据库这些常规定式内容。但在我看来,这些都只拘泥于存储设计的表面。
想要真正把握住区块链存储的要点,我们更需要把握的是交易、区块还有状态这三个基础概念,有了这些基础,你再去分析区块链存储设计就会驾轻就熟了。
这里我为你准备了一张区块链的存储示意图,现在你可能还不太理解图里的逻辑关系,不过别担心,学完这节课之后,你就能真正理解后面这张图了。
区块链存储示意图
交易
我们首先需要理解的概念就是交易(Transaction),这是区块链中的最小也是最核心的知识点。因为我们最初接触区块链大多从比特币开始,所以我们通常会把交易理解成转账,但其实这个理解比较片面。其实在区块链中,交易的概念已经有所扩展。
从行为的角度解释,交易等同于操作(Operation),我们向区块链网络提交一笔交易实质上是发起了一个操作,而操作的具体内容与特定区块链协议有关,比如在以太坊中,一个操作可能就是执行了智能合约中的一个方法。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了区块链存储设计的核心原理,从交易和区块两个关键概念出发,详细解析了区块链存储的设计原理。首先,对交易进行了深入解析,包括交易的属性和唯一标识,以及通过哈希算法保证其唯一性。其次,对区块作为存储交易数据的容器进行了解析,包括区块头和区块体的组成,以及区块间的关联关系形成的区块链。此外,文章还介绍了默克尔树的概念及其在区块链中的应用,以及状态在区块链中的重要性和有限状态机的概念。最后,对区块链中的状态模型进行了归纳和比较,包括UTXO模型、账户模型和通用模型的设计及应用场景。总结来看,本文通过对交易、区块和状态的深入解析,为读者提供了全面了解区块链存储设计的核心原理的基础,为进一步深入学习区块链技术打下坚实基础。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《说透区块链》,新⼈⾸单¥59
《说透区块链》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(15)
- 最新
- 精选
- 姚莉莉我的理解:“数据库”记录我当前银行账户里有多少钱,比如有100万。“区块链”,可以拉流水,100万是怎么来的,哪些在何时的支出和收入。 不知道理解正确吗?请老师指正
作者回复: 是的,可以这么理解。区块链从最根本上就支持这种追溯的特性,不需要额外的工作。而数据库其实也可以实现这个功能,但是需要额外的表去记录,且不具备不可篡改特性
2021-08-012 - 文杰老师你好,请问状态可以类比为数据库记录?不是太理解状态
作者回复: 可以这么理解的。状态等同于现在,区块是历史
2021-08-311 - 二两讨论1:类比数据库,如果是业务人员,跟多关注是的数据库中的值,即最终的状态,此时状态重要,如果数据回滚时,更关注SQL记录,此时区块更重要。 讨论2:利用hash作为业务上的key进行关联,类似与每个数据有自己的id,这个在分布式数据库上也是类似的设计。
作者回复: 关于讨论2,其实哈希就是区块哈希跟交易哈希,只有能把索引对应,怎样存都可以
2021-08-1921 - If_刚好去一个区块链公司,感谢sarah,好及时。
作者回复: 希望能帮助到你!
2021-07-3021 - 高鹏0409存储结构可以和mysql类比吗?交易类似binlog,是有序操作记录;区块类似B+数存储;状态是经过多次修改后的值
作者回复: 是的,可以这样类比理解
2021-07-291 - skull都重要,但区块保证了可追溯性,不可篡改性,是基础
作者回复: 是的,没有交易跟区块,只有状态,这样的区块链跟数据库差异不大
2021-07-281 - Link我觉得对于开发者来说,状态更重要。区块好比框架,而状态是做具体业务时需要设计的数据结构和算法。
作者回复: 对的。状态更多的是服务于基于区块链的上层业务
2021-07-281 - 忘形鱼单个区块链节点包含很多个区块,区块包含多个交易,多个区块通过区块哈希串联起来。而所有区块链节点里的区块数据都是完全一样的是吗?
作者回复: 嗯嗯,是的
2022-06-14 - 秋天区块更重要,大不了 通过历史区块 推导出状态把?
作者回复: 对的,状态的生成离不开区块。但区块的新增需要状态进行加速
2022-06-13 - 林家振有个问题不是很懂,如果没有交易那也能挖到区块吗?里面存什么?
作者回复: 这个问题需要按你的设计来。比如公链有币,所以有一笔默认存在的cornbase交易,也就是说即便没有转账交易,也会有唯一一笔挖矿交易。而有些无币区块链,即联盟链等就不需要挖矿,所以你可以设计为有交易时再出块,也可以设计为可以出空块。
2022-04-08
收起评论