MPT树是如何回滚的

1,mpt树优于hash表,在区块连网络中,需要确认世界状态相同 ,hash表需要校验所有的hash

2.使用序列表会导致插入过程麻烦,插入一条数据,整个链路都要更新

MPT树是如何恢复的?(世界状态中的mpt树)

mpt树的恢复与mpt树的更新是有关系的,在以太坊的生命周期中,世界状态的mpt树是根据更新的方式来改变状态的,具体而言,无论是对树做增删改,最后在数据库中都是插入一个新的key,然后根据这个新的key去更新路径上所有的key(更新的过程也是新建key然后插入进去,老key不会丢失)

根据节点的key-v我们可以知道,树的构建是由下而上的,因为父节点在存储是依赖前一节点的hash,当然分支节点中是在各个分支中写入hash,所以分支节点中包含大量的hash。那么当整个实际状态更新时:

例如node3发生了改变,并不会改变node3此刻对应的key-v ,而是会新建一个node,然后更新node2,node1,使得整个世界状态指向新产生的node3.

那么这样操作之后,当我们需要回滚时,我们只需要知道在需要回滚的位置的根状态hash,那么整个世界状态就可以根据这个过去的roothash,找回历史装状态,对于上面的例子而言,老的roothash最后会引导你找到老的node3 你将拿到node3被修改之前的状态。

这也是为什么 世界状态可以根据roothash恢复。

合约中删除数据可以减轻合约MPT树的负担吗?

那么回味一下,世界状态能根据roothash恢复的关键是每一次世界状态的更新,以太坊都会把新状态落盘到数据库里面去,那么对于合约的mpt树,实际上是不影响的,也就是如果我们把合约中的数据进行删除的确会减少mpt树的负担,因为删除的过程实际上会减少mpt树的树枝,并且改变了mpt树的结构。

可以参考一下这里对mpt树的删除操作:https://learnblockchain.cn/article/319

树的结构确实会变简化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/774133.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【YashanDB知识库】使用select * 创建的物化视图无法进行查询重写

问题现象 使用如下语句准备测试数据: alter system set query_rewrite_enabled=force scope=both; drop table test; create table test(tid number, tname varchar2(30)); beginfor i in 1..100000 loopinsert into test values(i, i||abcd);end loop; end; / commit; drop m…

[RoarCTF 2019]Easy Java

[RoarCTF 2019]Easy Java Step 1 点击help按钮后发现: URL变成: url/Download?filename=help.docx 而回显: java.io.FileNotFoundException:{help.docx}而当我尝试尝试POST,发现文件成功下载:Step 2 发现可能的漏洞点后,结合WEB-INF相关知识(见文末) 可以下载WEB-INF/…

elasticsearch单机版—安装详细教程

一、ES介绍Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作: (1).分布式实时文件存储,并将每一个字段都编入…

人工智能水平测试七级实操——智能环境检测系统

人工智能水平测试七级实操——智能环境检测系统 1 摄像头识别 自动检测摄像头前方是否出现运动的【红色】物体,如果出现显示与物体颜色相近的灯并保持长亮,并持续发出特定的报警声音;若物体停止运动,则灯保持长亮,报警声停止;无题离开视野范围内,则灯熄灭,报警停止; 2…

OI特殊性质总结——笔记(持续更新)

1.交换序列中\(x,y\), 逆序对奇偶性变换 交换 \(x,y\) 首先 $ k \leq x$ 部分的逆序对不变,\(k \geq y\) 部分不变 唯有 \(x \leq k \leq y\) 会变化 那么怎么变呢? 如图:原来逆序对 \(a + c\) ,现在逆序对: \(a + b + b + c + 1 = a + 2b + c + 1\) 那么我们换完会奇偶性…

[rCore学习笔记 019]在main中测试本章实现

写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 批处理操作系统的启动和运行流程 要想把本章实现的那些模块全部都串联在一起以实现运行一个批处理操作系统,回顾本章内容,思考批…

MySQL 学习笔记 进阶(存储过程 下,存储函数,触发器,锁 上)

存储过程存储过程-if判断语法IF 条件1 THEN...... ELSEIF 条件2 THEN...... ELSE...... END IF; 存储过程-参数 用法CREATE PROCEDURE 存储过程名称([ IN/OUT/INOUT 参数名 参数类型 ]) BEGIN-- SQL语句 END; 存储过程-case语法一CASE case_valueWHEN when_value1 THEN state…

TFA-收集日志及分析

下载https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=272133523880062&id=1513912.1&_afrWindowMode=0&_adf.ctrl-state=fghvcgapa_617a 安装[root@rhel75 ~]# ./ahf_setup AHF Installer for Platform Linux Architecture x86_64AHF Installa…

C# 文件操作

本篇主要记录C#操作文件 相对路径在项目文件...\bin\Debug 目录下 一、写入读取文件写入/// <summary>/// initial 文件写入/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private vo…

Python 环境配置(二)安装jupyter、matplotlib、numpy库

Python 环境配置(二)安装jupyter、matplotlib、numpy库 一、numpypip install numpy二、matplotlibpip install matplotlib 三、jupyter 1、anaconda自带Jupyter 2、pycharm 插件只有 Pycharm 的 Professional 版才支持 Jupyter Notebook,请注意版本3、新建文件#%%import nu…

Meta SAM 2:实时分割图片和视频中对象;Apple Intelligence 首个开发者测试版发布丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点…

Python 环境配置(一)Python、Anaconda、Pycharm的安装

Python 环境配置(一)Python、Anaconda、Pycharm的安装本人之前已安装一次,此次为卸载之后的重新安装。。。一、Python 1、下载 下载官网: 下载链接:Download Python | Python.org勾选 添加到路径 (环境变量)next如图所示之后点close关闭2、验证 win+R cmd: python退出 …