直播回顾 | 长安链可验证数据库技术架构和代码解读

embedded/2024/9/24 19:13:54/

3月29日长安链可验证数据库技术架构和代码解读中,北京大学博士后研究员高健博带开发者一起了解了长安链可验证数据库的应用背景、设计实现方式和功能代码结构。

数据存证以及通过智能合约进行数据共享是目前联盟链最直接、最广泛的应用场景。在很多存证场景中,需要上链的数据量特别大,但是数据价值密度并不高,相比于完全的链上存储,通过一定的链下存储并在链上进行验证,能够降低存储成本且保障数据权限,但是链下存储需要保证数据可信及其完整性。链下存储背景介绍中,高健博分析了链下存储的具体环节以及环节中存在的问题(视频约0-9分钟)。

图片


可验证数据库介绍环节,高健博博士分享了区块链、数据库的数据结构与链下数据存储完整性的定义,着重介绍了保证数据完整性的5种方案,其中Merkle B+树索引结构的可验证数据库兼顾了数据完整性的三个方面:正确性、真实性、全面性(视频约9-29分钟)。

设计实现方式介绍环节高健博博士分享了可验证数据库的链上链下交互过程。可验证数据库是作为MySQL插件开发的存储引擎,已经提供了完善的技术文档和相对完备的组件,目前主要适配了长安链2.3.1版本。高健博博士分享了可验证数据的具体使用方式,并通过视频进行了直观展示(视频约29-45分钟)。

最后代码解读环节介绍了可验证数据的代码目录结构和文件功能划分以及具体的代码内容(视频约45-50分钟)。

直播精彩问答

1.请问proof包括什么内容?请讲一下具体的验证过程,谢谢!

答:可验证数据库的证明主要包括Merkle证明和范围证明,其中范围证明是超出查询条件且与查询结果连续的两端数据,只需要通过比较查询条件即可;Merkle证明是查询结果及范围证明到Merkle根的路径,验证时需要重新计算hash,然后与Merkle根进行比较。

2. 只能验证查询条件是ID的记录吗?审计业务过程中查询条件很少是ID,可能是地区,年龄等。业务数据产生时可能不知道查询条件是什么?

答:直播中讲解查询条件为ID是为了便于理解,实际上只要是索引键都可以作为查询条件,但是推荐使用数字、字符串等分布较大且有序的键,例如年龄、编号等,不建议使用只有少数枚举值的字段,例如性别。

3. 把查询结果上链有必要吗,只发给在乎的参与对象可以么?

答:从验证查询结果的角度来说,不是必须上链的,也可以通过链下发送查询结果和证明。但是上链能够带来两个好处:一是发起链下查询的重要目的就是保证结果可信,上链之后能够让查询结果和证明具备抗抵赖等特性;二是通过智能合约封装了查询结果及证明的验证功能,降低开发难度和成本,所以还是推荐通过上链方式实现可验证数据库查询。

4. 树的大小有限制吗,如果数据比较多,数据的增删会不会引起比较大的开销?

答:树的大小限制和开销都是与传统关系型数据库的B+树一致的,额外的开销仅在Merkle树的更新时产生。Merkle树不会再数据增删改时实时更新,只在数据库管理员触发生成可验证版本(类似传统关系型数据库备份或快照)时才会进行批处理,这一过程可以在凌晨等业务低谷时进行。


http://www.ppmy.cn/embedded/2640.html

相关文章

基于mpc实现无人机轨迹跟踪ROS功能包:mav_control_rw

功能包简介 mav_control_rw 功能包是ETHZ ASL的利用mpc控制实现了旋翼式无人机的轨迹追踪算法。 mpc是模型预测控制的简称,全称是Model-based Predictive Control mpc利用一个已有的模型、系统当前的状态和未来的控制量,来预测系统未来的输出&#xf…

redis zremove删除不掉【bug】

redis zremove删除不掉【bug】 前言版权redis zremove删除不掉错误产生相关资源EldDataEchartsTestDataService 解决 最后 前言 2024-4-12 20:35:21 以下内容源自《【bug】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星…

设计模式系列:适配器模式

简介 适配器模式(Adapter Pattern)又称为变压器模式,它是一种结构型设计模式。适配器模式的目的是将一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而不能一起工作的两个类能够一起工作。 适配器模式有两种…

Flume配置案例@Source:端口,Channel:内存,Sink:控制台

vim /opt/module/flume/job/port_to_console.conf ------------------------- 在nc-flume-log.conf文件中添加如下内容。 # Name the components on this agent a1.sources r1 a1.sinks k1 a1.channels c1# Describe/configure the source a1.sources.r1.type netcat a1.so…

Scala 03 —— Scala Puzzle 拓展

Scala 03 —— Scala Puzzle 拓展 文章目录 Scala 03 —— Scala Puzzle 拓展一、占位符二、模式匹配的变量和常量模式三、继承 成员声明的位置结果初始化顺序分析BMember 类BConstructor 类 四、缺省初始值与重载五、Scala的集合操作和集合类型保持一致性第一部分代码解释第二…

一文掌握 React 开发中的 JavaScript 基础知识

前端开发中JavaScript是基石。在 React 开发中掌握掌握基础的 JavaScript 方法将有助于编写出更加高效、可维护的 React 应用程序。 在 React 开发中使用 ES6 语法可以带来更简洁、可读性更强、功能更丰富,以及更好性能和社区支持等诸多好处。这有助于提高开发效率,并构建出更…

vue和react通用后台管理系统权限控制方案

1. 介绍 在任何企业级应用中,尤其是后台管理系统,权限控制是一个至关重要的环节。它确保了系统资源的安全性,防止非法访问和操作,保障业务流程的正常进行。本文件将详细解析后台管理系统中的权限控制机制及其实施策略。 那么权限…

AWTK 开源串口屏 MODBUS Server 模型

名称&#xff1a;modbus_server 功能&#xff1a;通过 modbus 协议提供服务&#xff0c;供远程客户端&#xff08;主站&#xff09;访问。 1. 创建 通过 modbus_server 创建模型。 示例&#xff1a; <window v-model"modbus_server" name"home_page&quo…