2020年10月20日,密码极客发起了第一期。我们非常荣幸邀请到了Parity亚洲区技术总监贾瑶琪博士做客密码极客大咖直播间,为大家讲解《如何基于波卡开发区块链项目》。
贾瑶琪博士的演讲观点新颖,理论详实,引人入胜。密码极客为了使小伙伴们能够再一次回顾这场精彩的讲演,特意对此进行了归纳整理,并分成上下两篇发布。
演讲环节
1、在波卡上如何开发区块链系统?
大家作为不管是开发者或者是区块链从业人员,应该都能感觉到从零开始构造一个区块链是一个非常困难的事情,为什么说是很困难的事情?
图1
大家可以看一下图1,其实要从头开发一个区块链,你要考虑到的就不只是数据库公式算法,还要考虑到处理各种各样的交易相关的一个转换函数。与此同时,如果你想加一些比较复杂或者先进的一个逻辑在里边,例如零知识证明,这样就要在开发区关联时候额外添加这些比较复杂的算法以及功能。
那么大家其实就会想到我们如何使用已经有的这些,不管是公链技术或者是联盟链技术来进行二次开发。其实在过去的十几年当中,特别是从09年比特币白皮书这样的一个上线,以及15年以太坊系统的上线,大家可以看到区块链不止可以做支付,而且还可以在上边部署一些智能合约。那么的话就有很多开发者是基于比特币做二次开发,以及一些比较有意思的这种utxo模型的这样的一个区块链系统,还有根据以太坊做的一些调整,然而这些基于已有的区块链开进行二次开发来做一些新的链这样的一个系统,他们最大的问题就是由于像比特币或者以太坊早期的这些项目,他们也有一个比较好的开发框架,其实大家都是在源码基础上进行改动的,这样就要求开发者对于源码的理解是比较高的。与此同时的话,由于这些源码没有比较好的模块化来作为一个框架,其实开发起来的难度是很大的。
而我们Parity其实从Gavin在很早期15年建立Parity的时候,我们在最初就在帮以太坊开发它的Rust客户端,之前是叫做ParityEthereum现在改名叫做OpenEthereum,我们积累了很多各种各样的对区块链的开发经验,特别是在从18年开始积极的开发Polkadot跨链项目,我们吸收以及总结了很多开发供应链的这样的一些经验,然后从这些经验里边,我们抽取以及进一步的深化,做出了这样的一个区块链开发框架。而这套框架我们命名为Substrate。
图2
因为波卡是一个跨链项目,那么我们为了帮助开发者更快的开发自己的一个区块链系统,我们就开发了Substrate这样的一套框架,来方便开发者去开发相关的这样一个区块链系统,我们叫做平行链。大家可以看到Substrate其实包含了很多刚刚我提到的这种区块链的核心组件,例如数据库层、网络层以及可插拔的共识协议。
支付宝爱心捐赠平台引入区块链技术 目前已支撑20亿次交易:金色财经报道,4月16日下午14:00,蚂蚁区块链“开放联盟链”面向中小企业和开发者发布,助推全民入链。蚂蚁区块链平台产品部总经理金戈在会上指出,支付宝一直在内部推动区块链的应用,促进解决行业问题。其中之一就是支付宝爱心捐赠,支付宝公益其实已经做到了很大规模。在过去从捐款人到募捐方到分发受捐的个体信息是不透明的,为了解决捐款传递流转中的问题,支付宝爱心捐赠引入区块链技术,将参与其中的多家信息写到链上,做到不可篡改,从而使得公益更加透明,截至目前该平台已经支撑了20+亿次的交易。[2020/4/16]
同时,我在之后也会提到包含了比较有意思的链下工作机以及链上的这种可升级的功能,这样就可以帮助开发者在开发的时候,其实大家只选用自己想使用的一个模块,就可以很快速的开发相关的一个区块链系统,可以快到哪种程度,Gavin其实在18年的时候,在Web3峰会做了这样的一个演讲,就是拿出了崭新的苹果电脑,然后开始装这样的一个Substrate相关的dependency,然后到最终编译出一个区块链只花了15分钟,大家可想而知,这个是18年的不稳定版本,现在的话Substrate已经到了2.0版本,那么在这个版本上进行一个开发,其实会有更好的用户体验,是更加快速的。回到咱们今天讲的主题,在波卡上如何开发区块链系统,那么相信大家现在已经有了一个比较好的眉目,其实就是使用Substrate这样的一个开发框架来进行一个开发。
图3
2、Substrate开发出来的系统有哪几种方式可以进行部署?
图4
其实除了作为波卡的平行链或者平行线程之外,也可以直接部署成为独立的链。特别是在国内这种特有的环境下,大家也可以使用Substrate搭建自己对应的这种商业逻辑的联盟链或者私有链,以及一些对于吞吐量要求比较高的,可以针对某一个应用,例如游戏单独搭一条链并部署在自己相对应的环境下边,当然了目前大家在Substrate进行开发的时候,比较有利的一点是经过三年,从这个图可以看到,整个波卡生态的壮大以及开发者持续的开发,Substrate的开发生态以及工具是有很多的,大家可以用Polkadot-js,当然内置的话也是有一个比较好的这种区块浏览器,大家也可以使用ParitySigner这样的一个离线的硬件钱包。
3、怎么使用Substrate进行Rust开发?
工信部:将面向区块链等前沿技术 遴选一批新型信息消费示范项目:工业和信息化部办公厅将组织开展2020年新型信息消费示范项目申报工作,通知中提到,以满足人民日益增长的美好生活需要为根本目标,以供给侧结构性改革为主线,面向5G、人工智能、区块链等前沿技术,从提升产品服务供给、加快模式创新和优化消费环境等方面着力,遴选一批新型信息消费示范项目,总结形成可复制、可推广的经验做法,加快扩大和升级信息消费。(工信部官网)[2020/4/15]
图5
与此同时,除了图5上面提到的这种ink!智能合约。这种ink!.Rust类型的智能合约,我们目前也兼容了evm其实大家可以使用这些去编写智能合约,然后在自己对应的消费链上面进行一个运行。接下来我就大致跟大家分享一下怎么使用Substrate进行这种Rust开发。因为Substrate是跟其他的智能合约开发比较不太一样,因为你是相当于开发一个区块链,虽然区块链底层,像数据库、网络、控制协议都搭好了,但是针对你自己特殊的这种需求,例如你要做游戏的一个区块链,或者是偏支付的这样一个链,这种核心的商业逻辑还是需要你进行开发的。
图6
那么进行开发的话需要这种SubstrateRuntime的。图6里边大家可以看到,由于Substrate跟我们平时开发智能合约不太一样,那么的话它是有一些这种开发上面的一些这种policy需要大家去记住的。例如第一点,在SubstrateRuntime你如果发了一个我们叫做extrinsic,或者你就把它当做交易,发交易的时候,如果这个交易进行时发生了问题的,那么交易对状态的改变是不会回滚的。
然后在以太坊上面进行solidity的开发的话,如果交易执行不成功,那么其实它的状态是会回滚的。这就要求了我们在开发Substrateruntime的时候,最好是我们先自己验证一下他这样的一个逻辑对不对?然后再写。
接下来这几页的图片,大家可以看一下,在写这种runtime或者相对应的这种逻辑的时候,需要大家在里边填充自己的这种代码的,大家可以看模块定义通常是包含怎么定义存储事件以及错误,还有就是一些相关的这样的一个函数。
图7
对于这种如果大家想引用其他的相关的这样的一些trait的话,因为整个Substrate都用Rust写,所以这也会用到一些trait,如果大家想知道更多这种Rust相关的信息的话,再可以在网上查一下Rust的相关课程,或者加入我们Substrate的课程,我们会介绍一些Rust的相关的这种基础。然后像存储的话,大家可以看到其实里边有一些比较简单的类型、最简单的方法,大家就可以学习已经有的这些简单的类型或者这种例子,然后根据自己的实际情况,然后去改一下相关的这种变量名字,进行这样的一个操作。与此同时的话类似于我们写智能合约,在做一些操作的时候都要触发事件或者发出事件,那么这里边你也可以去定义一个事件。
现场 | 嘉楠区块链CEO邵建良:正探索联盟链和跨链技术 以实现更多场景的联合发展:金色财经现场报道,嘉楠区块链CEO邵建良在“2019 CAN 万物互链·区块链与全球经济新格局”大会上表示:我们在探索更多的联盟链和跨链的技术,我们希望实现更多场景的联合发展,通过跨链技术实现不同的链的价值流转。另外,在区块链标准制定方面,我们需要更多的完善的底层标准,在统一标准下实现不同链的数据传输。最后,我们确实需要不断教育市场,为更多的商业模式和社会发展带来无限可能。[2019/12/3]
当然了这里面还有一个地方就是decl_module,其实就是要定义自己相对应的这种runtime的函数,我在最后会提到的叫做Substrate.dev这样的一个网站上面有很多各种各样的教程,大家可以跟随教程去学习,以及做一些比较简单的例子去深入学习,怎么去根据这几个模块定义对应的这样的一个事件存储和函数,来完成自己对应的这样的一个Runtime,以及相对应的逻辑的定义以及操作。
4、Substrate应用链跟智能合约的差异性在哪?
在这里简单类比下Substrate应用链或者Runtime跟智能合约的差异性。
图8
大家都知道写智能合约,特别是以太坊上面的solidity这样的一个智能合约,很多时候由于solidity以及以太坊本身的限制——比如它存储量较低、手续费较高,同时像solidity它本身的限制也是比较多,可能更多时候是只能操作整数这种类型。
这就是为什么大家看到的目前以太坊上面比较火热的应用都是跟通证相关,而不是跟更广泛的Web3.0相关的原因。
而大家使用Substrate进行开发的时候,就不存在这样的问题。
因为大家使用Substrate开发的时候,整个链都是为开发者所控制的。所以当大家在进行开发的时候,不管是链上链下数据,或是对应的一些solidity没有的接口,Substrate都可以进行一个提供。
并且大家也可以看到,Substrate本身的吞吐量也是比较高的,所以可以给应用提供更多的处理交易与逻辑的空间。
与此同时,Substrate本身也会提供一个off-chainworker链下工作机,可以帮助做Substrate应用开发的开发者能够更快的处理相关的链下数据,实现链上处理链下数据,这样就打通了链上与链下。
5、无缝无分叉的链上升级
熟悉区块链行业的朋友都知道,在过去,所有的公链项目包括一些联盟链项目,如果想要做升级的话,都需要进行一个硬分叉。像比特币,特别是以太坊。大家都知道在16年由于“TheDAO”事件,由于矿工意见不同,最终从以太坊分出了经典以太。
我们为什么要做链相关的升级?这其实涉及到了一个计算机或者编程行业。
大家其实默认这样一个现象:没有任何一个程序员可以写出没有漏洞的代码。
声音 | 河北副省长陈刚:加快运用区块链技术 打造高质量发展样板:8月5日消息,省委常委、副省长,雄安新区党工委书记、管委会主任陈刚强调:“要加快区块链、大数据等技术研究运用,把制度建设和信息技术相融合,不断扎紧监管制度的笼子,积极探索廉洁雄安建设的新路径。”[2018/8/5]
不管是写传统的应用,还是写区块链得应用,或者智能合约。通常情况下你写的代码越多,那么你可能产生的安全漏洞就越多。
回顾过去的几年,不管是DEFI还是链本身,大家都会发现很多各种各样的漏洞,导致很多用户有各种各样的财产损失。
这就使得区块链本身需要一个比较好的升级——不管是智能合约升级还是链本身的升级。
但如果我们频频地去使用这种硬分叉进行升级,首先时间赶不上,因为升级需要“各个矿工在很短的时间内,把自己的软件升级到最新的版本,然后在某一个特定时间内大家共同去升级到这样的版本,最后从旧链切入到新链上面”的这样的一个逻辑。
然而,由于硬分叉,这种升级模式成本极高,而且很多时候可能会导致你本身的链又分叉出其它的链。
那么像Substrate就有一个无缝的链上升级。其实就是将开发者相对应的一个Runtime提交到链上面,然后进行一个验证者链上投票,大家可以看到这其实是跟链上治理相关的。
链上投票完成以后,如果绝大多数人同意进行对应的一个升级,那么开发者提交的一个Runtime就会被写入到整个链的Runtime里边,进行对应的升级。
有了这样一个无分叉链上升级,就可以保证区块链开发者可以更安心的运行自己的区块链。
即使出现一些问题,也可以很快的去进行修复或改正。
图9
6、链下工作机
大家都知道,在以太坊上面我们有各种各样的预言机,例如chainlink。
在过去的半年,预言机是很受到各种各样的人的关注的。
因为以太坊本身无法打通链上链下的渠道,所以链上如果想要获得链下数据——例如各种各样的通证价格,就需要这种预言机将数据发送到链上。
而Substrate本身就是链下工作机的运行原理——其实就是链上的这些节点,它们会通过链下工作机去取得链下的相对应的数据。
图10
那么这些链上的验证节点,就可以对链条数据直接进行处理。
未来的话可以对处理结果——例如在链上形成共识,来保证可以更快、更方便的拿到链下信息,并进行相关的计算。
数据分析平台Biotron新项目利用智能定位技术 将以BTRN币奖励用户:数据分析平台Biotron开发了一项策略,在用户通过其应用程序和其他工具开始分享数据之前先奖励用户。该公司将使用智能定位技术(location intelligence),向品牌提供其客户群体及连锁店的分析数据。作为回报,用户在加入平台之前先获得收入的一部分。一旦他们选择加入Biotron的移动应用并开始提供的数据,他们将能够获得BTRN币或现金。[2018/3/22]
像在波卡或Substrate对应的生态里,就不太需要这种单独的预言机。因为对应的这种链下工作机的接口已经写的比较好了。
与此同时,大家也可以看到对应的这样一个场景:除了我刚刚提到的想去拿一些链下数据;还有就是使用链下工作机的一些场景。
例如某些比较庞大的计算,我们就可以使用链下工作机来完成,结果完成后再返回给对应的一个链上验证者。
这里有一些链下工作机的相关学习资源,大家可以进行一个参考。
图11
7、如何更好的接入到波卡里面?
前面我讲了一些关于例如波卡是如何使用Substrate进行开发的,以及Substrate写出来的Runtime大概是什么样的,同时还有Substrate进行开发的优点的话题。
那么大家可能也更想知道:如果用Substrate去开发出一套区块链系统,我是如何更好的接入到波卡里面的?
大家可以看一下图12,其实就是关于波卡整个的一个框架。
熟悉波卡都知道,Polkadot最中间、最核心的是叫做RelayChain或者叫做中继链。中继链里面跑了很多对应的验证节点,叫做区块验证节点。
图12
不同的链如果接入到中继链里边,它们就会作为一个平行链接入到中继链里边。
很多比较大的区块链系统,例如比特币或者以太坊,它们如果想接入到波卡里面,就需要通过桥首先调节到一个平行链上面,再通过平行链与其他的平行链沟通。
作为平行链,它们对于内容的或者区块的验证要通过中继链相关的验证节点来完成。
那么的话大家就会问,平行链本身需要什么节点?这就像图里面提到的一样,需要叫做collator的这样一个类型的节点。
这些节点就负责采集每个平行链对应的区块,然后提交给中继链随机选择的一些区块验证节点。这些区块验证节点就会去验证平行链里对应的区块。
与此同时,使用Substrate写出来的区块链,还需要另外一个模块叫做Cumulus。大家可以在用Substrate写完这个Cumulus后,再进行稍微的改进,就可以用Cumulus连入到平行链里面。
当然,不是每一个Substrate链都可以连入到平行链和中继链,或者波卡里面——这就涉及到一个平行链插槽的拍卖。
图13
8、Web3基金会如何支持波卡生态发展?
波卡生态里面的项目特别活跃。大家可以看一下,不管是基金会还是Parity,我们对波卡生态项目的支持,都是很高的。
例如我们在大概3月的时候,就已经发放了超过100个项目对应的Web3项目,与Web3基金市场grant的支持。
与此同时,我们也会有叫做builder?program去帮助社区一些相对成熟的团队,给他们提供技术及商务市场的一个服务。
当然,作为一个不太熟悉技术的社区成员,你也可以参加我们的大使计划,去帮忙推广波卡相关的技术及理念。
图14
在亚洲或者国内,大家可以看到从今年5月份开始,我们跟万向合作做了Web3训练营,孵化了15支团队。
这15支团队大部分已经上了相关的测试网和主网。然后像做融资等也都是非常受欢迎的。
未来,我们也希望有更多、更好的团队可以加入到我们的Web3训练营里。我们会提供技术、商务以及市场相关的支持。
全球已经有超过100个团队基于Substrate进行开发区块链。
我们作为亚洲团队或者说中国团队,大家可以看到,在过去的一段时间里,我们已经为大家提供了各种各样的Substrate开发的相关中文资料。
不管是知乎专栏、Polkadot公众号,还是线上、线下活动,包括哔哩哔哩直播,都欢迎大家去搜索Substrate,或搜索我们的社区,积极加入到我们的活动里面。
与此同时,我们也有一些最新的活动——例如在月底我们要举办国内首次web3大会,主题就是开放、开源、互联。
我们会邀请海内外——不只是区块链行业或波卡生态项目及嘉宾,我们还会邀请海内外比较出名的、对Web3整个领域贡献比较大的嘉宾,去分享他们对Web3的理解,以及对Web3生态的贡献。
图15
大家如果感兴趣,可以去学习这样的一个教程,去体验一下Substrate新的开发框架——不管是链上升级,还是链下工作机。以及我们提供的各种各样的模块,来搭建自己的区块链。
很高兴今天能收到密码极客的邀请,今天为大家分享了这么多,也希望大家未来不管是在波卡生态,还是在区块链生态,都能够更好的开发、融入到我们的区块链行业,谢谢大家!
问答环节
问题一,来自网易区块链创新业务负责人胡志敏。
胡志敏:如果作为一个开发者,想在波卡生态中和基于Substrate上进行区块链创业的话,一定会需要一些启动资金,我想了解polkadot官方基金对于区块链应用的扶持策略,比如对于什么样的项目会启用官方投资?
贾瑶琪博士:关于波卡生态和机器设备进行开发的相关项目和团队,我刚刚已经讲过,不管是基金会还是parity,都会提供比较大的支持。
关于资金方面,基金会会根据项目相关的资质来进行评估。
大家可以去申请一个叫做Web3grant这样的一个项目。对于一些相对比较好的项目,基金会会提供大概3万美金的一个支持。
当然,对于比较复杂的项目也会提供更高资金的支持,但是需要花费更长的时间进行审核。
对于一些相对成熟的、有产品或者有测试网的项目,可以申请我们比较成熟的、相关的一些program。例如builderprogram或者我们的web3bootcamp,web3训练营。我们会对这些项目提供技术市场以及商务相关的指导与帮助。
与此同时,我们也会联系波卡生态里比较积极,支持我们的相关投资人或者海内外投资人,去帮忙观察一下这些项目,并且进行一些相关的投资。
问题二和问题三来自Coinversation代码贡献者,北大毕业,有12年程序开发经验的清欢。
问题二
清欢:如果开发平行链,后续平行链接入卡槽的成本会是多少?
贾瑶琪博士:针对第一个问题,如果开发平行链,那么插槽的成本会是多少?目前来讲,我们还没有一个很明确的计算。例如大概多少的dot你可以拿到插槽。但就目前来看——因为我们的插槽不是直接去买卖的,而是需要用户去锁自己对应的一个dot——那么的话,其实我们还是鼓励不同的团队去更好的发展自己的社区,在未来可以通过众筹的方式或去发展自己平行链这样的一个盈利能力,然后就可以用自己盈利获得的资金去进行插槽拍卖。
问题三
清欢:Coinversation使用ink!智能合约开发项目,目前从开发工具到智能合约测试再到部署都相对比较烦琐,后续如何能降低这些开发的门槛?
贾瑶琪博士:ink!现在已经出到第三个版本,具体情况大家可以去看一下。
关于ink!相关的开发、开发的模块以及相关的组件,我们也在逐步进行开发完善,从而方便更多的开发者去更好的使用ink!科技来进行开发。
目前你讲得也很对,可能有些开发工具确实不是那么地到位。但我们的Web3基金会已经给了一些开发工具的团队在做类似于remix的一个Ide,来帮助开发者使用ink!进行开发。
问题四
Polkadot社区1群成员:波卡或Substrate的应用开发必须要作为平行链吗?这样每个应用都开发链,平行链的插槽不够了怎么办?
贾瑶琪博士:除了平行链,其实还是有其他的方法。
第一个方法就是我刚刚提到的,可以去通过平行线程,然后接入到系统里面。
平行线程不需要一个平行链团队独占一个插槽超过半年或两年。它只按需竞拍不同的区块,然后把自己的区块写入到波卡系统里面。
当然,还有一些方式。如果你只是搭建一个比较简单的应用,那么可以尝试使用ink!或Solidity编写智能合约,然后可以将自己的智能合约或者相关的应用部署在智能合约平行链上面。通过智能合约平行链去调用以及提供数据给其他的平行链,还可以利用到波卡对应的跨链优势。
还有,也可以搭建一个单独的Substrate的链。未来通过某种方式桥接到一些平行链上面,那么通过平行链就可以将自己链的数据与其他平行链进行沟通。
大致的话通过以上三种方式,再加上拍卖平行链插槽,然后接入波卡。一共四种方式来接入到波卡的系统里面。
以太坊联合创始人之一VitalikButerin在推特上表示,在这次美国大选中,加密预测市场被证明比传统的民意测验更可靠.
1900/1/1 0:00:00FTX即将发布锚定美股知名股票的代币,吸引了一大波流量。而就在不久前,DeFi领域巨头YFI从43966美元的最高点下跌到16000美元左右,回撤达到了惊人的64%.
1900/1/1 0:00:00据Decrypt11月4日报道,随着DeFi的兴起,不负责托管用户资产的交易工具受到越来越多的追捧,FTX创始人SamBankman-Fried的一项新投资可能会对此类平台起到很大的推动作用.
1900/1/1 0:00:0010月15日,Filecoin主网上线,其代币FIL价格从230刀暴跌至今天的23刀左右。与此同时,中国矿工对Filecoin经济模型中质押挖矿的设计表示不满,社区分裂的趋势显露无疑,一批Fil.
1900/1/1 0:00:00来源:每日经济新闻每经编辑周宇翔赵云????个人遭遇电信屡见不鲜,不过,这次碰上电信的是一家A股上市公司——还是曾涉足区块链的.
1900/1/1 0:00:00编译??▏Damo?索隆在投资一个项目时,索隆会着重看项目的项目代币分配比例。在社区参与者、基金会、开发团队、投资人等利益相关者中,代币分配是否足够高效与合理.
1900/1/1 0:00:00