Substrate开发入门第二课:我们从未如此需要跨链与Polkadot,也从未如此需要“链上升级”

 期货人   2020-10-26   来源:互联网  0 条评论
期货知识 期货技巧 期货术语 期货学习
期货高手 期货投机 期货操作 仓位管理
技术分析 交易策略 交易准则 期货俱乐部

第一节课程《Substrate开发入门第一课:区块链入门、再读比特币白皮书、作业“对话中本聪”》的课后作业得了9分(满分10分),小组25人,列第三。

 

 

第二节课程分为三部分,我听了一半,记了一半的笔记,受益匪浅,是对前面波卡学习过程的一次全面升级与总结。第二节剩下的课程下周抽时间发送,到时候与作业一块分享。本次课程主要讲解了为什么需要跨链、波卡架构、Substrate构成,Substrate Runtime,为什么需要链上升级等等十分核心的问题。强烈建议对波卡感兴趣的朋友们报名下期Substrate开发入门课程。

 

第二节主讲人:Maggie Dong Developer Advocate,Parity Technologies  Ltd(Parity 工程师 王大锤)

 

大锤老师爆照

 

 

第二节第一部分:关于跨链与Polkadot

 

1、互联网的发展看区块链的未来——跨链

 

 

Web1.0、Web2.0、Web3.0

 

Web3.0,我想波卡白皮书的前言部分最能够概括,因此摘抄了这段:

 

我们每天都在与少数几家科技巨头的应用打交道,但是这些公司的利益和动机常常与用户的利益发生冲突。

 

如果我们想用这些应用,就必须同意那些我们永远都不会逐条阅读的使用条款,而同意这些条款就意味着,我们完全同意这些公司控制我们与应用交互产生的数据。

 

通过追踪数据,科技巨头们往往能够勾勒出个人生活的清晰画面,因此数据已成为21世纪比石油更有价值的资源,这也是Amazon/Facebook/Twitter/Alibaba估值如此之高的根本原因。但当下的互联网世界却是这样的,用户向科技巨头们免费提供个人数据后,除了向神祈祷个人隐私不被泄露、窃取、滥用之外,别无选择——这些中心化世界的巨头们就像恶魔一样一口一口将我们吞噬。

 

随着开源技术与像区块链这样的去中心化技术不断进步,愈加指向一个结论,即我们完全有可能建立一个全新的系统,让中心化不再凌驾于个人主权之上。在全新的系统上,第三方将不再是恶魔,我们将不再恐惧。

 

当下的区块链技术现状,尽管其在某些领域有一定的进步与应用,但还远没有强大到可以与中心化的垄断一较高下的程度,何况其在现实世界的大范围部署尚未出现。

 

 

2、区块链的发展现状

 

 

公链与联盟链,一个往左走,一个往右走。

 

对于公链而言,例如Bitcoin/Ethereum/EOS/Tezos/Polkadot......

开发复杂:很多公链的开发动辄几年,例如Polkadot从2015年就开始投入开发,直到2020年年底还未正式投入使用。

乌托邦:应用十分丰富,但是与现实世界脱节,他们所做的尝试全部都是面向未来,例如DeFi:分布式存储,去中心化游戏,NFT艺术品,去中心化通信与社交等面向未来的科技与应用。

生态丰富,开放:任何人在任何地方都可以以很低的成本开发自己的应用,而且底层公链基本都处于开源状态。

 

维护成本高:公链节点成千上万,2017年年初比特币全节点数量为5000多个,2019/01/03比特币全节点数量为10236多个,2020/10/25比特币的节点数量为10937个(bitnodes.io)。

升级困难:节点众多,升级困难,这是因为公链的升级换代跟我们的软件完全不同,我们平时使用的软件,一个命令从上至下就能完成升级,但在区块链上不是这样的,需要所有节点全部同步到最新版本,才能够升级。即便你开发人员搞出来了一个很先进,很好用的版本,全网三分之二以上的出块节点采用这个版本,公链才算是升级成功,否则就没法用。

犯错成本高:虽然前面说了,区块链是开源的,任何人都可以去开发应用,但是其犯错成本还是很高的,因为升级很难。

 

对于联盟链而言:物流链/发票链/Hyperledger Fabric(开源区块链分布式账本)/DCEP......

开发简单:因为有现成的框架,例如Hyperledger Fabric,一键发链。

节点封闭:联盟链采用了一个CA准入机制,如果你没有被授权,就不可能成为一个节点,甚至都没有权限来读取联盟链上的数据与状态,因此联盟链上存在一个或者几个上帝视角的管理者,他说了算。

升级困难:但是比公链会简单一点。

可扩展性很低,生态单调。

 

3、公链与联盟链生态

 

 

公链生态的业务逻辑:

DeFi(去中心化金融);DAO(去中心化治理);Staking(质押治理);Economics(经济系统);ZK(隐私保护);Oracle(预言机,链下通信);Consensus(共识机制);Crypto(代币经济系统);Cross-Chain(跨链);TEE(基于硬件的隐私保护机制);

 

公链是完全开源的,很多好的项目,其研究成果都是第一时间开源的,治理思想/技术成果/重要文件等。

 

联盟链的业务逻辑:

涉及到各种业务,但是是封闭的,至针对某一个业务开发,因此文件代码都是封闭的。

 

由于公链与联盟链并不互通,因此有一个现象,从事公链开发的从来不会关系联盟链的开发,从事联盟链开发的,也从来不会关心公链进步。(没有共同的框架)

 

4、波卡是什么?

 

1)波卡是什么?

 

 

通俗来说,波卡就是一条能够把所有区块链都连接起来的区块链,愿景是组成一个跨链协作的未来。

 

2)波卡的特性是什么?

 

 

波卡可解决信任问题。这也是区块链本身的特性。

 

波卡的平行链专业化可以解决可扩展性问题。当下区块链在做的就是成千上万的节点重复一个动作的事情,例如所有节点都在执行相同对的存储动作,相同的命令执行动作,相同的版本升级动作相同的状态更新动作,结果只有一个——效率底下。但几乎所有区块链都是在沿着这个思路解决问题,最终导致两个极端,极端这一头就是Bitcoin,全网近11000个全节点,极端的那头就是EOS,全网21个超级节点,Ethereum位于极端的中间位置,并且在思考,如何才能兼顾安全性与性能?这也是ETH2.0在做的工作。

 

波卡采用中继链+平行链的拓扑结构,解决了可扩展性问题。因为波卡的平行链具有高度自主权限,完全可以根据个性需求进行开发,中继链的数量理论上可以无限增加,达到可扩展性的目的,波卡“嵌套中继链”的终极架构理论上可以做到性能无上限。

 

波卡平行链可交互解决更广泛的信任问题。还原出真实的区块链世界。

 

3)波卡正在解决哪些问题(跨链协作、可扩展性、共享安全性)

 

 

区块链世界的不可能三角:当下的区块链就是可扩展性、安全性、去中心化三者的矛盾结合体,要想厚此,必须薄彼,例如要想增加可扩展性,必须削弱安全性或去中心化。

 

 

例如,IPFS兼顾了可扩展性与去中心化程度,由于IPFS的验证是比较简单的,IPFS对交易顺序、节点状态都有严格规定与限制,并不需要所有节点保持相同的状态,但如果你想要拒绝双花攻击,就必须保证系统的一致性,但是IPFS并没有,所以Token不满足安全性要求。

 

再例如,EOS采用DPos机制,全网一共21个出块节点,并且对每一个超级节点的硬件要求都非常高,这也就是意味着其去中心化程度受到了极大的挑战。

 

Ethereum与Bitcoin保证节点步调一致、并且对所有人开放挖矿,所以去中心化与安全性就非常高。所有节点步调保持一致,也就导致其可扩展性受到严重限制。

 

 

 

 

 

 

联盟链是趋势,公链时未来。

 

 

 

第二节第二部分(上):关于Substrate

 

1、Substrate介绍

 

Gavin撰写了以太坊的黄皮书,设计了以太坊的技术框架以及EVM(虚拟机),Gavin在设计ETH2.0的时候,就想到用分片来实现ETH的可扩展性,而每一个分片的架构又是一模一样的,这样设计的目的就是为了提升区块链的tps。其实,当时Gavin在设计ETH2.0的时候就在想,为什么不把分片设计成为通用的架构,这样每个分片(的开发者们)就可以专注于不同的业务逻辑的设计了,因此当Polkadot开发到了一半的时候,Gavin专门从Polkadot中抽象出了通用的开发技术框架,成为今天的Substrate。

 

所以Substrate就是从Polkadot开发过程中提取出来的开发经验,是通用的,基础的,易于修改的,是区块链世界的第一个轮子。

 

 

 

2、区块链世界需要包含哪些组件?

 

 

最核心的架构是数据库、点对点网络、共识算法、交易处理、交易队列、零知识证明。链逻辑即runtime。

 

 

但是存在一个问题,及时开发者的自由度很低,即便是联盟链,其定制化程度也只能够到达智能合约的层面,即DApp阶段。

 

但是Substrate的定制化程度就非常高,包括核心组件、治理升级模型、智能合约都具有可扩展性,完全自主可控。因此使用Substrate就能够达到可扩展性。

 

 

Substrate的开发支持的模块:

 

 

由于Polkadot也是基于Substrate创建的,因此理解了Substrate就能够理解波卡。

 

 

 

3、Substrate Runtime

 

Substrate Runtime可以支持的模块多达40个,对开发者而言,整个产品实现过程就像堆乐高积木一样简单。因此自定义Runtime是一件很简单的事情。

 

 

而且,基于Substrate Runtime创建的区块链,可以轻松简单地做到链上无叉升级。这是开发者最喜欢的Runtime的特点。

 

为什么能达到链上无叉升级呢?但是像Bitcoin/Ethereum这些区块链却必须要三分之二的运行节点主动替换掉在本地运行的客户端的可执行二进制文件呢?

 

 

整个执行过程如上图所示,Runtime被分为两种,一种被称为Native Runtime,另一种被称为Wasm Runtime。当交易涌入节点时,节点内置的装置(switch)会告诉它们:“如果链上的WASM代码(Wasm Runtime)比您的本地代码(Native Runtime)更新,请忽略您的本地代码,而选择WASM代码。如果WASM代码与本地是相同的,那么运行本地代码,因为它更快。”

 

通过这个逻辑,避免了硬分叉。

 

那么Runtime采用什么方法升级呢?根据个人需求,如果你是个私有链,就可以采用Sudo模块,就可以获得超级权限,一键升级。如果你是个自定义级别的公有链时,就可以通过Democracy(民主治理)的模块进行升级,可以构建一个自己的公投模块,让大家投票需不需要升级,如果大家投票通过,那么就可以进行升级。

 

 

总之,Runtime的升级是多种多样的,全看大家的需求。

 

 

4、为什么我们如此需要链上升级?

 

 

在互联网世界,我们的升级基本上都是一边开发一边上线,一边修复bug,一边上线新功能,但是在区块链世界,一切的一切都变了,一旦你的一些漏洞在上线时没有发现,那造成的损坏是致命性的,犯错成本非常非常高。

 

在开发以太坊智能合约时,让开发者最提心吊胆的不是开发过程,而是智能合约上线的时候,因为一个很简单的小bug就会损失几十万甚至几百万美金,因为升级很困难。甚至项目在一开始没有做好升级规划的话,后期的升级就是一件不可能的事情。最严重的就是一行代码的失误会导致整个项目的失败,因为升级太困难了。

 

所以开发者非常希望能有链上升级的功能,这种在传统互联网世界一键就能够完成的事情,在区块链世界变成了不可能。

 

比如像Bitcoin/Ethereum这样的区块链,升级的协调成本会非常高,不仅需要开发出新的客户端,更需要三分之二的矿工配合升级,因此即便区块链发展了10年之久,也没有一个明确的升级策略与升级的时间点。

 

例如,我们发现了一个十分紧急的漏洞需要进行升级修补Bug,但是另一方面需要协调全世界成千上万的节点来配合,很可能在这个时间差内,就导致了项目的失败。

 

因此,波卡通过Substrate引入的链上升级,就是区块链行业的救星。

(未完,待续......)

往期精选:

1)公链生态大事件:以太坊ICO、EOS超级节点竞选、即将到来的波卡IPO,格局不同结局必然不同!

2)波卡“圣杯”之Kusama,是Polkadot终极目标“嵌套中继链”第一步,KSM尚有10倍涨幅?

3)Parity亚洲技术总监瑶琪博士分享:Substrate开发、平行链参与方法、Web3.0生态进展

本文地址:http://tjjsr.com/6945.html
版权声明:项目均采集于互联网, 期货人 无法审核全面,如有违规,请联系我们删除!!

《本站免责申明》 《联系我们》

评论已关闭!