Rumtime 1200升级:伦敦升级支持、质押功能更新以及更多
Moonbeam/Moonriver致力于成为波卡/Kusama生态系统中最兼容以太坊的平行链。正因为如此,Moonbeam团队持续更新以带来新的功能,如统一账户、事件订阅、追踪RPC支持。
Moonbeam团队的目标是尽可能地高度兼容以太坊,为项目提供无缝环境以及进入波卡/Kusama生态系统的首选入口。
通过团队不断努力的付出,最新的Runtime 1200升级为Moonbeam以太坊兼容层带来重大升级。此次Runtime升级也与新客户端(v0.19)相关联,其中的第一步是支持EIP-1559。
本文将简要介绍Runtime 1200升级的主要技术更新。
伦敦升级支持
2021年8月5日,以太坊推出了伦敦硬分叉,名为EIP-1559,这其中也包括其他的EIP。这个硬分叉背后的主要原因是引入了新的交易定价机制,其中包括每块的固定交易费用,该费用将被销毁,并动态扩展/收缩区块大小以应对瞬态拥塞。
Moonbeam Runtime 1200升级增加了对以下EIP(伦敦硬分叉的所有部分)的支持:
- EIP-1559 — 一种新的交易定价机制
- EIP-3198 — BASEFEE操作码,这使EVM能够访问区块基本费用
- EIP-3529 — 清除存储时减少退款
- EIP-3541 — 拒绝以0xEF字节开头的新合约
EIP-1559:新的费用机制
EIP-1559的引入是将第一价格拍卖的费用模型转换成基本费用加“小费”的新交易定价机制。EIP的目标并不是减少gas费用,而是为用户创建更高可预见性和透明度的费用架构。此外,支持EIP-1559的钱包将为用户提供更精准的交易费用预估,以提高用户交易体验。
为了能够支持EIP-1559费用机制,需要在Runtime(具有核心状态转换功能的基于WASM的逻辑)和客户端(具有/围绕Runtime和节点的网络和通信层)完成不同的升级。
此次Runtime 1200升级增加了对以下EIP的支持,以完全支持EIP-1559:
- EIP-2718 — 引入类型化事务。新的事务类型仍以RLP编码,并通过开头字节来指定事务类型。若未包含此字节,则该事务将被归为传统事务,具有向后兼容性。
- EIP-2930 — 引入交易类型0x01,带有可选的访问列表,以减少访问账户或储存插槽。
- EIP-1559 — 引入交易类型0x02,带有新费用模型机制的必要更新,基于之前的交易类型所构建
尽管如此,Runtime 1200升级仅引入了用于实施EIP-1559费用机制的构建区块,计划在未来的Runtime更新中实现。目前的实施包含以下主要内容:
- 基本费用设置为网络的最低gas费用,在当前实施中不会有动态变化。也就是说,Moonbeam网络的最低gas费为100 Gwei,Moonriver和Moonbase Alpha的均为1 Gwei。eth_gasPrice将返回此数值
- 区块大小将不会发生变化,固定为每个区块有1500万gas,每笔交易约为1295万个gas。这是由中继链的区块执行时间所决定的,所以区块大小不会有动态变化
- 任何与上述基本费用相关的费用将会退还给交易发送者
- 优先级费用即“小费”用于优先处理交易。在当前实施中,这笔费用并不会给区块作者,而是80%用于销毁,20%存入财政库。这可能会在未来发生变化
以太坊API更新
EIP-1559的首个构建区块的引入也包括了Moonbeam以太坊API的一些更新。新的RPC和属性是上述所提及的EIP的其中一部分,可以总结如下:
- eth_feeHistory — 新的RPC端点,返回上限为1024个区块的历史gas信息集合
- baseFeePerGas — 新的区块属性,用于指定区块的基本费用。目前,这是每个网络的最低gas费用。eth_gasPrice将返回此数值。
- effectiveGasPrice — 交易收据内的新属性。交易执行后支付的gas费用
- accessList — 新的交易对象属性,EIP-2930提案中的一部分。[ [ { 20 bytes }, [ { 32 bytes }…] ] … ]类型数组,存储合约地址和储存密钥
- maxFeePerGas — 新的交易对象属性。定义交易允许支付的基础费用
- maxPriorityFeePerGas — 新的交易对象属性。对应优先处理交易的“小费”。目前,此费用的80%将用于销毁,20%存入财政库。这可能会在未来发生变化
- type — 新的交易对象属性。事务类型:0x0为传统事务,0x1为EIP-2930事务,0x2为EIP-1559事务
质押查询更新
尽管Runtime 1200升级的主要部分是对于EIP-1559的支持,但是同时也包括了平行链质押pallet(parachainStaking)的一些更新。这些更新主要是为了减少CandidateState的大小,从而减小有效性证明(PoV)。PoV需要谨慎管理,若PoV过大,则可能会导致平行链暂停。因此,它将被分为三个独立存储的参数:candidateInfo、topDelegations和bottomDelegations。排名靠前的委托人是指有效的委托人,即意味着质押量排名靠前的N名委托人。N是指每个收集人委托人数量的上限(目前所有网络上的该数值为300)。排名靠后的委托人是指超出活跃委托人集的委托人。每个收集人最多只能有50名排名靠后的委托人。若排名靠后的委托人数量达到后,若有新的委托人加入,则根据质押量排名最后的委托人将会被自动踢出,并立即执行撤销委托。
注意事项:(每个收集人)排名靠后50名委托人之外的委托人将被立即自动执行撤销委托。任何超过排名靠后的委托人数的委托将被立即撤销。
相关质押的链状态更新部分如下所示:
- candidateState — 现已被弃用,不会返回任何日期。将被接下来的三个函数所取代:
- candidateInfo — 返回候选人数据:
- bond: 绑定数量
- delegationCount: 指定候选人的总委托数量
- totalCounted: 绑定数量和排名靠前委托数量的总和
- lowestTopDelegationAmount: 最低排名靠前的委托数量
- highestBottomDelegationAmount: 最高排名靠后的委托数量
- lowestBottomDelegationAmount: 最低排名靠后的委托数量
- topCapacity: 排名靠前委托人的剩余名额
- bottomCapacity: 排名靠前委托人的剩余名额
- request: 指定时间内减少候选人自身绑定数量的待处理请求(上限为1)
- status: 目前候选人的状态(活跃、空闲或离开)
- topDelegations — 返回给指定候选人的活跃委托人数量,即排名靠前的N名委托人,N是指每个候选人的委托人数量上限
- bottomDelegations — 返回给指定候选人的非活跃委托人数量。这些委托人的委托数量是根据质押量来排名的
- maxDelegatorsPerCandidate — 现已弃用,由maxTopDelegationsPerCandidate取代
- maxTopDelegationsPerCandidate — 返回每个候选人的最高活跃委托人数量。举例而言,目前所有基于Moonbeam的网络将此数值设置为300
- maxBottomDelegationsPerCandidate — 返回排名靠后的最高委托人数量。举例而言,目前所有基于Moonbeam的网络将此数值设置为50
此外,还调整了以下事件:
- CandidateWentOffline — 目前仅提供候选人地址
- CandidateBackOnline — 目前仅提供候选人地址
同时,新增了以下事件:
- DelegationKicked — 当排名靠后的委托人被踢出委托人列表时发出。当新的委托人进入且其质押量高于lowestBottomDelegationAmount时会发生此情况
XCM相关更新
Moonriver在Runtime 1102升级时引入了XCM。自此,截止至本文撰写时,已经有超过8000枚KSM和390000枚RMRK作为xcKSM和xcRMRK的形式登陆Moonriver。这些XC-20资产能够受益于Kusama的互操作性,同时,得益于在Moonriver上相似的ERC-20接口,这些资产也能够轻松集成于EVM dApp。例如,DEX上已经出现xcKSM和xcRMRK。
Runtime 1200升级为XCM带来如下更新:
- 在Moonbeam上启用XCM — 目前XCM仍未在波卡上启用。一旦中继链级别功能启用,Moonbeam即可支持
- 为新的Statemine资产表示提供支持 — 为Statemine的multi-location资产表示提供支持,不久即可启动。但目前暂不支持将资产转回Statemine
在AssetManager pallet中,如下关于查询函数方面的更新:
- assetIdUnitsPerSecond — 现已弃用,由asset_type_units_per_second取代
- assetTypeUnitsPerSecond — 返回关于执行相关XCM信息的每秒执行单位。与已弃用的函数类似,但现在需要的是assetType(而不是以前的assetID)。这需要了解资产的multi-location地址
在AssetManager pallet中,调整了以下事件:
- UnitsPerSecondChanged — 现在返回assetType(而不是以前的assetId)
在AssetManager pallet中,新增/调整了以下extrinsic:
- setAssetUnitsPerSecond — 已调整,现在你需要提供assetType(而不是以前的assetId)
- changeExistingAssetType — 新增extrinsic,允许更改与assetType相关联的assetId
其他更新
除稳定性和性能更新以外,Runtime 1200升级还有如下的一些更新:
- AuthorMapping precompile — 该预编译合约是收集人能够通过以太坊API执行所有必要动作的缺失部分。这意味着收集人能够在Ledger/Trezor设备中管理他们的账户。适用于所有Moonbeam网络
- Native token ERC-20 interface — 该预编译合约之前已经在Moonbase Alpha and Moonriver中采用。为了使预编译合约可以向后兼容需要deposit和withdraw函数的dApp,Runtime 1200升级也加入了新的虚设deposit和withdraw函数。Deposit函数只会将金额存入交易的发送者并发出必要的事件。Withdraw函数只会发出事件
- Democracy precompile — 该预编译合约之前已经在Moonbase Alpha中采用。Runtime 1200升级将该预编译加入至Moonriver,使网络参与者能够使用以太坊API参与民主公投。更多新闻尽请期待……
关于Moonbeam Network
Moonbeam是波卡(Polkadot)网络中与以太坊兼容的智能合约平台,可实现轻松构建原生的互操作性去中心化应用。以太坊兼容特性允许开发者以最少的更改将现有的Solidity智能合约和DApp前端部署到Moonbeam。Moonriver作为Kusama上最活跃的平行链,已有80多个DApp完成在Moonriver的集成。Moonbeam将受益于Polkadot中继链的共享安全性和链接波卡其他链的互操作优势。
如需了解更多信息,请访问:https://moonbeam.network/
关于Moonriver
Moonriver是Kusama上的兼容以太坊的智能合约平行链。作为Moonbeam的姐妹网络,新的项目代码将优先部署到Moonriver,这意味着Moonriver始终拥有最新版本。Moonriver也是社区主导型网络,绝大部分的Token是发放给社区,创始人和早期支持者没有任何Token。Moonriver先于Moonbeam上线至Kusama网络。平行链功能现已上线,Moonriver已被证明是Kusama网络上最活跃的平行链。
如需了解更多信息,请访问:https://moonbeam.network/networks/moonriver/