- 区块链产业生态风险与监管每天,我们将邀请一位专家给大家进行分享,并做好持续不间断的传播。
- 我们希望借此平台汇聚更多的顶尖专家及人才;
- 我们希望依此活动找到更多志同道合的伙伴;
- 我们更希望倾听不同界的最强音,借彼此微薄之力,服务于国家战略!
引言
中关村大数据产业联盟秘书长赵国栋:本次分享由中关村大数据产业联盟联手 BITCLUB联合举办,布洛克、天使城邦、31区、数据观等机构提供社群与传播支持,覆盖30+人数超过10000人的天使投资人社群及20+覆盖超过20000人区块链产业人士。近期一段时间,每周都安排万向团队来分享一下案例。今天给大家分享的张卫,是区块链架构师,是万向团队底层区块链技术团队的负责人,是一位在前线实战的技术高手。今天请我们请他来给讲一讲,底层链的技术原理。张卫: 我叫张卫,很高兴认识大家。我和海波来自于万向,在区块链底层技术研究和实践落地有一定的积累。今晚由我和海波给大家分享一下 “底层链技术原理” 和“PlatONE 联盟链平台”。前一部分,海波会根据 ISO 中对底层链的架构划分,做主要模块的介绍。后一部分,我会和大家分享一下 PlatONE 联盟链平台的功能和特点。第二十九期:《“底层链技术原理” & “PlatONE 联盟链平台” 介绍》
主持人:赵国栋
赵国栋,中关村大数据产业联盟秘书长、国家发改委数字经济新型基础设施课题组组组长、国家大数据战略1142工程副组长、现任上市公司朗新科技、富邦股份、奥维云网独立董事、工信部专家库成员,中国计算机学会大数据专家委员会委员,首辅智库理事,盘古智库发起人兼学术委员。北京邮电大学经济管理学院特聘导师。《大数据时代的历史机遇》、《产业互联网》、《数字生态论》、《区块链世界》、《区块链与大数据》作者。
分享嘉宾:张卫
分享者简介:
张卫,区块链架构师,万向区块链研究组负责人,底层链研发团队主管。中国科学技术大学学士;万向区块链研究组负责人,底层链研发团队主管;对区块链底层共识算法,密码学等有深入的研究和积累。熟悉 BitCoin, Ethereum, EOS, Cardano, ZCash, Dfinity 等主流区块链项目的底层设计原理。超过 11 年的软件架构和研发经验;曾就职于腾讯等一线互联网公司,对大型高并发后台服务的设计有深入了解和实践;超过 7 年的技术团队管理工作,包括一份创业公司 CTO 工作经历;第一部分
简海波:模块介绍
大家好,我是万向区块链的简海波,很高兴有这个机会和大家交流区块链的一些技术原理。首先,给大家展示一张图,是来自ISO TC 307的区块链的参考架构图。
从图中,咱们可以对区块链系统有一个整体的,感性的认识,图的左下部分是区块链的主要功能组件部分,包括平台层和基础设施层等。例如我们经常听说的共识算法这个功能模块就位于平台层,其中也包括智能合约,交易处理,账本存储等。
接下来,我就简单介绍下区块链的基本技术概念和原理等,然后按照上图介绍区块链的一些主要功能模块。首先什么是区块链呢?简单来说就是由一个个区块前后链接组成。同时按照ISO的定义来说,是“使用密码技术将共识确认的区块按顺序追加形成的分布式账本”。因此区块链实际上是分布式账本(DLT)的一种实现,这也对应着上图中的 DLT 的概念,它是 Distributed Ledger Technology 分布式账本技术 的意思。那么,区块中一般包含的数据有哪些呢?每一个区块中包含了前一个区块的哈希、相应的时间戳以及交易数据等;这是主要的一些数据,并且我们一般把区块链中第一个区块称为“创世区块”。接下来我们再来看一下交易数据的组成。交易的原始数据以及使用这些交易数据构造的默克尔树的根哈希都存储在区块中,这意味着交易数据的篡改将导致区块中的数据被改动。大家知道,区块链的数据是不可篡改的,原理是什么呢?我们简单介绍一下。如果交易数据以及区块中其他数据被改动,都将导致区块哈希的变动,因此修改特定区块将导致需要修改该区块后续所有区块,而区块链的共识算法将确保这种修改很难成功。区块链中的数据在底层一般存储为NoSQL数据库如LevelDB等。现在我们先看一下区块链的分类。从区块链的许可要求来看,区块链主要分为两类:Permissionless 和 Permissioned。Permissionless的区块链是不需要许可的区块链系统,即任何个体都可以自由地进入和退出,也可以在其中写入、读取、参与交易。以太坊就是一种 Permissionless 的区块链。而在 Permissioned 区块链中,各个节点通常有与之对应的实体机构组织,只有通过授权后才能加入和退出网络。各机构组织组成利益相关的联盟,共同维护区块链的健康运转。以上我们就基本上介绍了上图中关于 Ledger,State Management 和 Storage 几个功能模块接下来,我们看一下Peer-to-Peer Network 模块,它对应的是P2P网络,P2P 网络的两个显著的特点是:非中心化和健壮性。非中心化是指,网络中的资源和服务分散在所有节点上,信息的传输和服务的实现都直接在节点间进行,无需中间环节和服务器的介入,避免了可能的瓶颈。而健壮性是说,P2P架构天生具有耐攻击、高容错的优点,部分节点或网络遭到破坏对其它部分的影响很小。P2P网络通常都是以自组织的方式建立起来的,允许节点自由地加入和离开。好的,讲完了P2P网络部分,我们来看看区块链中的一个关键组件:共识算法。 也就是图中的 Consensus Mechanism 模块。共识算法提供了一种分布式节点就正确版本的区块链或账本达成共识的方法。它对于维护区块链网络的完整性和安全性至关重要。共识算法能够保证窜改难度及成本极大,使得任何试图篡改区块链数据的行为都容易被追溯。这样共识算法也就能够实现以极低的成本来解决信任与价值的可靠传递问题。按照 ISO 的定义,区块链通过共识算法达成以下共识:一是交易的有效性,也就是交易被验证是有效的,二是交易集合和顺序的一致性,也就是区块链账本中交易的集合和顺序在各节点中是一致的。目前业界主流的共识算法,在公有链中有 PoW 工作量证明算法、PoS 权益证明算法,DPoS 代理权益证明算法及它们与类BFT算法等结合的共识算法。例如比特币及目前的以太坊采用的是PoW算法,Cosmos的Tendermint共识算法是一种PoS共识,以太坊2.0计划采用的Casper也是一种 PoS 共识。而 EOS 的共识是DPoS。而在联盟链中,通常采用的共识算法有 PBFT 等传统的分布式一致性算法等。介绍完了共识算法后,我们来看看智能合约部分,对应的是图中的 Smart Contract 部分。智能合约概念是由 Nick Szabo 在90年代最先提出,是一种想要以信息化方式传播、验证或执行合同的计算机协议,并且它不依赖于第三方。这个概念首先在以太坊中实现,进而被大众熟悉。不过在以太坊和今天的区块链行业中,智能合约现在一般是指一段运行在区块链上的通用程序,不再局限于合约。 到这里为止,我们基本上把区块链的主要一些模块介绍完了。当然,参考架构图中,还包括API接口层,用户层等以及Cross layer function等。第二部分
张卫:PlatONE 联盟链平台
PlatONE是由 万向区块链 和 矩阵元共同打造的支持隐私计算的新一代联盟区块链系统平台。我们开发此平台,一个是为了多方协作的场景提供更高效,运行更稳定的底层链,第二个目的是逐步引入先进的密码学功能,实现链上数据保密,同时还能支撑业务对这些数据的使用和计算。
这个是我们 PlatONE 的架构图,结合这张架构图,下面从链的认证机制,合约开发语言支持,共识算法的优化,同态加密和零知识证明 等方面对链的功能进行介绍。首先,相对于公链,联盟链是指共识,同步数据,发起某种操作等方面存在准入,即需要一定的权限才能参与这些事务。这个特点是符合我们多个个体共同协作的一些场景需要的。比如说我们多个个体之间的一些协作数据不希望其他人看到的,那么节点接入同步数据就需要设定权限,不是所有人都能同步链上数据。所以我们设计了节点准入, 用户权限控制, 合约防火墙等一系列的认证机制。在实现了这些功能后,“什么节点可以参与共识,什么节点可以同步数据,用户做操作需要具备什么样的权限”,都将在一些系统级别的合约中进行设置。
另外,一个用户部署了合约之后,他可以指定哪些人可以访问那些接口。这些功能都将在系统级别确保链上的信息安全和调用安全。接下来我们说说合约的开发语言。智能合约是运行在区块链上的一段通用程序。程序是使用某种语言为了实现某个功能而编写的一段代码。在第一个支持智能合约的以太坊平台上,用户只能使用 solidity 语言来实现智能合约。(后来又提供了 vyper )而大多数程序员是不熟悉这种语言的,另外这种语言的维护社区也不是很大,执行这种语言的虚拟机实现机制也存在一些缺陷。针对这些问题,业内渐渐选择 WASM 作为新的编译标的。PlatONE 是业内第一家实现了 WASM 合约支持的联盟链平台,同时还保留了对 solidity 的支持。简单的说,PlatONE 用户可以使用 C/C++, Rust 等一系列的语言来实现智能合约,而不仅仅是通过 Solidity. 而且我们还做了一些努力,让 Solidity 合约和 WASM 合约沟通互相调用,从而让之前通过 Solidity 编写的合约能无缝移植到我们平台。之后,我们平台还将支持更多的常见语言来编写智能合约。像比特币中的使用的 POW 共识,是不具备确定性的。上链的数据有可能被回滚掉的。这个特性不能满足金融,溯源等场景需要的。所以 PlatONE 采用了经典的 BFT 共识算法,对一个区块完成投票确认之后,这个区块就是不可回滚的。这样上层应用就能够根据这一确定的事件,进行其他业务逻辑的构建。业内很多联盟链项目都是采用了PBFT或其变体,但是很多项目,甚至很多知名项目的实现中,存在很多较为严重的问题。比如说有些项目中存在 liveness 机制不完善的问题,简单说,就是在某些网络状况下,共识可能停住,并且无法自我恢复运行。另外有些联盟链的底层共识实现,在计票时,重复计算同一个节点的投票。这些问题都严重的影响了区块链的安全运行。PlatONE团队对共识机制的复杂理论有了充分的研究之后,优化解决了之前系统实现中的很多问题。对于 PlatONE 的共识实现,我们压测了上百个共识节点,底层链依然能够保持长时间的稳定运行。公开透明是区块链的一大特点,但是并不是所有的上链数据的明文都适合被链中所有节点看到。基于此,我们引入了同态加密和零知识证明等较为复杂的密码学方案。用户可以将加密后的数据上传到链上,这些数据中的数值信息仍然可以被计算,并得到结果的密文。共识节点可以验证这些计算结果,保证他们是正确的。拥有秘钥的相关方可以解开这些结果的密文,得到结果。同时,任何第三方,都得不到这些信息。后续,我们将持续的引入更多的隐私保护密码学方案。比如安全多方计算等。区块链作为一个分布式系统。操作是非常复杂的。所以我们提供了丰富的企业级部署工具集, 极大地提高了用户的易用性,降低了学习成本; 这些工具能够支持一键启动多节点联盟链; 同时我们提供了丰富的运维脚本, 极大地降低了联盟链运维难度。 以上是 PlatONE目前已经实现的主要功能。接下来,我们将在如下方面继续迭代:1. 支持更多的密码学方案;2. 共识的可审计和插件化;3. 大数据量存储;4. 更多的合约编写语言;5. 多链,并行计算;6. 治理机制7. 形式化验证等等。希望在不久的将来,能给大家带来一个功能更丰富,能支持更多业务场景需要的底层联盟链。以上是我和海波今天带来的底层链技术原理和 PlatONE 的分享。大家有什么疑问,我们后续在群里多多交流。感谢大家的时间。第三部分
交流互动
赵国栋: 大家一直有疑虑,主要在于P2P效率的问题。这个有什么突破吗?张卫: 赵总指的是:区块链全量复验和全量冗余带来的效率问题,是么?张卫: 针对这个问题,业内一直在各个方向寻求解决方法。张卫: 目前的尝试主要分为 Layer-1 和 Layer2 两个方向。张卫: 常见的 layer1 方案有:区块扩容 、隔离见证、共识优化、分片、多链张卫: layer2:、闪电网络、侧链、Plasma张卫: 分片和Plasma等主要的扩容方式都还在探索当中。有一些项目已经落地,但是较为完善的机制,还需要时间。赵国栋: 我想问一个问题,纯粹的p2p网络,不考虑分层等机制,在给定的效率目标内,是不是节点数不能太多呀?
赵国栋: 有没有一个经验值,节点数突破多少,效率就会急剧下降?张卫: 一般在区块链行业,经常说共识节点不能太多,原因是BFT算法的消息复杂度是 N 平方或以上的。赵国栋: 就是这个问题张卫: 当节点数目变多,需要的投票消息是多项式的速度增长的。对整体网络的压力加大的速度较快。张卫: 但是 POW 这种共识算法的优点就是,区块传输出去,就可以着手挖下一个区块了。张卫: 回到赵总关于这个经验值的疑问张卫: 我们实际测试下来,区块链系统投票消息数目随着区块链共识节点增加之后,第一个触发的瓶颈是,校验消息签名会占满 CPU赵国栋: CPU忙着响应签名算法张卫: 是的。所以,使用门限签名的方案来降低校验的时间复杂度,是当下的一个方向。赵国栋: 不知道以后会不会出现专门的芯片,专门就是来运算签名算法赵国栋: 类似网上的校验码校验机制。把这类大量的重复的计算用专用的CPU去处理。张卫: 嗯嗯 使用算力更高的专用处理单元,是个不错的方式。赵国栋: 实际中有这样的方案吗?赵国栋: 如果没有的话,咱们没准撞出一个新方向呢。张卫: 目前矿机就是类似这种方案。不过基本都是用来算 hash 的。张卫: 赵总的这个方案,可以用来放大联盟链的去中心化程度。张卫: 是啊 没准就是一个好方向。赵国栋: 那第2个瓶颈产生在什么地方?张卫: 第二瓶颈应该是数据包对网络的压力和产生延时。张卫: 所以像 hotstuff 共识中的优化,就同时试图解决如上这两种问题。张卫: 门限签名降低校验数量, 基于此,构建的收发的协议降低了数据包量。张卫: libra 就是 基于hotstuff 进一步优化的。赵国栋: 看样子这些技术问题都有解决方案的张卫: 是的 行业一直在发展颜阳: 我问一下,目前platONE应用的实际案例主要在什么场景,在应用过程中效率的问题。张卫: 目前主要用在供应链金融,各种存证,物流,慈善,保险等一些列场景中张卫: 前两周,我们万向的产品同事,应该在群里有分享过。颜阳: 也就是相对数据频率不是太高的场景张卫: 其实实际的项目中,大部分业务,tps 需求并不是那么高。张卫: 是的张卫: 反而是为了降低整体系统的复杂度,大家想把很多内容存储到链上。存储倒是有较大需求。颜阳: 如果下一步,通过TEE等基于硬件的隐私计算方案,会不会提升解决高频数据的效率问题?你们怎么看张卫: 技术上来说,能提升。张卫: 比如 SGX 用于共识赵国栋: 区块链真是有太多的话题可以聊啊。张卫: TEE 用于隐私计算,比零知识证明要轻量,效率肯定也有提升。颜阳: 是的,有一个过程张卫: 是啊 区块链结合了很多技术和场景。赵国栋: 大家还有没有问题呀?如果没有,咱们今天就到这里。感谢二位专家。分享专家邀请:
请将您的分享内容发送至files@zgc-bigdata.org。
要求:1、word形式
2、可图文结合
3、观点明确
我们收到您的材料后,会第一时间查看反馈,并且确认分享时间,感谢您的参与!
识别上图二维码即可报名。
|
|