http://www.7klian.com

百度资深工程师孙君意:区块链的革命性就是实现了可信的数据打点

我们再看一下共鸣算法的具体比拟,说到共鸣算法不得不提一下FLP道理,原论文颁发于1982年,或许是说:在异步网络下,多个节点中就算只有一个错误节点,也无法找到确定性的算法担保同时满意safety和liveness。这个FLP给各人提供了漫衍式系统设计的理论指导,而实践中,数据库的共鸣更多的是牺牲了liveness而确保saftey, 好比raft。相反地,区块链尤其是公链则是牺牲了safety而优先担保liveness好比,比特币的生意业务假如是方才上链,那是有必然概率因为分叉被回滚掉的,不足safety,可是长处是整个系统一直可以提交生意业务,就算有分叉,最终会通过最长链原则到达一致性。

这里再举一个简朴的例子,照旧适才谁人“计数器”场景。假设Alice和Bob险些同时提倡合约挪用。合约执行到Get挪用,获得同样的值是 42, 版本也一样是tx1。然后加一计较获得43,再别离举办Set提交,Alice先提交的就可以将值更新到43,版本更新到tx3,而对付Bob,固然运算进程是对的,可是最终提交时候的版本已经逾期了,因为其依赖的版本便是tx1而此刻最新的版本是tx3,所以就会失败。

网络局限越大,公信力越强,事实上人们也愿意为可信带来的溢价买单。一个简朴的例子,假如此刻在亚马逊的RDS存储1GB的数据,本钱或许是每月0.25美元,可是同样假如存在以太坊上,或许需要三万两千个ETH,有7200多个节点漫衍式地在全球存储其副本。区块链通过共鸣算法和智能合约,在实践层面真正实现了可信的数据打点,这是具有革命性的。

首先我们来思考一个问题,区块链和数据库在哪些维度上有共性,我本身有一个简朴的界说,我认为区块链和数据库都是数据打点技能,数据打点并不高妙,我们用一个Excel就可以举办。我们在项目实施进程中会被客户问到一个问题,为什么这个项目非得用区块链,因为区块链难以改动,好比说有暗码的支撑,较量利便实现多方共享。可是这些是不是足以说这个项目就可以用区块链,我认为假如在应用层做许多间接改革也可以实现大部门成果,可是个中有一部门很难实现,就是在参加打点数据的多方存在不信任的场景下,这种场景下是很难用传统数据库办理的。除非多方之间选出各人都公信的“牛耳”,让它来打点这个数据库,这个时候业务用数据库就可以做,不然的话是行不通的。

百度超等链已经在推进数据库与区块链技能的融合,在合约层面支持了Table,后续打算在Table接口之上再引入SQL引擎,使得用户大部门环境下可以用SQL语句写智能合约,晋升系统的易用性。

我总结一下区块链合用的场景有三点:

下面看一下编程范式比拟。数据库规模已经有统一的编程范式,就是SQL(Structured Query Language),详细实现上有一些方言的不同。区块链的编程范式是智能合约(Smart Contracts),然而其详细的实现千差万别,较量有影响力的是以太坊的Solidity语言。

首先百度超等链资深工程师孙君意举办了《区块链与数据库技能对等到融合展望》主题分享,他的出色言论有以下3点:

(2). 数据的处理惩罚进程需要凭据多方约定并公示后的法则来执行的场景;

在我们超等链内里的事务模子是XuperModel,它是基于经典的UTXO模子演化而来, 经典的UTXO模子只能描写转账场景,而XuperModel创新之处在于可以描写越发通用的数据改观。

2. 数据的处理惩罚进程需要凭据多方约定并公示后的法则来执行的场景;

本次分享内容会从三个要害的技能维度去比拟:事务打点、共鸣算法和编程范式。从事务打点角度来看,区块链真的很慢吗?其实并不慢。为了机能,大大都数据库的默认事务断绝级别较弱,而NUS最新研究表白:当Isolation Level配置为第一流别(SERIALIZABLE)环境下,主流漫衍式数据库的机能和HyperLedger Fabric是一个数量级的(400 TPS阁下),单一的这种场景下,传统数据库和区块链对比并没有机能上的绝对优势。

2、区块链合用的场景有三点:

再一个,超等链底层的数据多版本机制实现也与数据库差异。 数据库的一般做法是将逻辑Key+版本号拼接成物理Key,可是这个方法只能保存有限个版本,一旦版本太多,就会导致区间查询迭代很慢,因为要Scan大量无用的老版本。超等链用了一种链式哈希的多版本接口,在状态树中Key对应的Value只是哈希指针,指向账本中事务的Output字段,要回溯之前的老版本也只需要通过事务的Input指针再往前回溯。当需要回滚事务或区块的时候,发生的IO开销也极低。

举个例子,这里有个“计数器”合约,挪用一次,Counter变量就会加一。从上图可以看到,每个事务的Input字段有个哈希指针指向其依赖的其他事务的Output。也就是说,事务的Input描写了它读取的变量的旧版本,而Output浮现了事务一旦乐成后会赋予变量的新值。图中,T2和T2’这两个事务是斗嘴的,因为他们的Input引用了沟通的变量的旧版本,可是输出是赋值同一个变量。最终,T2和T2’只能有一笔上链,别的一笔会回滚。

主持人:“百度资深工程师,今朝认真超等链的架构设计,对区块链的账本、事务模子有深入研究。在百度期间认真过万亿级网页链接库及时存储,Feed统一内容池、垂搜多版本数据库等项目,他本日带来主题分享《区块链与数据库技能对等到融合展望》感激君意。”

3、区块链和数据库有融合的契机,有一种是把区块链作为引擎接入到数据库中,, 相当于从底层改革存储引擎实现去中心化的数据库。别的一个偏向,区块链警惕一下数据库好的对象,好比像SQL,将SQL语句翻译为智能合约代码。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。