波卡上线你需要知道什么?

为波卡上线做好准备 你需要了解这些

本文来自波卡百科(Polkadot Wiki),更新于 2020 年 3 月 5 日。

本文是这篇文章的最新版本:为 Polkadot 做好准备你所需要的一切。

Polkadot 是一个区块链协议,它有两个目标:为所有接入的平行链提供共享安全性,并允许所有接入的链使用 XCMP 进行互操作。随着 Parity 的 Substrate 和 Cumulus 等 PDK[2] 的出现,开发和启动新链所需的时间大大减少。以前开发一条链需要几年的时间,现在可能只需要几周甚至几天。

这份指南将带你了解想要使用 Polkadot 创建你的愿景,你现在能做的事儿。我们将解释平行链和智能合约之间的区别(以及为什么其中一个可能比另一个更适合你的应用程序)。还将列出现在可用的资源和即将发布的资源,以便你可以开始创建应用程序,并为参与今年晚些时候的 Polkadot 主网发布做准备。


我们目前在什么阶段

  • Polkadot 上线:2020 年初

  • 金丝雀测试网已上线:Kusama

  • 目前的测试网:Westend

  • Substrate: 2.0.0 版本

  • Cumulus:开发中,Demo 见 https://github.com/paritytech/cumulus[3]

  • ink!:开发中,文档见 https://substrate.dev/substrate-contracts-workshop/[4]

你需要知道什么

Polkadot 目前正处在 v0.7 版本,它有一个名为 Westend 的测试网和一个名为 Kusama 的有价值的金丝雀网络。Polkadot 拥有从 Rust 到 JavaScript 的各种编程语言实现[5] 。目前主要使用 Rust 基于 Substrate 框架开发。Substrate 是一个库,开发者可以通过将网络协议、共识和 Wasm 解释器组合在一起,轻松开发出整个区块链应用程序。Cumulus 是对 Substrate 的延伸,它允许任何用 Substrate 开发的链连接到 Polkadot 并成为平行链。Substrate 目前快要发布官方 2.0.0 版本,将巩固其 API。

Polkadot 并不原生支持智能合约,但是会有平行链去支持。Substrate 链可以使用为 Wasm 合约准备的 Contracts[6] pallet ,或使用 FRAME 中的 EVM[7] pallet 来增加智能合约功能。合约模块可以使链能够使用 Wasm 编译的合约,这些合约可以由用户无许可地进行部署,或者取决于该区块链的特定规则。为了促进 Wasm 智能合约的发展,Parity 也在开发  ink![8],一门用 Rust 编写,用于编写智能合约的特定领域语言。

Polkadot 计划在 2020 年初发布一个初始版本,这取决于安全审计和我们团队控制之外的上线规定。现在,既然这些工具已经开始出现并逐渐稳定下来,没有比现在更好的时机了,去投身其中并为上线做好准备吧。但是等等!在你一头栽进代码中之前,你应该考虑一下,你想要创建的去中心化应用程序的类型,并理解那些希望在 Polkadot 上开发的开发者可以使用的不同范例。

创建平行链、平行线程、智能合约有什么区别

Polkadot 为你提供了几种部署应用程序的方法:作为现有平行链上的智能合约、成为平行链或者平行线程。在使用每一种方法时都会有一些取舍,阅读本节将有助于你理解它们。

平行链是包含它们自己 runtime 逻辑的单独的链,并受益于 Polkadot 中继链提供的共享安全性和跨链消息传递。平行链有高度的灵活性和可定制性,但需要更多的成本来创建和维护。

平行线程类似于平行链,使开发者能够对其应用程序的逻辑进行较低级别的掌控。两者的主要区别在于经济成本,因为平行线程的安全成本要比平行链低得多。平行线程的成本较低是因为平行线程只在需要时生成一个块,而平行链则必须保证有一个插槽来在中继链的每个区块上都出块。在创建一条平行线程时,你将使用跟平行链相同的工具(如 PDKs ),你将得到创建一条平行链的所有好处,而没有成本的缺点。

在 Polkadot 主网上,将由平行链充当智能合约平台。智能合约是只存在于一条链上的可执行程序,其复杂度有限。因为它们存在于一条链上,所以它们可以与同一链上的其他智能合约具有平滑的互操作性。然而,它们总是受到主链固有特性的制约和限制。

如果需要对应用程序的设计和功能进行大量控制,那么平行链是更好的选择。 请记住,智能合约可以作为一个试验场所,然后再转变到功能成熟的平行链。智能合约平台通常会有更方便的工具,如 IDEs,以促进快速迭代。可以创建一个智能合约 MVP(最小可行性产品) 来衡量用户的兴趣,然后再投入到平行链的构建中。

在从头构建货币体系和链的其他方面上,平行链给予了创造者更多空间。它可以比智能合约平台更简洁高效地执行复杂逻辑。平行链在治理上也提供了更大的灵活性,并且跟现有的硬分叉方式相比,平行链进行完全升级的争议更少。

平行链或平行线程上可以具有的一些功能示例:

  • 自定义费用结构(例如,为交易支付固定费用或按字节付费)

  • 自定义原生代币和经济模型的货币政策

  • 在状态转换时财政库会获得资金

  • 一种管理 DAO 的治理机制,可以负责分配链上资金

平行链提供了构建复杂 runtime 逻辑的可能性,而使用智能合约执行复杂 runtime 逻辑成本太高。然而,与智能合约不同,平行链完全缺乏强制性的 gas 计费系统,可能容易受到导致无限循环的漏洞(智能合约中的设计阻止了这种漏洞)。

你还可以决定使用平行链、平行线程和智能合约的组合。如果你有某些需要循环的逻辑,并且无法将其移除,可以使用本地平行链 runtime 来处理所有复杂逻辑,并使用智能合约来调用迭代。如果你需要来自 oracle 的链下数据,则可能需要使用一个平行线程作为 oracle 喂价,每 24 小时触发一次(如果该数据对 Polkadot 生态系统中的其他参与者也有用,则这是最有意义的)。

很可能你已经意识到你的应用程序更适合其中哪个(或两者的混合),但如果你需要一个快速摘要来消化信息,可以使用下面这个对比表:

注意:上图不包括平行线程,但是正如我们前面提到的,平行链的所有优点同样适用于平行线程。不过平行线程的部署和维护成本更低。所以,如果平行链在上表中占了一列,那会跟平行链的那一列很像,只不过其中的 “易部署性” 和 “维护开销” 更改为 +。

本指南现在分为两个部分,具体取决于你是决定使用智能合约还是平行链来构建应用程序。请随意阅读这两个部分,或者只阅读适合你的部分。

  • 我想建立一条平行链或平行线程

  • 我想建立一个智能合约

如果你想创建一条平行链或者平行线程

现在你已经确定构建平行链或平行线程是适合你新项目的方法,下一步是决定使用哪个框架。用于构建平行链或平行线程的框架称为平行链开发工具包(PDKs:parachain development kits)。目前,仅有的可用 PDK 是来自 Parity 的 Substrate 和 Cumulus。

将来,会有许多不同的编程语言的 PDK,就像 Polkadot 主网有多种实现[9]一样。

看这里:你想从头开始构建平行链开发工具包吗?Web3 基金会将向进行此项工作的团队提供资助,想了解更多信息和申请请访问 W3F grant[10] 页面。

开启 Substrate 之旅

Substrate 是构建 Polkadot 的底层框架。它是区块链创新者的工具集,为构建链提供了必要的开发工具。它包括一个模块化的插件库,你可以从中组合你的链逻辑,也可以编写自己的模块来使用或发布到社区。

开始使用 Substrate 的最佳途径是探索 Substrate 开发者中心[11] ,这是一个由 Parity 构建和维护的在线资源。

我们建议你在里面多看看,熟悉常见的模式。一旦你有了很好的理解,你可以从 Substratekitties workshop 开始挑战自己,然后再进阶到 TCR Dappchain 教程或其他教程。

如何创建你的平行链

在用 Substrate 创建你的链逻辑之后,你将能够将其编译成 Wasm 可执行文件。这个 Wasm 代码 blob 将包含链的整个状态转换函数,这是将项目部署到 Polkadot 的平行链或平行线程所需的。

Polkadot 上的验证人将使用提交的 Wasm 代码来验证链或线程的状态转换,但这样做需要一些额外的基础设施。验证人需要某种方法来保持最新状态转换,因为 Polkadot 节点不一定也是你的链的节点。

这就是收集人节点发挥作用的地方。收集人是平行链的维护者,它在为链生成新的候选区块并将它们传递给 Polkadot 验证人来纳入中继链的过程中扮演着重要角色。

Substrate 带有自己的内置网络层,但遗憾的是它只支持独立链(即不连接到中继链的链)。然而,确实有 Cumulus 扩展包含了一个收集人节点,并允许你的底层构建逻辑与 Polkadot 兼容,不论是平行链还是平行线程。

Cumulus

Cumulus[12] 的目标是扩展 Substrate,使任何 Substrate runtime 都与 Polkadot 兼容。

它处理网络兼容性开销问题,任何平行链都需要实现这一点才能连接到 Polkadot。包括:

  • 跨链消息传递

  • 开箱即用的收集人节点设置

  • 中继链的嵌入式轻客户端

  • 波卡区块创建者兼容性

  • 集成 Cumulus 与 Substrate 链,使其成为一个平行链,能够在最小修改的情况下在 Polkadot 上运行,可能只需导入一个 crate 再敲一行代码即可。

波卡的联合创始人 Rob Habermeier 去年在 EthCC 做了一次 Cumulus 的演讲,你可以在这里[13]观看。

如何在波卡上部署你的平行链或平行线程

平行链

为了将平行链连接到 Polkadot 网络,你需要获取平行链卡槽。

平行链卡槽将在公开拍卖中出售,拍卖机制可以在 wiki 的平行链拍卖[14]页面上找到。

平行线程

平行线程不需要平行链卡槽,因此你不需要参与蜡烛拍卖机制。不过,你可以向中继链提交平行线程代码,并开始参与每个块的拍卖,以便将状态转换提交到中继链中。

有关平行线程每个区块拍卖是如何工作的更多信息,请参阅更详细的平行线程[15]页面。

如果你想创建一个智能合约...

Polkadot 中继链本身不支持智能合约。但是,由于连接到 Polkadot 的平行链可以支持任意状态转换,因此它们可以支持智能合约。智能合约的开发者可以在这些功能完善的时候使用它们。现在可以使用本地开发链开始开发,然后在技术成熟时部署到真实环境中。

Substrate 支持两种开箱即用的智能合约的方式。一种方法是使用框架库中提供的合约模块[16]。第二种方法是使用 Substrate EVM 模块[17]来部署基于 EVM 的字节码,该字节码由 Solidity 或 Vyper 编译,并使用 Ethereum 堆栈中提供的工具。

对于以前编写过智能合约的开发者来说,部署到基于 EVM 的链的操作可能更为熟悉。然而,合约模块对 EVM 的设计做出了一些显著的改进。包括:

Wasm。合约模块盘使用 WebAssembly 作为其编译目标。任何编译成 Wasm 的语言都有可能用于编写智能合约。虽然有一门专门的特定领域语言会更好,所以 Parity 提供了 ink![18] 语言。

租金。合约必须支付租金,否则必须缴纳足够多的保证金,以证明其存在于链上。当一个合约不支持这一点时,它可能会创建一个所谓的 tombstone,作为合约的参考。在某些情况下,如果合约不符合这些要求,将随其储存一起被彻底删除。

缓存。默认情况下,合约是缓存的,因此意味着它们只需要部署一次,之后,可以根据需要再进行多次具体化。这有助于将链上的存储负载降至最低。除此之外,当合约不再被使用并且已有的存款被耗尽时,代码将从存储中删除(称为回收)。

你可能需要设置一个本地测试环境开始编写智能合约。这可以使用 Substrate 节点来完成,它包含两个智能合约模块中的一个。开发完成后,你可以查看 Edgware 等项目,以便将智能合约部署到真实环境中。

Edgeware

目前带有智能合约模块的一个项目是 Edgeware[19]。Edgeware 是一个无许可的智能合约平台,正在进行链上治理的实验。对于已经创建了智能合约并希望部署到真实环境中的开发者来说,这是目前最好的选择。

Edgeware 计划在合适的时间连接到 Polkadot,并作为一条智能合约平行链。此时,智能合约将能够通过 XCMP[20]  与 Polkadot 生态系统的其他部分交互。

可在此处[21]找到 Edgeware 文档。

Ink

ink![22] 是一种特定领域语言,用于使用 Rust 编写智能合约并编译成 Wasm 代码。正如它在自述中所说,它仍然处于实验阶段,因此勇敢的开发者应该意识到,他们的开发过程可能会比较坎坷,但也能走得通。有些项目是用 ink! 开发的,并且有相当程度的复杂性,比如 Plasm 的 Plasma 合约[23],所以它其实已经足够成熟,可以开始创建一些有趣的东西了。

对于感兴趣的开发者,他们可以通过研究一些已经写好的案例[24]来开始使用 ink! 编写智能合约。这些可以作为编写更复杂的逻辑的指南,这些逻辑可以部署在智能合约平行链上。

ink! 已经为一个基于 Wasm 虚拟机并与 Substrate 链兼容的新智能合约栈奠定了基础。

部署你的智能合约

智能合约仅仅是存在于一个链上地址的代码,并且可以由外部参与者调用。关键的一点是,在任何人开始执行代码之前,你必须将代码放到链上!

在链上部署智能合约,会因你使用的特定平行链而略有不同,但通常你会发送一笔特殊交易,该交易将在分类账上创建智能合约。你可能需要为初始化逻辑和合约使用的任何存储支付相关费用。

为你的智能合约付费

每个平台都有不同的方式来支付和维护智能合约的状态。

你可能看到的一些支付智能合约的不同模式包括:

与部署每个交易相关的交易费。

定期支付链使用费来使用平台的订阅模式。

Acess token 模式,需要持有一定数量的原生代币来使用平台(EOS 有类似的模式)。存储租用。

免费试用或开发者推广。

大多数智能合约平台使用某种形式的 gas 费来限制用户可执行的操作数量。要求用户预先支付 gas 费用,没有使用的会被退还。

你需要考虑智能合约的存储和复杂性,以确保 gas 的使用保持在合理的范围内。无论你使用哪种智能合约平台,存储都可能很昂贵,因此有必要尽可能多地将数据进行链下存储。你可以考虑使用 IPFS[25] 或 Storj[26]来保存数据,而只将内容地址提交上链。

它还处于很早期...

Polkadot 上的智能合约还处于极早期,目前开发才逐渐趋于稳定。我们正在积极生产相关内容,以帮助开发者加快速度,并将在 wiki 上更新的资源。同时,你还可以关注以下链接来获取最新进展:

  • Edgeware:https://edgewa.re/[27]

  • ink!:https://github.com/paritytech/ink[28](留意 wiki 上的内容)

  • Substrate 合约模块:https://github.com/paritytech/substrate/tree/master/frame/contracts[29]

总结

本指南为你提供了一个心理模型,并展示了必要的资源,以帮助你开始构建平行链或智能合约。尽管工具还处于完善阶段,但提前做了解的好处是可以熟悉并提前开始你的项目,让你能够创建真正创新的东西。

如果你对 Polkadot 上的平行链或智能合约有一些有趣的想法,请随时在 Polkadot Riot 聊天室[30]中讨论。感兴趣的开发者可以加入  Polkadot Beginners Lounge[31] 或者 Substrate Technical[32],来进行提问。一如既往,大家可以通过媒体渠道[33]与波卡保持联系。

祝你好运!

原文:https://wiki.polkadot.network/docs/en/build-build-with-polkadot[34]

翻译:PolkaWorld 社区

参考资料

[1]为 Polkadot 做好准备你所需要的一切: https://medium.com/polkadot-network/everything-you-need-to-know-to-prepare-for-polkadot-32d08b929735

[2]PDK: https://wiki.polkadot.network/docs/en/build-pdk
[3]https://github.com/paritytech/cumulus: https://github.com/paritytech/cumulus
[4]https://substrate.dev/substrate-contracts-workshop/: https://substrate.dev/substrate-contracts-workshop/
[5]各种编程语言实现: https://wiki.polkadot.network/docs/en/learn-implementations
[6]Contracts: https://github.com/paritytech/substrate/tree/master/frame/contracts
[7]EVM: https://github.com/paritytech/substrate/tree/master/frame/evm
[8]ink!: https://github.com/paritytech/ink
[9]实现: https://wiki.polkadot.network/docs/en/learn-implementations
[10]W3F grant: https://grants.web3.foundation/
[11]Substrate 开发者中心: https://substrate.dev/
[12]Cumulus: https://wiki.polkadot.network/docs/en/build-cumulus
[13]这里: https://www.youtube.com/watch?v=thgtXq5YMOo
[14]平行链拍卖: https://wiki.polkadot.network/docs/en/learn-auction
[15]平行线程: https://wiki.polkadot.network/docs/en/learn-parathreads
[16]https://github.com/paritytech/substrate/tree/master/frame/contracts: https://github.com/paritytech/substrate/tree/master/frame/contracts
[17]https://github.com/paritytech/substrate/tree/master/frame/evm: https://github.com/paritytech/substrate/tree/master/frame/evm
[18]ink!: https://wiki.polkadot.network/docs/en/build-build-with-polkadot#ink
[19]Edgeware: https://edgewa.re/
[20]XCMP: https://wiki.polkadot.network/docs/en/learn-crosschain
[21]https://docs.edgewa.re/: https://docs.edgewa.re/
[22]ink!: https://github.com/paritytech/ink
[23]Plasma 合约: https://github.com/staketechnologies/Plasm
[24]案例: https://github.com/paritytech/ink/tree/master/examples
[25]IPFS: https://ipfs.io/
[26]Storj: https://storj.io/
[27]https://edgewa.re/: https://edgewa.re/
[28]https://github.com/paritytech/ink: https://github.com/paritytech/ink
[29]https://github.com/paritytech/substrate/tree/master/frame/contracts: https://github.com/paritytech/substrate/tree/master/frame/contracts
[30]Riot 聊天室: https://riot.im/app/#/room/#polkadot-watercooler:matrix.org
[31]Polkadot Beginners Lounge: https://riot.im/app/#/room/#polkadotnoobs:matrix.org
[32]Substrate Technica: https://riot.im/app/#/room/#substrate-technical:matrix.org
[33]媒体渠道: https://wiki.polkadot.network/docs/en/community
[34]https://wiki.polkadot.network/docs/en/build-build-with-polkadot: https://wiki.polkadot.network/docs/en/build-build-with-polkadot

24小时热点

热点专题

NFT艺术品到底是什么?

Beeple,“EVERYDAYS: THE FIRST 5 ...

2320904

Opera House

了解CHIA这篇就够了

这些清单旨在作为信息来源和研究的出发点,为你的研究提供常识性 ...

636559

Kusama 测试网

什么是 Infura?

11 月 11 日,因以太坊和 IPFS 的 API 服务供 ...

626973

IDG资本

OpenSea 为例子教大家如何购买 NFT

就如同流动性挖矿刚起步时候一样,大多数用户并不了解 NFT ...

609663

CryptoSpells

绿地集团数字化战略的NFT形象——8302款无聊猿!

30年前,绿地还是一家注册资本2000万元的小型绿化公司,历 ...

493829

Bybit

什么是私钥?

私钥是怎么来的,它跟你的密码学货币资产有何关联。

486042

芝麻开门交易所

2024年模因币牛巿SHIB是否能达到1美元?市场另外3个meme币也在热卖

SHIB是仅次于DOGE的第二大流行模因币,它能否达到1美元 ...

476086

Business2Community

数字人直播软件多少钱

数字人直播软件根据您使用的平台、功能范围不同,价格也不尽相同 ...

459247

MXC交易所

被朋友骗去弄数字货币

  有一次,一个朋友突然给我说他有一种可以赚钱的新方法,他说 ...

449990

DigiFinex

链圈百科:环境影响评价信用平台

环境影响评价信用平台是指一种使用信用技术来评估环境影响并对社 ...

417532

Tokhun