说透区块链
自游
区块链服务平台资深架构师
7193 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 19 讲
说透区块链
15
15
1.0x
00:00/00:00
登录|注册

04 | 存储:区块链的存储设计有定式吗?

你好,我是自游。
上一讲我们从直观的角度,用“铁索连环”的例子和你探讨了区块链技术特性,也顺便引出了区块链技术基础。从今天开始,我会用几讲的时间为你解释每一种技术在区块链中的最核心应用,以点带面,为你勾画出区块链技术体系。
这一讲我会带你深入单个区块链节点,让你了解区块链存储是如何设计的。其实一说到存储设计,我们首先想到的是区块链里如何存储数据,以及要使用哪种数据库这些常规定式内容。但在我看来,这些都只拘泥于存储设计的表面。
想要真正把握住区块链存储的要点,我们更需要把握的是交易、区块还有状态这三个基础概念,有了这些基础,你再去分析区块链存储设计就会驾轻就熟了。
这里我为你准备了一张区块链的存储示意图,现在你可能还不太理解图里的逻辑关系,不过别担心,学完这节课之后,你就能真正理解后面这张图了。
区块链存储示意图

交易

我们首先需要理解的概念就是交易(Transaction),这是区块链中的最小也是最核心的知识点。因为我们最初接触区块链大多从比特币开始,所以我们通常会把交易理解成转账,但其实这个理解比较片面。其实在区块链中,交易的概念已经有所扩展。
从行为的角度解释,交易等同于操作(Operation),我们向区块链网络提交一笔交易实质上是发起了一个操作,而操作的具体内容与特定区块链协议有关,比如在以太坊中,一个操作可能就是执行了智能合约中的一个方法。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了区块链存储设计的核心原理,从交易和区块两个关键概念出发,详细解析了区块链存储的设计原理。首先,对交易进行了深入解析,包括交易的属性和唯一标识,以及通过哈希算法保证其唯一性。其次,对区块作为存储交易数据的容器进行了解析,包括区块头和区块体的组成,以及区块间的关联关系形成的区块链。此外,文章还介绍了默克尔树的概念及其在区块链中的应用,以及状态在区块链中的重要性和有限状态机的概念。最后,对区块链中的状态模型进行了归纳和比较,包括UTXO模型、账户模型和通用模型的设计及应用场景。总结来看,本文通过对交易、区块和状态的深入解析,为读者提供了全面了解区块链存储设计的核心原理的基础,为进一步深入学习区块链技术打下坚实基础。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《说透区块链》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(15)

  • 最新
  • 精选
  • 姚莉莉
    我的理解:“数据库”记录我当前银行账户里有多少钱,比如有100万。“区块链”,可以拉流水,100万是怎么来的,哪些在何时的支出和收入。 不知道理解正确吗?请老师指正

    作者回复: 是的,可以这么理解。区块链从最根本上就支持这种追溯的特性,不需要额外的工作。而数据库其实也可以实现这个功能,但是需要额外的表去记录,且不具备不可篡改特性

    2021-08-01
    2
  • 文杰
    老师你好,请问状态可以类比为数据库记录?不是太理解状态

    作者回复: 可以这么理解的。状态等同于现在,区块是历史

    2021-08-31
    1
  • 二两
    讨论1:类比数据库,如果是业务人员,跟多关注是的数据库中的值,即最终的状态,此时状态重要,如果数据回滚时,更关注SQL记录,此时区块更重要。 讨论2:利用hash作为业务上的key进行关联,类似与每个数据有自己的id,这个在分布式数据库上也是类似的设计。

    作者回复: 关于讨论2,其实哈希就是区块哈希跟交易哈希,只有能把索引对应,怎样存都可以

    2021-08-19
    2
    1
  • If_
    刚好去一个区块链公司,感谢sarah,好及时。

    作者回复: 希望能帮助到你!

    2021-07-30
    2
    1
  • 高鹏0409
    存储结构可以和mysql类比吗?交易类似binlog,是有序操作记录;区块类似B+数存储;状态是经过多次修改后的值

    作者回复: 是的,可以这样类比理解

    2021-07-29
    1
  • skull
    都重要,但区块保证了可追溯性,不可篡改性,是基础

    作者回复: 是的,没有交易跟区块,只有状态,这样的区块链跟数据库差异不大

    2021-07-28
    1
  • Link
    我觉得对于开发者来说,状态更重要。区块好比框架,而状态是做具体业务时需要设计的数据结构和算法。

    作者回复: 对的。状态更多的是服务于基于区块链的上层业务

    2021-07-28
    1
  • 忘形鱼
    单个区块链节点包含很多个区块,区块包含多个交易,多个区块通过区块哈希串联起来。而所有区块链节点里的区块数据都是完全一样的是吗?

    作者回复: 嗯嗯,是的

    2022-06-14
  • 秋天
    区块更重要,大不了 通过历史区块 推导出状态把?

    作者回复: 对的,状态的生成离不开区块。但区块的新增需要状态进行加速

    2022-06-13
  • 林家振
    有个问题不是很懂,如果没有交易那也能挖到区块吗?里面存什么?

    作者回复: 这个问题需要按你的设计来。比如公链有币,所以有一笔默认存在的cornbase交易,也就是说即便没有转账交易,也会有唯一一笔挖矿交易。而有些无币区块链,即联盟链等就不需要挖矿,所以你可以设计为有交易时再出块,也可以设计为可以出空块。

    2022-04-08
收起评论
显示
设置
留言
15
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部