对于应用来说,优先构建基础功能推出一个初期版本的应用,再在这个基础之上进行迭代升级,逐渐成为一款成熟的应用,是应用的基本发展路径。同样,区块链也会有类似的发展路径,它也需要不断地迭代升级,才能逐渐走向成熟,又或者说随着技术的进步,原有的区块链也需要在之前的基础之上进行技术升级或者修改技术路线,进而拓展更广的发展前景。但是,对于一般区块链来说,每次大的迭代升级都需要进行硬分叉,并且要求所有节点都要执行它,这本身就是一件很难的事情,因此一些项目在进行硬分叉时往往会遇到许多问题,严重影响区块链项目的进化。而波卡在设计之时就考虑到了这一点,实现了无需硬分叉就可以升级,这使得波卡以及波卡生态都具备了快速进化的能力。
Runtime升级
Runtime升级允许波卡无需硬分叉即可更改链的逻辑。硬分叉需要节点运营方手动将其节点升级到最新的Runtime版本。在分布式系统中,这是一个复杂的协调和通信过程。波卡无需硬分叉即可升级。遵循现有的Runtime逻辑,将存储在区块链上的Wasm Runtime更新为新版本。然后升级包含在区块链本身中,这意味着网络上的所有节点都执行它。
通常无需在Runtime升级之前手动升级您的节点,因为它们会自动开始遵循链的新逻辑。仅当Runtime需要新的主机功能或网络或共识发生变化时,才需要更新节点。
为给定Runtime版本构建的交易将不适用于更高版本。因此,基于Runtime版本构建的交易在以后的Runtime版本中将无效。如果您认为您不能在升级前提交交易,最好等到升级发生后再构建它。
虽然升级节点通常不需要跟随升级,但我们建议跟随波卡版本并及时升级,特别是对于高优先级或关键版本。
交易版本升级
除了Runtime版本之外,还有交易版本,它表示如何正确编码/解码给定Runtime的调用(对硬件钱包很有用)。交易版本和Runtime版本分开的原因是它可以明确指出调用接口已损坏/不兼容。
交易版本在Substrate文档中提到的情况下进行了更新。因此,当引入新的交易版本时(在Runtime升级期间),它表示对交易序列化的重大更改。在这种情况下,任何构建和签署交易的自定义应用程序/工具也应该更新,以便与新的交易版本兼容。自定义应用程序/工具的维护者有责任跟上更新。但是,如果您不想自己继续监控这些更改,您也可以使用txwrapper-core工具为您处理这些重大更改,并允许您使用函数名称和链的元数据(metadata)构建交易。txwrapper工具相关地址:https://github.com/paritytech/txwrapper-core
智能合约
波卡中继链不支持智能合约。
其他网络
除了运行专用网络外,波卡还有另外两个网络,您可以在部署到波卡主网之前测试基础设施。
- Kusama金丝雀网络:Kusama是波卡极其重要的表亲。许多有风险的功能在进入波卡之前被部署到Kusama上。
- Westend测试网:Westend是波卡的测试网,使用波卡的Runtime。
其他常见问题
1、没有交易,账户余额会有变化吗?
不,但并不是所有的余额变化都在交易中,有些是在事件中。您将需要运行归档节点(archive node)并监听事件和交易以跟踪所有账户活动。如果您将余额计算为可花费余额(即可用余额减去最大锁定),这尤其适用于锁定操作。
2、怎样的链深度被认为是安全的?
译者注:"Chain depth" 可以理解为区块链上区块的数量,用于表示当前区块的确定性。
波卡使用了一种确定性的终定性机制。一旦一个区块被最终确定,除了通过硬分叉,它就不能被撤销。Kusama曾经进行过硬分叉,为了取消Runtime升级而不得不撤销四个已经最终确定的区块。使用十个区块的最终确定深度应该是安全的。
请注意,在波卡中,区块生产和最终确定是独立的过程,链可以有一个很长的未最终确定的头。
3、用户需要与智能合约进行交互吗?
不,用户直接与链的逻辑交互。
4、波卡有状态租金吗?
不,波卡使用存在存款来防止粉尘账户和其他经济机制,例如为利用状态的操作锁定或保留通证。
5、查看当前链高度的外源是什么?
Polkadot-JS 浏览器:
https://polkadot.js.org/apps/#/explorerPolkascan 区块浏览器:https://explorer.polkascan.io/
得益于波卡独特的设计,波卡生态中的项目也获得了快速迭代的能力,可以加速项目进行市场验证、更新技术等等,波卡生态的项目在技术层面上拥有更迅速的进化能力,这也是许多团队选择在波卡生态发展的原因。