区块链学习笔记(二)

区块链的基本结构

区块是一个包含了很多有效交易数字账簿。这些交易通过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区块

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值