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

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树不会再数据增删改时实时更新,只在数据库管理员触发生成可验证版本(类似传统关系型数据库备份或快照)时才会进行批处理,这一过程可以在凌晨等业务低谷时进行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算请假时间,只包含工作时间,不包含中午午休和非工作时间及星期六星期天,结束时间不能小于开始时间

1.计算相差小时,没有休息时间 computed: {// 计算相差小时time() {let time 0;if (this.ruleForm.date1 &&this.ruleForm.date2 &&this.ruleForm.date3 &&this.ruleForm.date4) {// 开始时间let date1 this.ruleForm.date1;let y date…

Mysql学习一

目录 1.启动数据库: 2.命令行连接到MySQL(winr输入cmd) 3.MySQL的三重结构: 4.SQL语句分类: 1.启动数据库: winr——输入services.msc进入本地服务 2.命令行连接到MySQL(winr输入cmd&#x…

pyCharm导入pyspark中的sparkconf和sparkcontext错误

背景:学习黑马程序员python课程的pyspark实战部分时按照下图导入pysark包时发现sparkconf和sparkcontext无法导入和运行。 首先想到是不是在CMD窗口下载的pySpark路径及安装是否正确? 通过下图发现第三方库都安装正确,然后就考虑库的路径&a…

【Axure教程0基础入门】05动态面板

05动态面板 1.动态面板是什么? 一个用来存放多个元件的容器(container) 其中包含多个状态(state),但同时只能显示一个 状态之间,可以通过交互动作(action)控制切换和动…

[激光原理与应用-88]:图解激光在工业加工领域的应用大全以及激光加工的优势

目录 前言: 激光加工分类 一、材料清除 1.1 激光清洗:去除污垢 1.2 激光雕刻:去除多余 1.3 激光划线 1.4 激光切割 1.5 激光打标 1.6 激光打孔 1.7 激光雕刻 二、材料增强 2.1 激光淬火:增加强度 2.2 激光退火&#…

企业常用Linux正则表达式与三剑客/企业生产环境及知识/企业中远程连接ssh工具(为什么连接有时慢?)

企业高薪思维: 1.学习去抓重点有价值知识 2.猛劲学,使劲学(能否给别人将会,讲明白,写明白,练习明白),在学习过程中你觉得学会了60-80%,其实你只会了40-50%,你要讲明白会操…

阿里天池-淘宝用户购物行为数据可视化分析

目录 背景:数据说明:任务描述数据分析1. 流量分析2.漏斗分析 背景: 本次可视化分析的目的是针对脱敏过的用户行为数据(包括浏览、收藏、加购和购买4类数据)进行分析,使用Python、Numpy、Pandas和Matplotli…

面试十七、list和deque

一、 Deque Deque容器是连续的空间,至少逻辑上看来如此,连续现行空间总是令我们联想到array和vector,array无法成长,vector虽可成长,却只能向尾端成长,而且其成长其实是一个假象,事实上(1) 申请更大空间 (…

【C++】 二叉排序树BST(二叉搜索树)

目录 二叉搜索树的概念 二叉搜索树操作 基本框架 插入 二叉搜索树的删除(重点) 二叉搜索树的查找 拷贝构造 析构函数 operator 遍历 递归构造搜索二叉树 插入 删除 查找 二叉树的应用 二叉搜索树的性能分析 代码示例 BSTree.h Test.cpp 二叉搜索树的概念 二…

LMDeploy 量化部署 LLM-VLM 实践——作业

LMDeploy 量化部署 LLM-VLM 实践——作业 一、 基础作业1.1、配置 LMDeploy 运行环境1.2、以命令行方式与 InternLM2-Chat-1.8B 模型对话 二、进阶作业2.1、设置 KV Cache 最大占用比例为0.4,开启 W4A16 量化,以命令行方式与模型对话2.1.1、初始显存占用…

52 文本预处理【动手学深度学习v2】

将文本作为字符串加载到内存中。 将字符串拆分为词元(如单词和字符)。 建立一个词表,将拆分的词元映射到数字索引;将文本转换为数字索引序列,方便模型操作。

linux_python源码安装及基础设置odoo安装

python源码安装及基础设置 1、资源下载2、源码安装3、 yum安装pip4、pip安装虚拟环境1、安装虚拟环境库2、配置环境变量3、创建自己的虚拟环境 5、安装升级pip的两种方式1、get-pip.py升级2、安装源码升级 6、odoo部署 1、资源下载 python3.13 python版本库 2、源码安装 yum…

绿联 安装qbittorrent及一些常见错误的解决办法

绿联 安装qbittorrent及一些常见错误的解决办法 1、镜像 linuxserver/qbittorrent:latest 2、安装 2.1、创建容器 按需决定是否进行资源限制。 2.2、基础设置 2.3、网络 桥接即可。 注:如果使用IPV6,请选择"host"模式。 注:如…

Nodejs安装与配置--基于Linux系统--RedHat7.9

nodejs安装从未这么简单 1、nodejs版本设置? curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash - 其他版本如下: * https://rpm.nodesource.com/setup_16.x — Node.js 16 "Gallium" (deprecated) * https://rpm.nodesource.co…

基于python实现web漏洞挖掘技术的研究(django)

基于python实现web漏洞挖掘技术的研究(django) 开发语言:Python 数据库:MySQL所用到的知识:网络爬虫,SQL注入,XSS漏洞工具:pycharm、Navicat、Maven 系统的实现与漏洞挖掘 系统的首页面 此次的系统首页面是登录的页…

(二)Servlet教程——我的第一个Java程序

首先打开记事本,输入如下的代码,请注意字母的大小写 public class MyFirst{ public static void main(String[] args){ System.out.println("This is My first Java..."); } } 将该txt文件命名为MyFirst.java 打开cmd命令行窗口&#xff0…

100吨微机控制电液伺服钢绞线拉伸试验机

一、简介 主机为四立柱、两丝杠、油缸下置式,拉伸空间位于主机的上方,压缩、弯曲试验空间位于主机下横梁和工作台之间。测控系统采用全数字多通道闭环测控系统,具有三闭环功能,即可以进行应力、应变、位移闭环等控制方式&#xf…

ThingsBoard通过规则链使用邮件发送报警信息

1、描述 2、通过规则链路配置发送邮件只需 两步 3、案例 1、基础链路 2、选择变换节点里面的To Email 3、 编辑节点to email 4、 将创建告警与to email链接 5、选择外部节点中的send email 6、配置邮箱相关信息,如过不知道密钥如何获取的,请查看下…

Java转go,我用了12小时,10小时在解决环境问题

Part1 问题背景 作为一个资深的Java开发者,我深知面向对象的高级语言,语法是不用学的。需要的时候搜索就可以了,甚至可以用ChatGPT来写。 之前我做一个安全多因素校验服务。因为是临时服务,扩展性上基本没有要求,为了快…

Opensbi初始化分析:设备初始化

Opensbi初始化分析:设备初始化 设备初始化sbi_init函数coldinit,冷启动初始化sbi_scratch_init函数sbi_domain_init函数sbi_hsm_initsbi_platform_early_initsbi_hart_initsbi_console_initsbi_platform_irqchip_init中断控制器的初始化sbi_ipi_init函数…