区块链学习笔记(二)

区块链的基本结构

区块是一个包含了很多有效交易数字账簿。这些交易通过Merkle hash tree的形式组织起来。那么每个区块包含什么东西呢?
下面我们分别介绍比特币,以太坊中区块的结构:

比特币区块

区块的数据结构

  1. Magic number是一个定值,用来记录一个新的区块的开始,已经用来标示当前的区块链网络。
  2. Previous Block Hash是上一个区块的Merkle Root值,区块就是以这种形式连接起来形成一个链的。Previous Block Hash是上一个区块的Merkle Root值,区块就是以这种形式连接起来形成一个链的。
  3. Timestamp,Difficulty Target和Nonce是用来挖矿的时候使用的。
    Merkle Hash Tree结构
    上面的树形结构就是Merkle Hash Tree。树的结构和每个节点的含义以及计算方法都如图所示。

以太坊区块

和比特币的区块结构类似,由于考虑到其能力有限(例如不能提供验证当前账号持有多少资产的方法),以太坊对其区块结构进行了修正,以太坊的区块在起头中包含三棵Merkle Hash Tree的根,这三棵树分别是交易树收据树状态树
以太坊区块结构
其中的交易树和收据树类似于银行系统的交易记录和收据记录,状态树用来储存账户的整体信息,类似于银行系统的账户总览。

同样的,在以太坊中,Merkle Hash Tree的结构也发生了些许的变化。因为对于交易树来讲,二叉树的Merkle Hash Tree已经足够使用,因为交易完成以后不会再发生变化。但是,对于状态树,二叉树就不够用了,因为状态是一个key-value的存储形式,key是账户的地址,value包含了余额,nonce,代码和存储等。为了让树的插入和更新操作更加高效,需要一种新的数据结构–Patricia Tree

这种新的数据结构使得树的整体高度是有限制的,哪怕有攻击者故意增加交易来尝试着增加树的高度。另外, 树根的hash值和内部数据的次序无关,这样,插入操作的顺序不会影响根节点的计算。

EOS区块

此部分尚未完全整理清楚,整理清楚后再来填坑。

发布了4 篇原创文章 · 获赞 0 · 访问量 369
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览