讲师:郭光华,Substrate和Polkadot社区核心开发者,ChainX创始人&CTO。完整版视频如下:
Substrate:下一代区块链框架_腾讯视频
区块链发展现状
以太坊为代表的区块链自我改良派,历史的包袱太重,走得慢。EOS为代表的改革派,雷声大雨点小。
不管是以太坊的自我改良,还是EOS的的改革,他们都是认识到了区块链现有状况: 区块链智能合约基本能用,但离大规模应用还差得远 ,这主要是目前区块链框架在(扩展性,易用性,共识能源问题)的局限性导致的。
我们从Code说话, 以太坊各个技术的更新还可以,但执行速度慢。EOS像是有上气没下气。唯有Substrate是最前沿的革命派。
Substrate重塑区块链
上面我们说到了现有区块链,只是验证了区块链dapp能用,但没法做到大规模应用。主要局限于三点,下面我们分三部分来分析substrate 如何解决这些问题。
扩展性
现有区块链都是单链模式, 一条链的最大的tps 不能过万(单台计算机tps 差不多10万tps,因为hash等加密算法的重复利用,链的tps << 1/10 单台计算机计算)。
Substrate可以灵活的拓展任意条parachain, 好比现在的分布式计算,3台机子算不过来, 我们加机器。
各层结构的模块化: 区块链大致由(p2p, rpc, consensus, storage,crypto)这几部分组成。但现有的链都是把这几个模块糅合在一起。
parity团队因为在长期开发以太坊,积累了经验, 把这几个模块往高层次抽象。如substrate 会做到devp2p, libp2p 网络一键选择更换。再如任意种hash算法替换。
任意代码的升级,比普通云服务器的升级更简便。因为每一个substrate 节点都含有两份可执行runtime内核代码。
一份是本地编译的二进制代码。另一份是存在链上的wasm代码。为什么两份代码就能解决了快速稳定升级? 这是个好问题
易用性
两层结构合约:runtime合约和contract 合约.wasm 合约,支持rust/c/c++ wasm的原生storage 接口.
极高层次的抽象,可以使不同的开发人员做不同部分的开发.
双层执行 code(native, wasm)
双层共识
双层合约
双层p2p
多模版密码库
共识
多种共识并行交互执行, 最早是algroud 定义了快慢速通道共识并行,但那现在还是在白皮书里, 现在的substrate 就能做到了aura + grandpa 两种共识并行运行。
这种组合共识,既有POW的分散性,又没有他的能源浪费问题,还有一个100%的确定性,而不是pow的概率确定性, 尤其是性能方面,pow不可与之同日而语。
aura 提供了快速并发出块性, 像POW一样节点分散,可以支持1000个节点同时在同一高度同时出块。
grandpa 提供了确定性,只要用bft确认最后一个大家公知的块即可。 这对传统BFT的通信消息量减少99%以上。
Libp2p
IPFS 团队定义的一个协议, 是目前市面上支持各种协议最广,最稳定的p2p库。Devp2p, 以太坊的p2p层协议,比较单一简单
Rust
社区特别open的个语言和区块链open思想吻合。有C++的性能, 没有C++的运行时不确定。从语言库级别支持std, no_std 两套代码规范, no_std的代码兼容wasm这种确定性执行
创新方向
区块链技术现在都在努力往哪些方面创新:共识、隐私、合约VM
共识
Cardano, Algroud, difinity 等等, 这些项目都是以共识创新而闻名的项目, 然而,这些项目的共识创新现在都只停留在白皮书里。 Substrate 实现了他们白皮书里所期望的共识效果
优秀共识所期望的点: 像POW一样,大家都有同等的同时出块的公平权利,又没有他的能源浪费和性能问题。其实就是Substrate 的Aura + grandpa共识,也是VB所常说的casper
Casper + tendermint 的比较, 或者1年前的一些技术可以参考我老婆翻译的一些文章:https://lilymoana.github.io/ConsensusCompare.html
隐私
Bulletproofs 基于这协议的隐私币有许多
零知识证明, parity 团队也正在用substrate 框架去实现zcash
抗量子密码学,同态加密等理论加密算法的研究
合约VM
WASM 阵营: 基于wasm VM 的链越来越多, 根本原因是wasm生态特别丰富,wasm现在已经支持c/c++/rust等编译型语言,其他各种语言都是在支持的路途中。
非wasm阵营,如solidity 等VM
Polkadot & ChainX
Polkadot 多链如何组织与管理
共识的一致管理:共识由relay chain 统一管理, 各个parachain的验证人由relay chain 随机随时分配。 举个最简单的例子, 比如polkadot 网络由三条链组成(relay, para1, para2),一共有7个验证人节点, 那么relay chain 管理共识的模块,可以采取2: 3 :3 的个数随机分配给 relay, para1, para2 三条链随机出块
消息的统一路由:消息路由这是polkadot 需要做的第二大部分, 这部分在白皮书里有介绍,但实现正在展开中,大致的思路可以对比参看路由器的路由协议。 只是这些不同链的路由,最后由relaychain统一管理
ChainX 多币如何组织与管理
跨链方式的选择:这又回到之前咱们说的问题, hash 和椭圆曲线谁更好的问题。 两个例子:
BTC:是用hash方式的共识,更优选择是链上轻节点。
EOS:是椭圆曲线式的共识, 更优选择分布式密钥多签。
币在ChainX上价值的互换:ChainX 会在Runtime合约层内嵌各种coin撮合的交易所,同时也会把这些API接口留给合约层, 这样任何开发合约的用户,可以自如的选择任何币种作为价值驱动来开发自己的合约。 比如, 可以用BTC来开发合约。
如何参与
在区块链世界即将爆发的前夕,我们如何参与进来。技术人员如何参与 - hack substrate,开发合约的过程可以带着这三个问题去学习:
交易怎么调用进来
相关业务逻辑如何处理
处理结果如何存储在链上
如何保证一致性
_______________________________________
ChainX更新了官网和白皮书
______
欢迎查看更多详情细节
https://chainx.org
______
开发者、意向节点、用户可添加微信入群,请注明身份。或加入Telegram群
t.me/chainx_org
网友评论