百度作为中国在尖端科学核心技术领头的高科技企业,秉承“用科技让复杂的世界更简单”的使命,积极配合国家战略层面的指引方针,以公平开放、技术赋能、生态联盟为准则,致力于构建行业区块链应用生态,将区块链的价值赋能给包括政府、企业及个人用户的社会各个层面,为降成本、提效率、优化产业诚信环境、价值重新分配等方面贡献力量。百度区块链实验室,全面布局区块链生态的各个领域,包括 XuperChain 底层基础设施建设,企业级的解决方案 BaaS (Blockchain-As-A-Service),以及服务于创造数字经济和改善社会生活的一系列区块链应用等。
百度将在数字技术创新、安全可控、自主研发等方面持续推动区块链的社会价值和经济价值,建设“网络强国、数字中国、智慧社会”,为我国产业结构迈向全球价值链中高端,实现经济高质量发展贡献力量。
百度区块链整体架构
1.区块链行业痛点
1.1 当前区块链技术的性能制约
自区块链技术诞生以来,区块链的性能问题一直是倍受业界关注和讨论的核心问题,同时也可能是成为区块链行业发展的壁垒。当前,影响区块链性能的直观指标可总结为四点:
(1) 出块时间:区块产生的时间间隔;
(2) 区块大小:单个区块的实际存储容量;
(3) 事务执行速度:单个请求的处理时间。对于包含智能合约的请求,执行速度还受智能合约的执行时间影响;
(4) 事务大小:事务数据存储在区块链里的实际大小。
回顾区块链 1.0 时代的比特币交易系统,性能的制约因素可归纳为区块大小和出块时间。区块链 2.0 时代的以太坊系统,由于支持通用智能合约,除了区块大小和出块时间之外,只能利用单核 CPU 的串行计算的低效率同样是制约整体性能的因素。同时,POW 机制以较慢的出块时间来降低分叉概率的机制,也是影响区块链整体性能的因素之一。
1.2 智能合约的痛点
以太坊的出现,让人们注意到用智能合约可以构建丰富多彩的价值网络。但以太坊本质是一个基于单链架构的通用智能合约系统,所有的智能合约都在一条链上运行。所以以太坊的合约之间没有隔离能力,性能也差强人意。除此之外,以太坊提供的 Solidity语言设计上存在欠缺,也缺乏实用的编程库支持,无法跟主流编程语言比较。
深挖智能合约的潜力,我们认为丰富的智能合约可以完整的构建一款基于区块链的应用程序,我们叫 DApp(Decentralized App)。DApp 能够传递有价值可信的信息和服务。区别于现在的 App,现在的移动 App 提供的信息和服务需要主体公司的信用做背书,而在 DApp 中,背书是由区块链完成的,因此 DApp 比 App 具备巨大的优势。DApp 取代 App,标志着区块链技术 3.0 时代的到来。为了迎接新的时代,两个技术问题亟待解决:
(1) DApp 运行的独立性:每个 DApp 都可以跑在一条或者多条链上,DApp 内部的智能合约相互可以访问,DApp 之间的数据通过跨链通讯来实现;
(2) DApp 开发的便利性:智能合约的编程语言,短期内应该向当前的软件开发生态靠齐,支持主流编程语言包括 C++,JAVA,Go 等。但是从长期来看,区块链的智能合需要有更符合自己特点的原生编程语言。
1.3 共识机制的痛点
共识机制本质上是一套博弈系统:共识的产生需要付出一定的代价,矿工努力工作后能获得有效的奖励,通过一奖一罚的博弈保证系统稳定实施。现存的共识机制,在应用层面比较专注于某一特定场景并存在一定程度的短板。比如 PBFT 比较适用于联盟网络的共享账本技术,POW 能耗较高、POS 存在中心恶意干涉的可能性等。
在当前的技术背景下,功能过于全面的共识算法无法真正可用。在新一代区块链共识机制的设计过程中,根据实际应用场景,有的放矢的选择去中心化、节能、安全等设计原则,对一些原则支持强弱进行取舍,将一定程度上提升系统的整体运行效率。因此,在新一代的区块链系统设计中,可插拔的共识机制可能是未来发展的主要方向:在区块链解决方案中,应该实现兼容多种共识算法,在实际业务落地中有选择性的使用一种最合适的共识机制,甚至整个网络具备让开发者自定义共识机制的能力。
1.4 计算和存储的痛点
在当前的区块链技术方案中,始终无法突破单机的存储和计算瓶颈,甚至连单机的多核计算和多盘存储都不能很好的利用。整体性能和扩展性存在一定局限。性能支撑是用户体验的基础,因此区块链支撑 DApp 的良好运转,必须解决计算和存储的弹性扩展问题。
1.5 网络建设的痛点
(1) 平台化技术的难点
1) 基于比特币等公链平台实现 DApp 的难点
目前公链的技术,如比特币,如果想直接用比特币的区块链网络做自己的事情,有两种模式:
① 将数据写到比特币的 Script 区里面,业务端理解数据并实施;
② Fork 比特币的代码并进行修改,从头开始搭建自己的区块链网络。
通过这些模式创建自己的 DApp 对网络构建、技术实施的门槛非常高,一定程度上限制了 DApp 生态的快速发展。
2) 基于以太坊公链的平台化难点
基于以太坊的平台化主要面临两方面问题:
① Solidity 这门语言相对较弱,在构建复杂应用的时候,会面临软件工程的问题;
② 以太坊的整体网络性能,不足以支撑一款高频 DApp 的执行,所以根本无力去支撑整个 DApp 生态。
(2) 区块链建设的难度
公链的建设难度极大,利益纠纷明显。在传统比特币和以太坊的区块链公链建设过程中,需要大量的矿机和电力加入。而 EOS 的网络建立,需要强大的社区运营以及资源支持。如果每一个 DApp 的出现,都要自己去建设公链,对开发者来说将是一个巨大的挑战。
为解决上述痛点,百度发布 XuperChain,作为操作系统级别的区块链解决方案。
2.XuperChain 网络介绍
2.1 运行结构
XuperChain 简称超级链,是一个支持平行链和侧链的区块链网络。在 XuperChain网络中,有一条特殊的链——Root 链。Root 链管理 XuperChain 网络的其它平行链,并提供跨链服务。其中基于 Root 链诞生的超级燃料是整个 XuperChain 网路运行消耗的燃料。Root 链有以下功能:
(1) 创建独立的一条链;
(2) 支持与各个链的数据交换;
(3) 管理整个 XuperChain 网络的运行参数。
XuperChain 是一个能包容一切区块链技术的区块链网络,其平行链可以支持XuperChain 的解决方案,也同时支持其它开源区块链网络技术方案。
2.2 共识机制
(1) 可插拔共识机制
在当前的技术背景下,没有哪一种共识机制是完美无缺的,每一种共识机制都有其优点和缺点,不同的应用场景可能需要不同共识机制。为了应对不同的应用需求,XuperChain 设计了一套可插拔的共识机制,所谓可插拔主要体现在两个方面:一方面,XuperChain 不同的平行链允许采用不同的共识机制,以此来满足不同的共识应用需求,用户可以通过 API 创建自己的区块链,并指定初始的共识机制。另一方面,XuperChain 还支持在任意时刻通过投票表决机制实现共识的升级,从而实现共识机制的热升级。
XuperChain 的共识机制包括但不限于 POW、POS、PBFT、中心化共识(Raft)等。
(2) DPOS 共识算法创新—TDPOS 共识
基于 POS 基础上衍生出了很多改进算法,DPOS 就是其中一种。DPOS 算法是用户通过投票选出代表进行区块的生产。
XuperChain 自主研发实现了一套 DPOS 共识,我们称之为 TDPOS。依据这种算法,全网持有通证的人都可以给候选人投票。
TDPOS 的参数包括每轮的 proposer 个数、出块间隔、节点每轮出块个数等,在创建平行链的时候可以指定,也可以通过提案机制升级。通过 GPS 和原子钟保证时钟同步。例如,如果配置的参数为每轮 21 个节点、出块间隔为 3s、每个节点每轮出块个数为 200 个,则每轮的时间为 3.5h。
(3) 自定义共识机制
如果 DApp 开发者觉得系统默认的共识机制都无法满足自身的业务需求,可以通过智能合约和共识机制的编程接口,编写自己的共识,并以智能合约的形式发布到XuperChain 中。XuperChain 在启动用户创建的这条链的时候,会注入自定义共识(需要取一个唯一名字),成为该链的共识机制。
2.3 超级节点
超级节点是一种分布式计算技术,保证每个节点的存储和计算是可以扩展的。从而
为区块链网络提供源源不断的存储和计算支持。
(1) 存储支持
超级节点会存储所有的历史事务的完整信息,如何支撑 PB 级别的容量非常具有挑战。
XuperChain 底层 KV 存储引擎主要有以下几个特点:
1) 事务性表格系统:通过前缀编码的平展化,支持多链 + 多表,且能保证跨链事务的原子性;
2) 多盘技术:实现 KV 存储引擎到底层文件系统的虚拟映射层,支持单机多盘存储,从而支撑大容量数据存储;
3) 混盘技术:实现冷热数据自适应调度,将低频数据存储在 SATA 介质或者云存储,高频数据存储在 SSD 介质;
4) 云优化:实现 DFS 适配层,支持分布式文件系统,存储容量理论上可以扩展到PB 级别。结合混盘调度,保证性能最优。
(2) 计算支持
在非 POW 的共识机制下,超级节点的主要计算量为交易上链和合约执行。很多区块链软件对交易的执行以及合约的执行都是串行执行的,优化到极致也只能使用单核,对硬件的利用率很低。超级节点采用多核并行计算与分布式计算相结合的方式以提升计算效率。
1) 多核并行计算:XuperChain 通过智能合约的依赖关系将待打包的事务构造出 N个 DAG。每个 DAG 的交易和合约执行都是并行跑在多个 CPU 核上, DAG 内部无路径依赖的节点也可以并行执行,从而可以最大化 CPU 的利用率,突破系统吞吐瓶颈。平行链和可回归侧链技术也能有效的利用多核并发;
2) 分布式计算:XuperChain 未来构建事务执行的分布式调度集群,链内并行事务和多链事务可分发给调度集群执行,从而利用分布式计算的扩展能力。
2.4 智能合约
(1) UTXO Base 的智能合约模型
我们认为 UTXO(Unspent Transaction Output)相对于 Account 余额模型,并发性能更好,对热门账户的性能也更优秀。超级链底层是基于 UTXO 模型,因此任何针对比特币系统的优化都适用于 XuperChain。
XuperChain 在 UTXO 的基础上做了智能合约的扩展,在扩展区可加载各种不同的合约虚拟机,每个合约机需要实现运行合约和回滚合约两个接口。回滚机制是为了应付分叉设计的,我们在合约回滚方面进行三个方面的优化,用户可以选择其中之一去实现:
1) 自定义回滚逻辑;
2) 利用区块链数据操作日志,生成反向回滚日志,自动生成回滚逻辑;
3) 引入 MPT,分叉无需回滚支持,但是暂时只有 KV 存储能力。
(2) 智能合约兼容
1) XuperChain 内嵌合约机制
内嵌合约机制,规定智能合约编写的接口,可直接用当前语言(Go,C++,Java等)编写智能合约放到 XuperChain 里面。当前 XuperChain 的 Kernel API 和共识机制算法都是用这种方式实现的。
开发者可以直接写新的智能合约,放入到 XuperChain 网络中,XuperChain 给予一定的安全隔离和保护。一般这种模式只建议联盟链部署的时候使用,因为公开的节点会因为安全问题拒绝为该链提供算力。
未来会引入智能合约 Store 和对智能合约的安全审计,保证发布的智能合约是安全的,从而让公开节点放心支持。
2) 第三方兼容
XuperChain 直接支持以太坊的 Solidity 语言。以太坊的智能合约代码可以在XuperChain 部署和执行。XuperChain 同时支持 WebAssembly,并通过其支持任意语言。理论上 XuperChain 支持任何虚拟机的运行。
2.5 立体网络技术
(1) 链内并行技术
当下区块链技术的实现是将所有事物打包后顺序执行。随着智能合约越来越复杂,如果顺序执行智能合约,高并发度将难以实现,而且也不能充分利用多核和分布式的计算能力。
为了让区块里面的智能合约能够并行执行,XuperChain 将依赖事务挖掘形成 DAG图,并由 DAG 图来控制事务的并发执行。
(2) 可回归侧链技术
在很多场景下,并不需要把所有的事务都集中在主链上运行。比如一个运营活动,完全可以把资源放到一个侧链上去,然后通过智能合约执行逻辑,执行完成后一次性合并回主链。通过把复杂的智能合约在侧链执行,可以实现利用其它的并行计算资源去执行而不消耗主链的资源。当满足侧链回归条件的时候,主动引发侧链合并。
(3) 平行链技术
在 XuperChain 的立体网络里面,有大量的区块链存在。这些链通过 Root 链管理起来,这些链就是平行链,从而形成一个真实、独立存在的区块链体系。我们把这个网络叫做立体网络。立体网络上通过 Root 链创建的平行链,可以选择是公开链,也可选择是联盟链(仅成员可见)。
2.6 轻量级节点技术
XuperChain 在设计的时候就支持轻量级节点技术。轻节点仅同步少量数据就可以完成数据的访问和校验。轻量级客户端可以部署在 PC、手机、嵌入式设备等设备上,不需要算力和存储支撑就能有效的访问区块链网络数据。
2.7 可升级系统
(1) 提案和投票机制
提案和投票机制是区块链系统实现自我进化的关键。系统首次上线后难免遇到很多问题,我们提供提案/投票机制为区块链的社区治理提供便利的工具,以保证未来系统的可持续发展。具体实现方法如下:
Step1:提案者(proposer) 通过发起一个事务声明一个可调用的合约,并约定提案的投票截止高度,生效高度;
Step2:投票者(voter) 通过发起一个事务来对提案投票,当达到系统约定的投票率并且账本达到合约的生效高度后,合约就会自动被调用;
Step3:为了防止机制被滥用,被投票的事务需要冻结参与者的一笔燃料,直到合约生效后解冻。
(2) 共识可升级
XuperChain ?供可插拔共识机制,通过?案和投票机制,升级共识算法或者参数。图 5 简要说明了如何使用 XuperChain 的?案机制进行共识升级。
(3) 系统参数可升级
通过?案和投票机制,区块链自身的运行参数也是可升级的。包括:block 大小、
交易大小、挖矿奖励金额和衰减速度等。
2.8 隐私保护和安全
超级链支持多种主流的隐私保护和安全机制,包括但不限于:
(1) 通过获取用户设备上产生的随机熵,来生成随机数种子,再通过密钥衍生推导函数来加强随机性,最后生成 ECC 的公钥私钥对;
(2) 引入分层加密技术来降低密钥被泄露和破解的可能性。也防范了通过交易记录猜测个人隐私的可能;
(3) 为了防止地址碰撞和输入错误,使用高强度的散列和摘要算法以及校验码来保证地址合法性;
(4) 引入语言亲和性的助记词技术,用户只要记住助记词,就可以恢复自己的数字钱包。
3.XuperChain 网络生态和基础设施
3.1 网络生态
(1) 商业化能力
通过 XuperChain 网络创建区块链需要冻结超级燃料。
在系统稳定运行一段时间后,冻结的超级燃料会按照一定比例分给为该区块链?供资源和服务的节点。平行链持有者,为了保证区块链正常运作,应该定期补充冻结一定比例的超级燃料。Root 链是管理平行链和解决跨链的关键,Root 链的每一次 API 调用,都要消耗超级燃料。因此,超级燃料将作为 XuperChain 使用者支付使用费用的途径,也是当下 XuperChain 的主要商业化途径。
(2) 开源计划
1) XuperChain 已经在 Xuper 联盟内部开源;
2) 2019 年上半年向全社会开源。
3.2 超级链 App
XuperChain 构建未来 DApp 运行的基础网络。一个完整的区块链生态体系需要提供一个窗口,以连接用户和区块链网络。因此推出基于百度区块链生态的超级链 App。
超级链 App 是 DApp 的终端运行平台,是用户发现并使用 DApp 的入口。开发者可以通过超级链开发者平台快速创建和发布自己的 DApp 并发行到超级链 App 中,用户无需下载即可在超级链 App 中使用所有的 DApp 提供的服务。
生态内的 DApp,可以借助百度流量优势获得流量。通过内容与服务推荐,精准的连接开发者与用户,致力于打造自治共荣的区块链分发生态服务。
基于区块链的 DApp 无法简单直连服务器,因为单独一个网络节点无法被客户端信任。所以在XuperChain上运行的DApp都是通过轻量级节点实现去中心运行。XuperChain提供 DApp 运行的最基本的轻量级节点支持,以实现让开发者像开发 Web 程序一样开发 DApp。
4.结语
区块链技术作为技术迅猛发展大背景下的新兴产物,旨在通过其去中心化、开放性、自治性、防篡改性及可追溯性等特质,解决信任问题,意义重大。XuperChain 作为百度操作系统级区块链解决方案,旨在通过搭建底层生态,打造业务闭环,以赋能 DApp 开发者,使其充分拥抱区块链能力。百度 XuperChain 正以兼容并包的姿态,广纳全世界DApp 开发者,与百度 XuperChain 一起在区块链的丰沃土壤中生根、发芽、开花、结果。
文章作者:芭蕉扇,如若转载,请注明出处:http://www.809030.com/chain/28010.html