区块链 以太坊 三元组是什么 state root transaction root receipt root
一、区块结构
在各种区块链项目中(例如以太坊),节点往往需要维护三个 Trie Root,在每个区块头中会记录
- stateRoot
- transactionsRoot
- receiptsRoot
代码:https://github.com/ethereum/go-ethereum/blob/053ed9cc847647a9b3ef707d0efe7104c4ab2a4c/core/types/block.go
二、TransactionsRoot
TransactionsRoot 存储的是 block中transactions组成的Trie的Root
TransactionsRoot的作用最简单,用于接收者检查block中transactions的完整性。
三、ReceiptsRoot
ReceiptsRoot存储的是交易回执内容
receipt本身记录交易是否在block被成功执行。
代码:https://github.com/ethereum/go-ethereum/blob/ddadc3d27379a3326fd1b78278e5e5da44a91d94/core/blockchain.go
receipts, logs, usedGas, err := bc.processor.Process(block, statedb, bc.vmConfig)
四、StateRoot
StateRoot 记录的是 transaction执行结束之后的世界状态。
if root := statedb.IntermediateRoot(v.config.IsEIP158(header.Number)); header.Root != root {return fmt.Errorf("invalid merkle root (remote: %x local: %x)", header.Root, root)}
但是这个StateRoot 和 ReceiptRoot的作用仿佛就相似了。
都是检查状态改变结果是否正确。
五、ReceiptsRoot与StateRoot 作用的差异
作用上很相似,都是检查transaction执行结果是否正确。
为啥要实现两遍呢,我们是否可以通过比较StateRoot和header中一致,来保障transaction的内容正确和执行顺序正确?
ReceiptsRoot
StateRoot
我们看stateRoot的内容,有Account的内容。StateRoot更多是世界环境的Root。所以他更多是表达transaction执行后的世界。
总结
https://blog.csdn.net/cemao4548/article/details/105939491
https://docker.blog.csdn.net/article/details/109741079
区块链 以太坊 三元组是什么 state root transaction root receipt root相关推荐
- 【区块链-以太坊】5 Ubuntu下truffle ganache安装及使用
[区块链-以太坊]5 Ubuntu下truffle & ganache安装及使用 1 truffle安装 1)输入sudo npm install -g truffle 2)将truffle复 ...
- 区块链-以太坊学习资料汇总
最近一段时间以来,对区块链的底层研究和基于区块链的应用开发已经越来越火热了.机缘巧合,目前我也在进行区块链方面的开发,在之后的博客中,我会和大家一起分享区块链开发中的酸甜苦辣.今天我先来对收藏区块链- ...
- 8支团队正在努力构建下一代区块链以太坊Ethereum 2.0
2019独角兽企业重金招聘Python工程师标准>>> "我们不想在构建 Ethereum 2.0时重新造轮子." 谈到开发人员为 Ethereum 区块链进行两 ...
- 可编程区块链以太坊的未来
区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>,感受一下先行者的思想. 到本文结束时,你将了解一般的区块链(特别是下一代区 ...
- 回看2015年是如何描述区块链以太坊的未来
区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>,感受一下先行者的思想. 到本文结束时,你将了解一般的区块链(特别是下一代区 ...
- 回望Vinay2015年的文章:内容可编程的区块链——以太坊的未来
2019独角兽企业重金招聘Python工程师标准>>> 区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>, ...
- 上下文可编程区块链——以太坊的未来
区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>,感受一下先行者的思想. 到本文结束时,你将了解一般的区块链(特别是下一代区 ...
- 区块链以太坊以及hyperledger总结
https://learnblockchain.cn/ 1.什么是智能合约?它有什么特点? 就是具有交互能力而且能够在区块链中传递的合约 一个由计算机代码控制的以太币账户 特点: 公开透明.能即时与区 ...
- 区块链 以太坊 区块结构详解
一.结构 区块由两部分组成,分别是 区块头(header) 区块体(body) 1. 结构图 2. 区块头(header) 区块头存储了区块的元信息,用来对区块内容进行一些标识,校验,说明等. 通用字 ...
- 带你玩转区块链--以太坊基础、发币、基于智能合约实现彩票项目-第二章-第一节【以太坊篇】
意义: 在上一节知识学习中,我们已经了解如何实现一个基础区块链,并重构了BTC关键代码.对比传统的中心化项目,区块链项目拥有很多优势,如:追溯性.不可传篡改性.在中心化项目中的网络协议是:[数据层-- ...
最新文章
- 利用.htaccess绑定子域名到子目录(亲测万网可用)
- Gitlab用户权限管理
- Windows轻松实现linux shell环境:gitforwindows
- SpringBoot监听redis过期key
- ffmepg4 解码特别慢
- 安装CocoaPods
- Linux篇 | 多网卡绑定技术 binding 和 网络组nmcli
- JDK源码解析之 java.lang.ThreadLocal
- 13-12-X-Pack的配置与检查
- 7-16 求符合给定条件的整数集
- LintCode—链表翻转(35)
- 电路设计_示波器接地常识
- 关于如何实现一个至简的麻将模拟程序的思考
- sqlserver 登录方式修改,由默认的windows账户改为用sa等sql server账户登录问题
- UnityHub 无需登录 傻瓜教程 一键搞定
- matlab ezplot fplot,[求助]fplot和ezplot功能一样啊?
- Win7 64位系统下思维导图XMind的Java环境配置
- SQL1084C Shared memory segments cannot be allocat
- HaaS100 云端钉一体智能语音播放器设计
- 什么是POP3、SMTP和IMAP?