RT3000 Release Summary
Upgrade Recap
Here is a summary of the Runtime Upgrade 3000, including several key changes within the ecosystem:
- Enable 6s Blocktime on Moonriver and Moonbeam
- Increase the gas per block on Moonriver from 15M to 30M
- Increase client authoring duration from 1.5s to 2s
- Reduce target block fullness from 50% to 35%
- Support for Eth Cancun including support for Solidity v0.8.25
- Support for debug_traceCall RPC method
- New precompile for pallet-xcm to improve XCM transactions in Moonbase Alpha
- Several Bug Fixes
Scaling Moonriver and Moonbeam
Async Backing: Enable 6s Blocktime on Moonriver and Moonbeam
Audience: Core Developers, DappDevelopers
In RT3000, blocktime will be reduced by 50% with the enablement of 6s block times on Moonriver and Moonbeam. This is made possible by the adoption of Asynchronous Backing in the Moonbeam Runtime. The Moonbeam core developers have been hard at work for many months re-implementing async backing for Moonbeam’s consensus mechanism (nimbus) while the reference implementation for Polkadot was based on the Aura consensus mechanism.
Project teams are encouraged to test their applications and infrastructure in the Moonbase Alpha to ensure a smooth transition to the new 6-second block time.
Async Backing: Increase the Gas Per block on Moonriver from 15M to 30M
Audience: Core Developers, DappDevelopers
Parameters related to gas limits will be increased by a factor of 2 on Moonriver. Therefore, the EVM max gas limit is increased from 15M to 30 M. This again was made possible by the adoption of Asynchronous Backing.
When considering a simple transaction such as an ERC-20 transfer, the throughput of Moonriver will therefore increase by 4x (given the 2x max gas increase coupled with a reduction of the block times from 12 to 6 seconds).
Pending a successful deployment on Moonriver, gas parameters will be doubled again in a subsequent release, bringing the overall throughput increase to 8x. Moonbeam’s gas parameters will also be augmented in release RT3100 by a factor of 2 and again in RT3200 by a factor of 2.
Moonbase Alpha continues to run with a 60M gas limit.
Increase client authoring duration from 1.5s to 2s
Audience: Collators
The amount of time allotted for a collator to produce a block has been increased from 1.5s to 2s. This increase allows collators to increase the fullness of a block, improving the effectiveness of the dynamic fee mechanism during periods of higher activity.
Reduce target block fullness from 50% to 35%
Audience: Collators
In runtime RT2801, the target for block fullness (which guides the dynamic fee mechanism) was increased from 25% to 50% to help reduce gas fee spikes during periods of high activity. However, during periods of increased activity, it was found that the dynamic fee mechanism was not effective at increasing fees according to demand as the blocks were not reaching 50% fullness due to the fact that contrary to Ethereum, Moonbeam only has 75% of the block usable by user transactions, while 25% is reserved for “system” ops like XCM messages.
A 35% target should strike a balance between these two cases. Meanwhile, a longer term initiative is being scoped to optimize the mempool and increase efficiency.
Ethereum Compatibility
Support for Eth Cancun including support for Solidity v0.8.25
Audience: Dapp Developers
Runtime 3000 ensures all networks are compatible with the Cancun aspects of the Ethereum Dencun upgrade including support for solidity v0.8.25.
The following EIPs were implemented:
- EIP-6780: SELFDESTRUCT only in same transaction
- EIP-1153: Transient storage opcodes
- EIP-5656: MCOPY - Memory copying instruction
Support for debug_traceCall RPC method
Audience: Dapp Developers
Runtime 3000 adds support for the debug_traceCall. This RPC call returns the number of possible tracing results by executing an eth call within the context of the given block execution. See the following documentation for more details.
X-Chain Capabilities
New precompile for pallet-xcm to Improve XCM transactions in Moonbase Alpha
Audience: Dapp Developers
Runtime 3000 introduces a new precompile based on Pallet-XCM as part of a shift away from the X-Tokens pallet for XCM asset transfers. The reason for this shift is because Pallet-XCM seems to have become the standard as it is updated along with newer versions of the Polkadot-SDK.
With this precompile comes the capability of transferring Reserve and Non-Reserve tokens in a single XCM message, through the transfer_assets() extrinsic.
For example, when transferring assets from Moonbeam to Hydration, this allows the sending of an asset (eg. HDX) whose reserve chain is not Moonbeam and GLMR whose reserve is Moonbeam in a single XCM message, improving both the developer and user experience.
Furthermore, as teams update to the newer version of the Pallet-XCM module, MRL will allow users to transfer MRL-supported assets from different Polkadot chains back to Ethereum paying with their native assets instead of GLMR, greatly boosting UX for MRL adoption.
This feature will be promoted to Moonriver and Moonbeam in a subsequent release following validation in Moonbase Alpha.
Other
Bug Fixes
Audience: Dapp Developers
- Fixes a bug where the behaviour of eth_call with gasPrice was not consistent with Ethereum MainNet
- We have fixed and improved two RPC endpoints to read historical data correctly.