构建属于你的区块链 —— Polkadot 开发者入门指南
构建属于你的区块链?Polkadot Builders入门秘籍!
Polkadot是一种区块链协议,它有两个目标:1)在所有互联的区块链之间提供共享的安全性,2)允许所有互联的区块链通过ICMP进行互操作。随着Parity Substrate和Cumulus等PDK的出现,开发和发布一条新链所花费的时间已经大幅减少。以往发布一条新链可能需要花费几年的时间,而现在可能只需几周甚至几天。
本指南将指导你如何在Polkadot上构建你的愿景,还将讲解平行链与智能合约之间的区别(以及为什么其中一个会更加适合你的应用程序)。Polkadot主网预计于今年年末发布,因此本指南还将列出现在可用以及即将推出的资源,以便你可以开始创建应用程序。
Polkadot的目前进展
- 主网初始发布时间:2019年底
- 目前的PoC版本:PoC-4
- 目前的测试网:Alexander
- Substrate:1.0.0-rc
- Cumulus:未完成
- ink!:Pre-Alpha
进展须知:Polkadot目前处于PoC-4阶段,测试网络Alexander在整个PoC-3发布周期中已运行了三个月以上。Polkadot是基于各种编程语言(从Rust到JavaScript)构建的。目前较为领先的实现是基于Rust构建并使用Substrate框架来开发区块链。Substrate是一个库,允许开发人员通过构建基础层(包括网络协议、共识及Wasm解释器)来轻松开发整个区块链。而Cumulus是正在开发中的Substrate扩展,它将允许任何基于Substrate构建的链连接到Polkadot并成为平行链。Substrate即将发布1.0.0版本,可解决其API问题。
通过包含SRML提供的合约runtime模块,Substrate链能够拥有智能合约。合约模块将允许在链上部署编译到Wasm的智能合约。为此,Parity一直在开发一种名为ink!的域特定语言。
Polkadot主网计划于2019年年底发布,具体时间要取决于项目的安全审计和发布条款。现在工具已准备就绪并状态稳定,是准备发布的最佳时机。但在开始写代码之前,思考想要开发的去中心化应用类型并了解有兴趣在Polkadot构建的开发人员可用的不同范式更为妥当。
平行链和智能合约有什么区别?
Polkadot提供了两种部署应用程序的方法:1)在现有平行链上构建智能合约,2)构建自己的平行链。任何一种方法都需要权衡比较,本章节将有助于你理解它们之间的区别。
平行链是包含其runtime逻辑的独立链,它们受益于Polkadot中继链提供的共享安全性和跨链消息传递。平行链提供了高度灵活性并可自定义,但也需要更多的时间来构建。
当Polkadot主网发布后,将会有一条或多条作为智能合约平台的平行链。智能合约是一种仅存在于单一链上且执行复杂性有限的程序。由于它们仅存在于单一链上,所以它们与同一链上的其他智能合约具有良好的互操作性。但它们将始终受到其主链的固有特性约束和限制。
如果你想自行决定应用程序的设计和功能,那么平行链就是更好的选择。请记住,智能合约可以先作为试验场,然后再把它变成功能齐全的平行链。智能合约平台通常会有更方便的工具,如IDE,以促进快速迭代。另外还可以先创建一个智能合约MVP来评估用户的兴趣,然后再全面构建一条平行链。
此外,平行链将给予开发者更多空间,允许他们从头开始构建链的货币体制。与智能合约平台相比,它们能够更简洁及高效地执行复杂逻辑。平行链还提供了更多的治理形式,并且能够以比当前硬分叉争议更小的方式进行升级。
以下是平行链的一些特征:
- 自定义费用结构(例如固定交易支付费用或按字节支付)
- 源生代币的自定义通胀政策
- 通过状态转变函数资助财库
- 管理并分配DAO的链上资金的治理机制
平行链为构建复杂runtime提供了可能性,因为这些runtime在智能合约上的执行成本太过昂贵。然而相比之下,平行链缺乏一个gas计量系统,并且可能容易受到无限循环的错误影响(而智能合约中有办法避免)。
不过你还可以将平行链和智能合约这两者相结合。如果有某些逻辑需要循环且无法删除,那么可以使用源生平行链runtime来处理所有复杂逻辑并调用智能合约以进行迭代。
现在你应该已经大致了解哪一种应用程序更适合你了(或两者结合),如果你需要快速回顾进行消化,可以看看以下的比较图表:
现在本指南将分为两部分,阅读哪个部分取决于你是要在智能合约还是平行链上构建应用程序。可阅读全部指南,也可只阅读你感兴趣的部分。
- 构建平行链
- 构建智能合约
构建平行链
既然已经决定要构建一条平行链,那么下一步就是决定使用哪个框架。但目前只有Substrate框架可开发平行链。
不过将来Polkadot runtime会有各种语言的实现(包括C ++,Rust,Go和JS)。
使用Substrate
如上所述,Polkadot是基于Substrate框架构建的。它是区块链创新者的工具,为构建区块链提供了必要的构建模块。它包含了模块化插件库,你可以从中构建更复杂的逻辑链。
要了解Substrate的最佳使用方式可前往Substrate Development Hub查看,这是由Parity Technologies构建和维护的线上资源。
点击此处访问Substrate Developer Hub
建议在里面多逛逛熟悉下常见模式。深入理解后,你就可以通过Substratekitties工作坊挑战自己,然后前往TCR Dappchain教程。
如何设置你的平行链
使用Substrate创建好链的逻辑后,你需要编译runtime到Wasm可执行文件,它包含了整个链的状态转变函数。
Polkadot中继链上的验证人将使用此Wasm blob去验证平行链的所有状态转变。
为了使Polkadot验证人及时了解平行链的最新状态转变,它需要一些必需基础设施。上述工作由平行链的校对人节点执行。
Substrate内置自己的网络层,但它不能直接兼容Polkadot的校对人节点。
为此,Parity Technologies一直在开发一种名为Cumulus的Substrate扩展,它使得任何基于Substrate构建的链都可以很容易转变为Polkadot兼容的平行链。
Cumulus
Cumulus的目标是成为Substrate的扩展,它将使任何Substrate runtime与Polkadot兼容。
它处理任何需要连接到Polkadot的平行链的网络兼容性。包括:
- 跨链消息传递
- 即用校对人节点设置
- 中继链的嵌入式轻客户端
- Polkadot区块兼容性
- 以最小修改将Cumulus集成到Substrate链,并移植到Polkadot上成为平行链,可能只需导入crate和添加一行代码。
如何使平行链加入Polkadot
为将平行链加入到Polkadot网络中,你需要拥有一个平行链插槽。
平行链插槽将通过公开拍卖出售,拍卖机制可在wiki的平行链拍卖页面查看。
构建智能合约
Polkadot中继链本身并不支持智能合约,但由于Polkadot是一个异构多链的网络,因此有些平行链可支持智能合约。
Parity Technologies已为想将智能合约功能加到平行链上的解决方案奠定了基础。Substrate内核心SRML合约模块将支持编译到Wasm的智能合约。
为开发一个编译到Wasm的智能合约,还需要一种合适的语言。为此,Parity一直致力于开发一种名为Ink的域特定语言。
目前已有一个项目Edgeware宣布有意成为Polkadot上支持智能合约的平行链。随着生态系统的日渐成熟,日后很有可能将会出现更多支持智能合约的平行链。
Polkadot还将通过桥接兼容现有的智能合约平台(如以太坊和Tezos)。这意味着如今在这些平台上开发的工作,日后也可能在Polkadot上运行。
Edgeware
Edgeware是Polkadot的计划平行链,并支持智能合约。除了治理和代币分发方面的其他有趣创新之外,它可能是第一个连接到Polkadot主网并支持智能合约的链。更多此项目的详细信息可访问其官方网站。
Ink
Ink旨在成为一种新型域特定语言,用于在Rust中编写智能合约,并将Rust编译为Wasm代码。但它仍处于试验阶段,并且缺少很多计划中的功能,但现在已经可以使用它来编写智能合约。
感兴趣的开发人员可以研究已编写好的示例来学习如何通过Ink编写智能合约。这些可以用来参考编写更复杂的逻辑,并将其部署在支持智能合约的平行链上。
Ink!为基于Wasm虚拟机并与Substrate链兼容的新智能合约堆栈奠定了基础。
Substrate包括合约模块,其中包括智能合约链所需的核心逻辑。除此之外,Ink!还将是一种用Rust编写的智能合约语言,它利用现有的Rust工具和支持,并将Rust编译到Wasm。
部署智能合约
智能合约只是一些存在于链上某个地址并可由外部参与者调用的代码。但关键在于,在任何人开始执行代码之前,你必须将代码置于链上!
无论使用哪一种特定平行链,在链上部署的智能合约都会略有不同,但通常都是发送一笔特殊交易,该交易将在账本上创建智能合约。你可能需要为初始化逻辑以及合约存储支付相关费用。
为你的智能合约支付费用
每个平台都有不同的支付和维护智能合约状态的方式。
智能合约有以下几种支付模式:
- 与部署每笔交易相关的交易费用。
- 订阅方式,定期支付平台使用费。
- 访问代币模型,需要持有一定的代币数量才能使用该平台(EOS也有类似条件)。存储租金。
- 免费试用或开发者推广。
- 大多数智能合约平台使用某种形式的gas来限制用户可执行的操作数量。用户被要求预先支付gas费用,并将余下gas退还。
你需要考虑到智能合约的存储和复杂性,以确保gas使用率保持在合理的范围内。无论你使用哪种智能合约平台,存储成本可能都会十分昂贵,因此有必要尽可能在链下保存数据,或者考虑使用IPFS或Storj来保存数据,仅在链上提交内容地址。
尚处早期
Polkadot的智能合约目前还处于早期阶段,而且目前开发才刚刚稳定下来。我们也在积极为开发人员提供资源,以帮助他们跟上进度,并使用最新资源维护wiki。
本文来源于互联网:构建属于你的区块链 —— Polkadot 开发者入门指南