本文来自波卡百科(Polkadot Wiki),更新于 2020 年 3 月 5 日。
本文是这篇文章的最新版本:为 Polkadot 做好准备你所需要的一切。
Polkadot 是一个区块链协议,它有两个目标:为所有接入的平行链提供共享安全性,并允许所有接入的链使用 XCMP 进行互操作。随着 Parity 的 Substrate 和 Cumulus 等 PDK 的出现,开发和启动新链所需的时间大大减少。以前开发一条链需要几年的时间,现在可能只需要几周甚至几天。
这份指南将带你了解想要使用 Polkadot 创建你的愿景,你现在能做的事儿。我们将解释平行链和智能合约之间的区别(以及为什么其中一个可能比另一个更适合你的应用程序)。还将列出现在可用的资源和即将发布的资源,以便你可以开始创建应用程序,并为参与今年晚些时候的 Polkadot 主网发布做准备。
Polkadot 上线:2020 年初
金丝雀测试网已上线:Kusama
目前的测试网:Westend
Substrate: 2.0.0 版本
Cumulus:开发中,Demo 见 https://github.com/paritytech/cumulus
ink!:开发中,文档见 https://substrate.dev/substrate-contracts-workshop/
Polkadot 目前正处在 v0.7 版本,它有一个名为 Westend 的测试网和一个名为 Kusama 的有价值的金丝雀网络。Polkadot 拥有从 Rust 到 JavaScript 的各种编程语言实现 。目前主要使用 Rust 基于 Substrate 框架开发。Substrate 是一个库,开发者可以通过将网络协议、共识和 Wasm 解释器组合在一起,轻松开发出整个区块链应用程序。Cumulus 是对 Substrate 的延伸,它允许任何用 Substrate 开发的链连接到 Polkadot 并成为平行链。Substrate 目前快要发布官方 2.0.0 版本,将巩固其 API。
Polkadot 并不原生支持智能合约,但是会有平行链去支持。Substrate 链可以使用为 Wasm 合约准备的 Contracts pallet ,或使用 FRAME 中的 EVM pallet 来增加智能合约功能。合约模块可以使链能够使用 Wasm 编译的合约,这些合约可以由用户无许可地进行部署,或者取决于该区块链的特定规则。为了促进 Wasm 智能合约的发展,Parity 也在开发 ink!,一门用 Rust 编写,用于编写智能合约的特定领域语言。
Three Arrows Capital成为波场联合储备的第八位成员和白名单机构:据官方消息,Three Arrows Capital正式成为TRON DAO Reserve的第八位成员和白名单机构。
三箭资本(Three Arrows Capital)是一家加密对冲基金管理公司,成立于 2012 年,专注于提供卓越的风险调整回报,由zhu su和Kyle Davies创立。
波场联合储备(TRON DAO Reserve)由波场网络牵头成立,主要目的为保护区块链行业与市场,缓解极端与长期下行行情,解决金融危机来所带来的恐慌性问题。同时,波场联合储备也将作为初期托管人来维护波场去中心化稳定币 Decentralized USD (USDD) 的权限管理并以其储备金融资产担保,保证 USDD 汇率稳定。[2022/5/31 3:52:33]
Polkadot 计划在 2020 年初发布一个初始版本,这取决于安全审计和我们团队控制之外的上线规定。现在,既然这些工具已经开始出现并逐渐稳定下来,没有比现在更好的时机了,去投身其中并为上线做好准备吧。但是等等!在你一头栽进代码中之前,你应该考虑一下,你想要创建的去中心化应用程序的类型,并理解那些希望在 Polkadot 上开发的开发者可以使用的不同范例。
Polkadot 为你提供了几种部署应用程序的方法:作为现有平行链上的智能合约、成为平行链或者平行线程。在使用每一种方法时都会有一些取舍,阅读本节将有助于你理解它们。
平行链是包含它们自己 runtime 逻辑的单独的链,并受益于 Polkadot 中继链提供的共享安全性和跨链消息传递。平行链有高度的灵活性和可定制性,但需要更多的成本来创建和维护。
平行线程类似于平行链,使开发者能够对其应用程序的逻辑进行较低级别的掌控。两者的主要区别在于经济成本,因为平行线程的安全成本要比平行链低得多。平行线程的成本较低是因为平行线程只在需要时生成一个块,而平行链则必须保证有一个插槽来在中继链的每个区块上都出块。在创建一条平行线程时,你将使用跟平行链相同的工具(如 PDKs ),你将得到创建一条平行链的所有好处,而没有成本的缺点。
在 Polkadot 主网上,将由平行链充当智能合约平台。智能合约是只存在于一条链上的可执行程序,其复杂度有限。因为它们存在于一条链上,所以它们可以与同一链上的其他智能合约具有平滑的互操作性。然而,它们总是受到主链固有特性的制约和限制。
如果需要对应用程序的设计和功能进行大量控制,那么平行链是更好的选择。 请记住,智能合约可以作为一个试验场所,然后再转变到功能成熟的平行链。智能合约平台通常会有更方便的工具,如 IDEs,以促进快速迭代。可以创建一个智能合约 MVP(最小可行性产品) 来衡量用户的兴趣,然后再投入到平行链的构建中。
YFX成为波场TRON世纪挖矿入选项目:据最新消息,YFX (Your Future Exchange) 成为波场TRON世纪挖矿入选项目。波场TRON创始人孙宇晨将提供包含:TRX、BTT、JST、SUN、WIN在内的五币礼包补贴。届时参与波场TRON世纪挖矿即可获得 TRX、SUN、BTT、JST、WIN、YFX六种代币奖励。
YFX是一个基于 ETH (layer2)、BSC、Heco、Tron、OKExChain、Polkadot 的跨链去中心化永续合约交易平台,提供 BTC、ETH 等资产永续合约交易服务。 YFX创新使用高流动性、低滑点的 QIC-AMM 做市商池交易机制,为用户提供了流畅、安全的交易体验。YFX支持 Layer2 的永续合约交易服务,它融合了永续合约交易员期望的 Cefi 式杠杆以及 Defi 系统的 AMM 的流动性和简便性,未来将成为 Defi 领域基础性的金融设施。[2021/5/27 22:49:24]
在从头构建货币体系和链的其他方面上,平行链给予了创造者更多空间。它可以比智能合约平台更简洁高效地执行复杂逻辑。平行链在治理上也提供了更大的灵活性,并且跟现有的硬分叉方式相比,平行链进行完全升级的争议更少。
平行链或平行线程上可以具有的一些功能示例:
自定义费用结构(例如,为交易支付固定费用或按字节付费)
自定义原生代币和经济模型的货币政策
在状态转换时财政库会获得资金
一种管理 DAO 的治理机制,可以负责分配链上资金
平行链提供了构建复杂 runtime 逻辑的可能性,而使用智能合约执行复杂 runtime 逻辑成本太高。然而,与智能合约不同,平行链完全缺乏强制性的 gas 计费系统,可能容易受到导致无限循环的漏洞(智能合约中的设计阻止了这种漏洞)。
你还可以决定使用平行链、平行线程和智能合约的组合。如果你有某些需要循环的逻辑,并且无法将其移除,可以使用本地平行链 runtime 来处理所有复杂逻辑,并使用智能合约来调用迭代。如果你需要来自 oracle 的链下数据,则可能需要使用一个平行线程作为 oracle 喂价,每 24 小时触发一次(如果该数据对 Polkadot 生态系统中的其他参与者也有用,则这是最有意义的)。
很可能你已经意识到你的应用程序更适合其中哪个(或两者的混合),但如果你需要一个快速摘要来消化信息,可以使用下面这个对比表:
注意:上图不包括平行线程,但是正如我们前面提到的,平行链的所有优点同样适用于平行线程。不过平行线程的部署和维护成本更低。所以,如果平行链在上表中占了一列,那会跟平行链的那一列很像,只不过其中的 “易部署性” 和 “维护开销” 更改为 +。
Biconomy与Moonbeam Network集成,为波卡用户提供Web3.0用户体验:官方消息,区块链基础设施服务提供商Biconomy宣布,与以太坊兼容的智能合约平台Moonbeam Network集成,现在DApps可以在Moonbeam上集成Biconomy,为Polkadot用户提供卓越直观的Web3.0用户体验。[2021/4/9 20:02:06]
本指南现在分为两个部分,具体取决于你是决定使用智能合约还是平行链来构建应用程序。请随意阅读这两个部分,或者只阅读适合你的部分。
我想建立一条平行链或平行线程
我想建立一个智能合约
现在你已经确定构建平行链或平行线程是适合你新项目的方法,下一步是决定使用哪个框架。用于构建平行链或平行线程的框架称为平行链开发工具包(PDKs:parachain development kits)。目前,仅有的可用 PDK 是来自 Parity 的 Substrate 和 Cumulus。
将来,会有许多不同的编程语言的 PDK,就像 Polkadot 主网有多种实现一样。
看这里:你想从头开始构建平行链开发工具包吗?Web3 基金会将向进行此项工作的团队提供资助,想了解更多信息和申请请访问 W3F grant 页面。
Substrate 是构建 Polkadot 的底层框架。它是区块链创新者的工具集,为构建链提供了必要的开发工具。它包括一个模块化的插件库,你可以从中组合你的链逻辑,也可以编写自己的模块来使用或发布到社区。
开始使用 Substrate 的最佳途径是探索 Substrate 开发者中心 ,这是一个由 Parity 构建和维护的在线资源。
我们建议你在里面多看看,熟悉常见的模式。一旦你有了很好的理解,你可以从 Substratekitties workshop 开始挑战自己,然后再进阶到 TCR Dappchain 教程或其他教程。
在用 Substrate 创建你的链逻辑之后,你将能够将其编译成 Wasm 可执行文件。这个 Wasm 代码 blob 将包含链的整个状态转换函数,这是将项目部署到 Polkadot 的平行链或平行线程所需的。
Polkadot 上的验证人将使用提交的 Wasm 代码来验证链或线程的状态转换,但这样做需要一些额外的基础设施。验证人需要某种方法来保持最新状态转换,因为 Polkadot 节点不一定也是你的链的节点。
这就是收集人节点发挥作用的地方。收集人是平行链的维护者,它在为链生成新的候选区块并将它们传递给 Polkadot 验证人来纳入中继链的过程中扮演着重要角色。
Dean:成为波卡的平行链存在巨大的潜力:8月26日消息,Crust network CPO Dean在做客HyperPay焦点栏目时提及:成为波卡的平行链,除了Gas费用和TPS问题之外,还有另外几点好处:基于substrate的框架,可以打破现有EVM技术框架的限制,更好的进行功能拓展和延伸;波卡还有一大亮点,就是Substrate的链上治理和无分叉升级。这就让协议的治理和升级变得异常简单,实实在在的解决了协议治理难和升级难的痛点。因此在波卡生态内开发项目有着巨大的潜力。在这样的背景下,波卡上的DeFi,不仅可以让金融服务于金融,还可以让金融服务于实业。[2020/8/26]
Substrate 带有自己的内置网络层,但遗憾的是它只支持独立链(即不连接到中继链的链)。然而,确实有 Cumulus 扩展包含了一个收集人节点,并允许你的底层构建逻辑与 Polkadot 兼容,不论是平行链还是平行线程。
Cumulus 的目标是扩展 Substrate,使任何 Substrate runtime 都与 Polkadot 兼容。
它处理网络兼容性开销问题,任何平行链都需要实现这一点才能连接到 Polkadot。包括:
开箱即用的收集人节点设置
中继链的嵌入式轻客户端
波卡区块创建者兼容性
集成 Cumulus 与 Substrate 链,使其成为一个平行链,能够在最小修改的情况下在 Polkadot 上运行,可能只需导入一个 crate 再敲一行代码即可。
波卡的联合创始人 Rob Habermeier 去年在 EthCC 做了一次 Cumulus 的演讲,你可以在这里观看。
为了将平行链连接到 Polkadot 网络,你需要获取平行链卡槽。
平行链卡槽将在公开拍卖中出售,拍卖机制可以在 wiki 的平行链拍卖页面上找到。
平行线程不需要平行链卡槽,因此你不需要参与蜡烛拍卖机制。不过,你可以向中继链提交平行线程代码,并开始参与每个块的拍卖,以便将状态转换提交到中继链中。
有关平行线程每个区块拍卖是如何工作的更多信息,请参阅更详细的平行线程页面。
Polkadot 中继链本身不支持智能合约。但是,由于连接到 Polkadot 的平行链可以支持任意状态转换,因此它们可以支持智能合约。智能合约的开发者可以在这些功能完善的时候使用它们。现在可以使用本地开发链开始开发,然后在技术成熟时部署到真实环境中。
Substrate 支持两种开箱即用的智能合约的方式。一种方法是使用框架库中提供的合约模块。第二种方法是使用 Substrate EVM 模块来部署基于 EVM 的字节码,该字节码由 Solidity 或 Vyper 编译,并使用 Ethereum 堆栈中提供的工具。
Dillon Chen:Edgeware可能成为波卡网络第一个智能合约平台:BiKi交易平台与Polkadot(波卡)生态联合举办的主题为“探究Polkadot生态的奥秘”AMA于2020年3月20日20点举行,参与此次AMA的分别为波卡生态内五个项目,分别为Edgeware、Phala Network、LamianrChain、ChainX、Darwinia。
Edgeware联合创始人及CEO Dillon Chen在此次AMA中表示:Edgeware很可能会成为波卡网络上第一个智能合约平台,我们的竞争优势在于波卡区块链互操作性、安全性、以及我们的WASM合约运行。[2020/3/20]
对于以前编写过智能合约的开发者来说,部署到基于 EVM 的链的操作可能更为熟悉。然而,合约模块对 EVM 的设计做出了一些显著的改进。包括:
Wasm。合约模块盘使用 WebAssembly 作为其编译目标。任何编译成 Wasm 的语言都有可能用于编写智能合约。虽然有一门专门的特定领域语言会更好,所以 Parity 提供了 ink! 语言。
租金。合约必须支付租金,否则必须缴纳足够多的保证金,以证明其存在于链上。当一个合约不支持这一点时,它可能会创建一个所谓的 tombstone,作为合约的参考。在某些情况下,如果合约不符合这些要求,将随其储存一起被彻底删除。
缓存。默认情况下,合约是缓存的,因此意味着它们只需要部署一次,之后,可以根据需要再进行多次具体化。这有助于将链上的存储负载降至最低。除此之外,当合约不再被使用并且已有的存款被耗尽时,代码将从存储中删除(称为回收)。
你可能需要设置一个本地测试环境开始编写智能合约。这可以使用 Substrate 节点来完成,它包含两个智能合约模块中的一个。开发完成后,你可以查看 Edgware 等项目,以便将智能合约部署到真实环境中。
目前带有智能合约模块的一个项目是 Edgeware。Edgeware 是一个无许可的智能合约平台,正在进行链上治理的实验。对于已经创建了智能合约并希望部署到真实环境中的开发者来说,这是目前最好的选择。
Edgeware 计划在合适的时间连接到 Polkadot,并作为一条智能合约平行链。此时,智能合约将能够通过 XCMP 与 Polkadot 生态系统的其他部分交互。
可在此处找到 Edgeware 文档。
ink! 是一种特定领域语言,用于使用 Rust 编写智能合约并编译成 Wasm 代码。正如它在自述中所说,它仍然处于实验阶段,因此勇敢的开发者应该意识到,他们的开发过程可能会比较坎坷,但也能走得通。有些项目是用 ink! 开发的,并且有相当程度的复杂性,比如 Plasm 的 Plasma 合约,所以它其实已经足够成熟,可以开始创建一些有趣的东西了。
对于感兴趣的开发者,他们可以通过研究一些已经写好的案例来开始使用 ink! 编写智能合约。这些可以作为编写更复杂的逻辑的指南,这些逻辑可以部署在智能合约平行链上。
ink! 已经为一个基于 Wasm 虚拟机并与 Substrate 链兼容的新智能合约栈奠定了基础。
智能合约仅仅是存在于一个链上地址的代码,并且可以由外部参与者调用。关键的一点是,在任何人开始执行代码之前,你必须将代码放到链上!
在链上部署智能合约,会因你使用的特定平行链而略有不同,但通常你会发送一笔特殊交易,该交易将在分类账上创建智能合约。你可能需要为初始化逻辑和合约使用的任何存储支付相关费用。
每个平台都有不同的方式来支付和维护智能合约的状态。
你可能看到的一些支付智能合约的不同模式包括:
与部署每个交易相关的交易费。
定期支付链使用费来使用平台的订阅模式。
Acess token 模式,需要持有一定数量的原生代币来使用平台(EOS 有类似的模式)。存储租用。
免费试用或开发者推广。
大多数智能合约平台使用某种形式的 gas 费来限制用户可执行的操作数量。要求用户预先支付 gas 费用,没有使用的会被退还。
你需要考虑智能合约的存储和复杂性,以确保 gas 的使用保持在合理的范围内。无论你使用哪种智能合约平台,存储都可能很昂贵,因此有必要尽可能多地将数据进行链下存储。你可以考虑使用 IPFS 或 Storj来保存数据,而只将内容地址提交上链。
Polkadot 上的智能合约还处于极早期,目前开发才逐渐趋于稳定。我们正在积极生产相关内容,以帮助开发者加快速度,并将在 wiki 上更新的资源。同时,你还可以关注以下链接来获取最新进展:
Edgeware:https://edgewa.re/
ink!:https://github.com/paritytech/ink(留意 wiki 上的内容)
Substrate 合约模块:https://github.com/paritytech/substrate/tree/master/frame/contracts
本指南为你提供了一个心理模型,并展示了必要的资源,以帮助你开始构建平行链或智能合约。尽管工具还处于完善阶段,但提前做了解的好处是可以熟悉并提前开始你的项目,让你能够创建真正创新的东西。
如果你对 Polkadot 上的平行链或智能合约有一些有趣的想法,请随时在 Polkadot Riot 聊天室中讨论。感兴趣的开发者可以加入 Polkadot Beginners Lounge 或者 Substrate Technical,来进行提问。一如既往,大家可以通过媒体渠道与波卡保持联系。
祝你好运!
原文:https://wiki.polkadot.network/docs/en/build-build-with-polkadot
翻译:PolkaWorld 社区
为 Polkadot 做好准备你所需要的一切: https://medium.com/polkadot-network/everything-you-need-to-know-to-prepare-for-polkadot-32d08b929735
PDK: https://wiki.polkadot.network/docs/en/build-pdkhttps://github.com/paritytech/cumulus: https://github.com/paritytech/cumulushttps://substrate.dev/substrate-contracts-workshop/: https://substrate.dev/substrate-contracts-workshop/各种编程语言实现: https://wiki.polkadot.network/docs/en/learn-implementationsContracts: https://github.com/paritytech/substrate/tree/master/frame/contractsEVM: https://github.com/paritytech/substrate/tree/master/frame/evmink!: https://github.com/paritytech/ink实现: https://wiki.polkadot.network/docs/en/learn-implementationsW3F grant: https://grants.web3.foundation/Substrate 开发者中心: https://substrate.dev/Cumulus: https://wiki.polkadot.network/docs/en/build-cumulus这里: https://www.youtube.com/watch?v=thgtXq5YMOo平行链拍卖: https://wiki.polkadot.network/docs/en/learn-auction平行线程: https://wiki.polkadot.network/docs/en/learn-parathreadshttps://github.com/paritytech/substrate/tree/master/frame/contracts: https://github.com/paritytech/substrate/tree/master/frame/contractshttps://github.com/paritytech/substrate/tree/master/frame/evm: https://github.com/paritytech/substrate/tree/master/frame/evmink!: https://wiki.polkadot.network/docs/en/build-build-with-polkadot#inkEdgeware: https://edgewa.re/XCMP: https://wiki.polkadot.network/docs/en/learn-crosschainhttps://docs.edgewa.re/: https://docs.edgewa.re/ink!: https://github.com/paritytech/inkPlasma 合约: https://github.com/staketechnologies/Plasm案例: https://github.com/paritytech/ink/tree/master/examplesIPFS: https://ipfs.io/Storj: https://storj.io/https://edgewa.re/: https://edgewa.re/https://github.com/paritytech/ink: https://github.com/paritytech/inkhttps://github.com/paritytech/substrate/tree/master/frame/contracts: https://github.com/paritytech/substrate/tree/master/frame/contractsRiot 聊天室: https://riot.im/app/#/room/#polkadot-watercooler:matrix.orgPolkadot Beginners Lounge: https://riot.im/app/#/room/#polkadotnoobs:matrix.orgSubstrate Technica: https://riot.im/app/#/room/#substrate-technical:matrix.org媒体渠道: https://wiki.polkadot.network/docs/en/communityhttps://wiki.polkadot.network/docs/en/build-build-with-polkadot: https://wiki.polkadot.network/docs/en/build-build-with-polkadot
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。