Rumtime 1200升级:伦敦升级支持、质押功能更新以及更多

Moonbeam小月光
Moonbeam 中文
11 min readFeb 14, 2022

--

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为传统事务,0x1EIP-2930事务,0x2EIP-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作为xcKSMxcRMRK的形式登陆Moonriver。这些XC-20资产能够受益于Kusama的互操作性,同时,得益于在Moonriver上相似的ERC-20接口,这些资产也能够轻松集成于EVM dApp。例如,DEX上已经出现xcKSMxcRMRK

Runtime 1200升级为XCM带来如下更新:

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中采用。为了使预编译合约可以向后兼容需要depositwithdraw函数的dApp,Runtime 1200升级也加入了新的虚设depositwithdraw函数。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/

--

--