从柏林到平行世界—开发者社区活动Sub0.1见闻

第一届Substrate开发者社区大会的详情将由我来详细介绍。我是Phala Network的CEO佟林。我们是substrate开发者和积极参与者,比如Phala网络的第一个公链组件pLIBRA就是Web3 grant项目,我的合伙人尹航也是Polkadot大使。因此在12月5日到6日,我们团队受邀参加了德国柏林由Parity和web3基金会主办的substrate开发者社区会—Sub0.1,分享给大家一些收获和比较有意思的经历。

什么是 Sub0.1?

Sub0是substrate开发者社区活动,Sub0.1是第一期活动。Sub0.1通过组织substrate开发者聚集到一起,学习、交流、分享,可以理解为一个生态集会。

这次盛会汇集了来自世界各地的Substrate开发者和生态参与者,共享自己的项目成果和进度。作为大会的主角,Substrate作为区块链的搭建框架和方便易用的 SDK(软件开发套件) 吸引了很多分布式网络、分布式应用开发者的兴趣。我们在现场也看到很多柏林本地的以太坊原生开发者也来参加大会。

基础概念科普,老司机可跳过

在这里解释下波卡、Substrate、Parity、Web3基金会的关系,以及Gavin Wood在里面的位置(:-D :

1

Parity是位于德国的一家创新科技开发公司,由Gavin创立。被人所熟知是因为该公司早年开发了以太坊客户端,以及这几年一直在开发Polkadot网络。理论上Gavin并不是Parity的CEO或CTO,但是他本人在Parity贡献了相当足量的代码。

2

Parity是位于德国的一家创新科技开发公司,由Gavin创立。被人所熟知是因为该公司早年开发了以太坊客户端,以及这几年一直在开发Polkadot网络。理论上Gavin并不是Parity的CEO或CTO,但是他本人在Parity贡献了相当足量的代码。

3

Parity的另一个产品是substrate,一个区块链开发框架。基于这个框架不仅可以轻松地搭建区块链,还可以轻松地接入波卡网络。substrate也是主要由Parity公司开发的。

4

Web3基金会是波卡募资后成立的一家基金会,Gavin在该基金会担任主席。可以理解为波卡的开发实体目前在Parity、但是运营实体在web3基金会,基金会主要负责推广、市场、运营、管理等等。web3基金会和parity是各司其职的亲密战友。比如利于推广波卡生态和substrate使用的“grant计划”,就是主要由web3基金会策动的。

综上,大家应该理解了:substrate和波卡有着巨大的交集,但功能上又不完全重叠。这是Parity非常明智的产品矩阵: substrate能吸引想独立开发区块链且对跨链没那么感兴趣的开发者,polkadot又能吸引对跨链感兴趣的生态入驻,最终使得web3生态越来越强大。

Sub0.1的议程和观察

是什么能让上百名开发者从世界各地来到寒冷而…朴素的柏林?

和几十名参会者聊天后,我们发现:

一部分参会者是有意成为平行链的substrate开发者,例如我们团队,这部分开发者主要是想了解波卡主网的开发进展和更多细节(后面章节详述)

一部分参会者是想用substrate搭建区块链的开发者!这里面既有想使用substrate原生开发一条链的,而也有很多是已经有成熟的demo或产品,想迁移到substrate的。这部分参会者甚至可能是主流。

部分是波卡社区、粉丝

部分是投资者,比如IOSG、LongHash等

比较惊喜的是,我们发现柏林作为以太坊爱好者的聚集地之一,已经开始有一部分开发者在调研substrate了。基于其友好性、完备性 & 波卡跨链大饼,substrate真的前途无量。因此,sub0.1也是一个对外窗口:瞅瞅我们已有的生态项目,瞅瞅我们的开发进展,瞅瞅我们的future!

Sub0.1共进行了两天,在一个叫Betahaus的建筑院子里。该建筑位于柏林的东南角,略显荒凉,有点像十年前北京的798。据德国友人介绍,这个区域是一个「科技新区」,因为房租廉价、氛围多元化而吸引了全欧洲的开发者聚集,因此在这里办workshop性价比不错。

在Betahaus里,分为主会场和workshop会场,两个会场在两天内是并行进行主题活动的:既可以去听别人分享,也可以在Parity工程师带领下直接动手,两边的活动质量都很高。

主题内容分为几类:

01

Deep Dive

由Parity各大高工引领分享的“深潜”内容,主要是Substrate的核心特性的(core)设计思路和细节。比如Wasm与Substrate、Offchain Workers、Fees、Storage等。

02

Features

这类内容是惊喜最多的,突出一个“进展”。比如Cumulus、ink!等,也都是substrate的功能组件,Parity工程师会分享更多的产品思路和开发进展出来。

01

Community

展示使用了substrate的优秀项目,主要是grant项目。这部分具有秀肌肉和立标杆的双重作用:对于在观望substrate的开发者来说,展示优秀项目可以让他们看到使用这个框架的价值;对于已经入坑的开发者来说,这些台上的项目就是下一期的自己哦(暴露心声)

主要收获:平行世界的那些事

简单来说,波卡实现跨链的基本网络结构是轮辐型。网络中心是Relay Chain 中继链,外围是众多的 Parachain 平行链,后来Gavin又提出了 Parathread 平行线程的设计,旨在解决平行链拍卖费用与规模增长之间的平衡关系。网络的参与者有四种角色:Validator 验证人、Nominator 提名人、Collator 收集人或者核对人,Fisherman 钓鱼人。Polkadot 采用混合共识协议,出块协议的是 BABE;敲定协议的是 GRANDPA。

跨链永远不是简单的任务。跨链的概念最早源自于比特币侧链,起初人们希望实现资产在比特币主链与侧链上的双向转移,并按照这个逻辑设计了多种方案,然而由于比特币主链功能有限,且开发难度高,最终没有落地。有了侧链的经验,人们逐渐意识到跨链需要基础设施的支持,Cosmos和波卡就在这个背景下诞生。

与其他项目相比,波卡野心更大。不仅要实现资产跨链,更要实现通用的数据交换。简而言之,波卡把自己定位为区块链之间的高速网络。资产跨链尚且困难,波卡为了实现通用于高效,则必须采用极为精密的设计。上层的中继链、平行链,中间层的Cumulus、XCMP,以及底层的Substrate等组件都为此而生。

业界公认跨链的难点,在于保持安全性、性能的前提下实现真正的互操作性:这一部分的难点是需要实现跨链数据通信,因为资产跨链其实有不少可用解法。

对于基于substrate的开发者而言,bonus奖励就是我们预期可以低成本的接入波卡中继链,实现跨链通信和操作。因此,parachain 平行链 如何实现跨链,是一个预期很高的需求。

而从Web3基金会 & Parity的开发进展来看,关键里程碑也在于如何实现平行链接入。此前我们只知道:

1

可以借助 Cumulus 部署平行链,Culumlus是一个Substrate的插件。

2

获得平行链的槽位需要通过蜡烛式拍卖来赢得,这也是Dot的应用价值。

3

而对于不那么需要常驻槽位的链来说,Parathread 平行线程 是一个性价比更高的与波卡共享安全性和跨链操作的方案。

4

平行链可以调用跨链消息机制,并与波卡共享安全性。

但是在此次前往柏林之前,我们不知道的是:

如何用Culumus部署平行链

跨链通信的细节

平行链与平行线程的经济设计细节

…还是很慌的。

好在本次的收获也主要是这部分的 信息披露我们第一时间在此分享给大家

平行链与平行线程的经济设计细节

这部分的内容是由 Shawn Tabrizi 演讲的,主题是《How to become a parachain》。

这位小哥是Parity的工程师,但却是所有演讲嘉宾里给我印象最深刻的:

分享时语速最快,信息量最大

激情澎湃,讲代码时好像在CX一样,引人入胜

略过背景知识,他分享了作为一个parachain实现的能力和深层次价值:

平行链可以把最晚区块头同步到中继链。

深层次价值:为平行链敲定确定性实现了基础。

平行链提交的区块将会被validators用wasm runtime来验证,同时平行链有能力使用它储存在中继链。价值:平行链共享了安全性。

借由抽象信息传输系统,平行链获得与其他平行链的通信能力。价值:平行链可以证明信息传递与去信任化的互操作性。

这么牛逼的特性,是不是谁都可以成为平行链?

答案是否定的:因为波卡的资源是稀缺的,或者说至少说是有限的。

面临n的二次方的网络通信复杂度网络容量、延迟、区块大小

因此现在可以乐观的说, 波卡中继链可能最多会支持每个区块分配给100个平行链。分配比例(划重点!)

大约是:

10-30个分配给系统级别的常驻链,比如:桥、Nested Relays、系统

40-90个分配给slots

最多50个分配给平行线程执行

平行线程和平行链有什么异同?

相同点:开发者API

平行线程和平行链不需要分别开发,对于开发者来说是一致的

你使用substrate开发完一条链,甚至还可以在平行链/线程两者间自由切换!

不同之处:

准入流程

确认速度/吞吐量

·       平行链:全吞吐量支持

·       平行线程:按需支付,

英文是 pay as you go

经济上

·       平行链:长期价值投资

·       平行线程:不退钱

极为直白

如何实现

首先,我们来说下波卡与之相关的模型

Q

注册模型:管理注册业务、管理平行链/线程ID、追踪平行链/线程行为、平行线程拍卖

平行链模型:验证人逻辑和实际执行、通信传递、同步最晚的平行链/线程区块头和runtime代码

Slots模型:执行平行链拍卖、管理平行链槽位

众筹模型:允许社区为平行链拍卖投资、追踪社区贡献值

平行链拍卖模型

使用蜡烛拍卖

玩法:在拍卖结束期使用VRF模式(参考Arogorand)追溯结束区块

好处1:鼓励健康的拍卖价格被发现;不鼓励定向狙击

好处2:帮助减轻恶意区块生产者的影响

好处3:不需要强制“承诺和展示”范式

由治理发起

一次只能拍卖一回

每次拍卖的是两年的槽位使用权:分成4期,每期6个月

使用完成后全部DOT返还

根据这样的机制,平行链拍卖策略实现出来的效果:

可以看到, 这个拍卖结果(Alice获胜)是综合租期、出价、锁仓数多个权重实现的。

一个用户可以对同一个槽位使用不同的租期范围多次竞拍

租期范围必须重叠:比如第一笔投标是Q1、Q2、Q3、Q4,第二笔可以是Q1、Q2、Q3或Q2、Q3、Q4,第三笔可以是Q1、Q2,那么第四笔就不能是Q3、Q4—必须和第三笔有重叠部分

每一个租期必须是连续的: 比如只竞拍Q1和Q3不可行,要连起来

平行链众筹:

允许社区支持你的平行链

奖励使用你原生代币的用户

众筹逻辑自动在拍卖流程中执行

众筹的逻辑设计:

必须存一笔存款

任何人都可以参与贡献,但是至少要达到一个基准贡献度

新众筹者发起拍卖

众筹在指定截止时间(提前设置好的)结束

众筹可以跨越多个拍卖周期

如图,child trie模块负责追踪社区用户的贡

结果状态只有成功或失败

当你的链退休后,会有一个退休周期让人们可以重启收集资金

平行线程拍卖(划重点!)

使用英式拍卖法。

平行线程名义上需要锁定一笔可被退还的存款。

每次出块都会举行拍卖。

赢家数量与线程总数正相关。

拍卖使用的DOT会被消耗掉,而不会被退还。

赢得槽位后,你会被安排到提交下一个区块头的队列中。

如果你错失了槽位,你在接下来的出块时会获得三次额外机会。

总结下平行链/线程经济学

对平行链经济来说:

锁仓DOT并不免费

理想情况下,参与锁仓可以通过增加网络价值,这对DOT是很好的投资回报

对平行线程经济来说:

如图,激励 collators 用平行线程链的原生token结算 

Collators负责收集转账费用

使用原生token激励

当平行线程的拍卖费比原生token结算更低时,区块自然的被平行线程生产出来

因此,总体来看平行链/线程的生命周期:

当平行链拍卖的槽位到期或卖出槽位的时候,平行链降级为平行线程;当平行线程追求全吞吐量时通过拍卖槽位的方式成为平行链。

是不是很想成为一个平行链?

Cumulus就是一个用substrate来轻松实现平行链的代码库。下面会重点讲解平行链的技术部分。

如何用Culumus部署平行链

在波卡的设计中,平行链通过中继链通信,因此成为平行链是跨链的前提。直到今年秋季,基于Substrate开发的链还只能独立运行,但随着Cumulus的出现,任何Substrate链都只需要极少的修改,就可以变身成一个平行链,加入波卡生态。

Cumulus就是连接平行链和中继链的核心组件。为了理解Cumulus,我们需要简要回顾一下Substrate的共识算法是如何运行的。

Substrate内部高度模块化,一个显著的特征就是它实现了共识算法与其他组件的分离。换句话讲,Substrate开发的链,共识算法是可以被任意替换的。为了实现这种抽象,Substrate定义了Collator用于产生区块,ImportQueue用于接受区块,以及Finalizer用于接受和确认区块。Substrate默认的共识算法GRANDPA实际上只负责区块的确认,BABE共识负责甄选区块的验证人,他们组合成了BABE+GRANDPA共识模块。

当一条链成为平行链时,会产生三个变化:

1

波卡验证人会接管平行链的验证

2

平行链节点不仅要独自产生区块,还需侦听中继链与其他平行链,保持状态同

3

平行链从其他平行链收集传入的消息,从而实现消息跨链

这就要求平行链节点不仅要处理好自己的链,还需要兼顾波卡主链,从而保持链间的连接状态。 引入Cumulus后,Cumulus会全面接管Substrate的共识模块,同时进行区块产出,启动一个轻节点跟随中继链,并允许波卡验证人加入网络参与共识。

Cumulus Workshop:实际上手体验

在Sub0.1第一天,波卡公布了Cumulus的实际上手Workshop,开发者已经可以在本地网络上运行起平行链。

部署平行链分为两步。 第一步,在Substrate链上引入Cumulus,接管共识模块。第二步,编译出平行链并部署到中继链上。 在Substrate的高度模块化设计中,每一条链都被抽象成了状态与Runtime的组合。状态保存在链上,而Runtime也编译为WASM模块,保存在链上。中继链上既部署了自身Runtime,也保存了全部的平行链Runtime。

Substrate默认采用GRANDPA共识,如果共识模块没有改动,通常只需要数十行代码的改动即可适配Cumulus。引入了Cumulus后,即可准备加入平行链。

一切就绪后,跟从Workshop的说明,启动一个本地波卡中继链网络。在本地测试网络中,开发者拥有链的Sudo权限,可以如下图所示, 在Sudo模块中执行交易提交平行链。 成功提交后可以从网页控制台上观察到平行链上线、出块。

在这次Workshop中,短短的一个小时内,参与者们成功的编译、注册,并部署了两条平行链,在活动监视器Telemetry上也可以实时看到所有参与者的节点。虽然这次Workshop并没有涉及到平行链插槽竞拍等经济设计,但可以相信,波卡的平行链已经距离发布越来越近了。

跨链通信的新进展:XCMP、SPREE

如果不能充分利用波卡的跨链能力,仅仅成为平行链是没有意义的。当一条平行链连接到波卡之后,就意味着它得到了平行链之间的通信能力。 X CMP(跨链消息传递)协议实现了链间的通信, 波卡的共识算法就主要为它服务。

平行链可以向另一条链发送消息,XCMP确保消息依照次序、准确无误的投递到目的地。收到消息的链可以采取任意的逻辑来解读。波卡创造性地实现了链间“共享安全性”, 不仅确保平行链区块的产生与接受,更重要的是保持整个网络状态的一致性。 在没有共享安全性的网络上,任何操作都需要大量的区块确认时间(就像中心化交易所一样)。网络的确定性是XCMP能够得以实施的关键。

XCMP是非常底层的基础设施,直接使用XCMP实现应用层的跨链依然是很繁重的工作,因为XCMP只负责消息的发送,但没有定义接受方如何响应。波卡提出的解决方案称为SPREE(共享安全区),在Sub0.1上给出了更多细节:SPREE允许在每个平行链上开辟一块与平行链独立的安全区,在里面执行公认安全的代码,确保这份代码不会受到平行链的干扰,从而解决接收方不可信的问题。利用SPREE可以实现非常高效的跨链资产转移。

有趣的项目

在柏林,我们见到了几个好玩的项目,介绍给大家。

pLIBRA上镜!

SubstraTEE

和Phala Network一样,SubstraTEE也是希望将可信执行环境赋能区块链的项目,但是该兄弟项目的定位和目标和我们完全不同。 Phala Network的目标是为所有区块链提供可信智能合约平台的服务, 第一个用例是将Libra与波卡主网桥接的pLIRBA。 SubstraTEE是基于具体需求的产物, 他们服务的目标是实现Encointer项目:一个数字货币UBI(全球基本收入)!

下面概括下这个项目的逻辑:

实现UBI的基础假设:

开放型区块链

能够自我掌控的去中心化的无国界身份ID

实现的挑战是:

如何只让人类获得UBI收入?

如何保证每个人类只获得一次UBI?

如何让收入拥有真正的价值?

投放策略:

每隔41天在太阳高日照区域的集会上进行一次随机的密钥签署(物理意义的集会)

此处关键假设:

每个人一次只能在一个地方出现

人类总是能够透露出于其他人会面的信息

这里的集会的设计很有意思:

根据每个人可接受的范围和位置,系统将3到12个人物理上随机的组成线下面基群

这样就形成了一个POL:位置证明

每个当地社区可以根据定义它们自己的本地数字货币

基于本地的NCTR(项目token)可以提供本地去中心化交易

因为在一条链上实现,因此网络安全性仍然是全球范围的保证

Encointer项目是基于substrate开发的,他们发现要实现该项目愿景,必须保证隐私性和基于非真实身份的可验证性。而NCTR货币必须支持默认匿名交易。

因此 他们决定实现一个基于TEE环境的substrate…

简单来讲,substraTEE是一个substrate的魔改版本,改动部分是他们将所有的计算和节点都跑在TEE环境里面。因此实现出来的效果是由一群可信矿工来提供区块链计算的substrate,如果你想创造一条完全由可信设备矿工运行的区块链,可以使用substraTEE开发。而Phala Network实现的是可以跨链的机密智能合约layer,可以叠加在任何一个区块链上被调用,不需要实现机密合约原生链的矿工拥有特殊设备、也不需要区块链进行定制化改造开发。

Phala Network和该项目经常接触,可能会有部分组件是合作完成的。

MXC极域物联网

我们在柏林也与我们的老朋友「MXC极域智慧城市」CEO胡莘顺利会师, MXC极域同样也是获得Web3奖金的项目,总部就位于Sub0.1举办地柏林,因此也算是与Substrate生态项目的“东道主”汇合了。

和“土著”胡莘老板午餐

优秀的胡老板也是毕业于当地的柏林工业大学,是MXC极域CEO,MatchX柴火物联的创始人,是德国MoneyGram创新奖唯一获奖华人,MXC IoT和MatchX智慧城市产品获得柏林政府颁发的年度创业产品奖,在德国累计获得数千万欧元融资,智慧城市产品在全世界六十几个国家广泛应用。

胡莘老板带领的 MXC极域是一家AI物联网算法核心技术提供商

于2016年成立,致力于低功耗广域物联网(LPWAN)与区块链技术在智慧城市的研发应用。

目前客户有德国铁路,博世,德国柏林科技局,美国卡内基梅隆大学,加拿大Canadian Tires,韩国Enlink,韩国国家电网,纽约Citiesense,日本M2B,上海杨浦区智慧城市项目,江苏爱康科技等。

12月9日,之前来自于Polkadot和DAPS项目,新加入MXC极域的核心工程师Luke Schoen也对Web3和Polkadot发表了见解:认为运用Web3技术能更好地在区块链产品上进行实验,比如去中心化应用方面 (DApps), 以及探索背后的加密世界。

从以前的开发钱包应用的经历到现在,能使得我转向MXC IoT生态的原因是, MXC钱包的开发和效用,在Polkadot中继架构中, 通过平行链和桥接链,连接到所有不同的区块链,只需要建立在统一的polkadot平台上。 我们的机器端到机器端钱包(machine-to-machine wallet),从而促成IoT网络连接方式的进化和带来更多的创收。

链内数据市场(interchain data market)会是Luke的下一个任务,首先将MXC极域钱包以一个demo呈现,吸引更多的开发者组成一个技术社区、扩展更多在开源技术上搭建的核心开发者基数。

写在结尾

虽然柏林和北京一样寒冷,但是我感受不到web3.0世界的寒冬:国内热火朝天的大炼联盟链,去token化,交易所、公链、defi都变得小心翼翼,甚至公链及其生态社区(一共也就几百个人)还有“站队”之分:以太坊2.0、天王layer1项目、Polkadot、Cosmos各自水火不融。

在柏林感受到的确是比国内更务实的气氛(不可思议)。这里的开发者没有论证“公链必要性”的话题, 只有使用什么工具在什么场景下解决什么问题的逻辑 ,因此以太坊开发者会来substrate看看,波卡开发者们讨论技术问题热火朝天,指责“推迟”“币价”“经济设计”的几乎没有。

另一点感受就是, KUSAMA在短期内的实用价值可能被大大低估了 :虽然大家都知道它是一个波卡“BETA”版,但是对于到底要用它到什么程度是未知的。聊天过程中几瓶啤酒下肚,我们感受到core对于KUSAMA的态度有着不小的期待:短期内(6个月)波卡的核心特性,都会在KUSAMA先上线,beta期稳定之后再集成到波卡。因此,平行链/线程开发者如我们,少不了先在金丝雀做集成调试,也就有少不了囤积一些物资:-D

在可预见的未来里,不会有哪个公链独占市场:web3.0的世界中,很有可能不存在100亿公司,但是很有可能拥有100个1亿公司。以太坊2.0、Filecoin、Near、Celo、Dfinity、Solana、Nervos、Confulx、Harmony等等,都有自己独当一面的特性,跨链的需求也无需论述。layer1、跨链设施的玩家已经基本锁定,接下来玩家们需要角逐的空间比上述天王们更大:服务&协议层、应用层。服务&协议层、应用层开发者们挑选生态的逻辑,无非是:- 功能是否完备 – 开发者友好度 – 是否有协同效应 – core是否给力,能持续迭代和修复,且不会跑路倒闭 – 是否能获得支持

在这个前提下,站队Cosmos还是波卡的问题没有什么价值:既然两者同时存在可能性很高,那就比拼以上几个决策点用脚投票,或者“我全都要”。 目前看到的是国内使用substrate的开发者越来越多,社区氛围非常好:生态内的“竞争”几乎不存在,每个项目的定位都有明确错位,这也是web3基金会操刀指导的好处。

套用一句俗话,局域网和互联网的价值天差地别:如果不参与到全球化的、自下而上的革新,做区块链和摆摊卖煎饼有什么区别?可能挣得还不如人家多(泪目)

作者 / Marvin Tong

编辑 / Emily Yang

ShawnRingLin