diff --git a/builders/build/runtime-upgrades.md b/builders/build/runtime-upgrades.md index a30d98e76..bf985b2f5 100644 --- a/builders/build/runtime-upgrades.md +++ b/builders/build/runtime-upgrades.md @@ -104,3 +104,4 @@ Not all runtime upgrades are released on each network, as sometimes after releas | [4101](https://forum.moonbeam.network/t/runtime-rt4100-4101-schedule/2370/2){target=\_blank} | - | [14664970](https://moonriver.subscan.io/block/14664970){target=\_blank} | - | | [4102](https://forum.moonbeam.network/t/mr94-mb146-authorize-upgrade-to-rt4102-on-moonriver-moonbeam-via-whitelist/2409){target=\_blank} | [14314943](https://moonbeam.subscan.io/block/14314943){target=\_blank} | [14970171](https://moonriver.subscan.io/block/14970171){target=\_blank} | - | | [4103](https://forum.moonbeam.network/t/runtime-rt4201-schedule/2418/3){target=\_blank} | [14560100](https://moonbeam.subscan.io/block/14560100){target=\_blank} | [15205283](https://moonriver.subscan.io/block/15205283){target=\_blank} | [15282957](https://moonbase.subscan.io/block/15282957){target=\_blank} | +| [4202](https://forum.moonbeam.network/t/runtime-rt4202-schedule/2440/2){target=\_blank} | - | [15694745](https://moonriver.subscan.io/block/15694745){target=\_blank} | [15512088](https://moonbase.subscan.io/block/15512088){target=\_blank} | diff --git a/builders/ethereum/precompiles/interoperability/gmp.md b/builders/ethereum/precompiles/interoperability/gmp.md index b92fd7f1f..4b4e7277f 100644 --- a/builders/ethereum/precompiles/interoperability/gmp.md +++ b/builders/ethereum/precompiles/interoperability/gmp.md @@ -57,7 +57,7 @@ The most common instance in which a user will have to interact with the precompi Currently, the GMP precompile only supports sending liquidity with Wormhole, through Moonbeam, and into other parachains. The GMP precompile does not assist with a route from parachains back to Moonbeam and subsequently, Wormhole-connected chains. -To send liquidity from a Wormhole-connected origin chain like Ethereum, users must invoke the [`transferTokensWithPayload` method](https://wormhole.com/docs/protocol/infrastructure/vaas/#token--message){target=\_blank} on the [origin-chain's deployment](https://wormhole.com/docs/protocol/infrastructure/core-contracts/#token-bridge){target=\_blank} of the [WormholeTokenBridge smart contract](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/interfaces/ITokenBridge.sol){target=\_blank}. This function requires a bytes payload, which must be formatted as a SCALE encoded multilocation object wrapped within [another precompile-specific versioned type](https://github.com/moonbeam-foundation/moonbeam/blob/{{ networks.moonbase.spec_version }}/precompiles/gmp/src/types.rs#L25-L48){target=\_blank}. +To send liquidity from a Wormhole-connected origin chain like Ethereum, users must invoke the [`transferTokensWithPayload` method](https://wormhole.com/docs/protocol/infrastructure/vaas/#token--message){target=\_blank} on the [origin-chain's deployment](https://wormhole.com/docs/protocol/infrastructure/core-contracts/#token-bridge){target=\_blank} of the [WormholeTokenBridge smart contract](https://github.com/wormhole-foundation/wormhole/blob/main/ethereum/contracts/bridge/interfaces/ITokenBridge.sol){target=\_blank}. This function requires a bytes payload, which must be formatted as a SCALE encoded multilocation object wrapped within [another precompile-specific versioned type](https://github.com/moonbeam-foundation/moonbeam/blob/{{ networks.moonbase.spec_version }}/precompiles/gmp/src/types.rs#L53-L76){target=\_blank}. You may be unfamiliar with SCALE encoding and multilocations if you are unfamiliar with the Polkadot ecosystem. [SCALE encoding](https://docs.polkadot.com/reference/parachains/data-encoding/){target=\_blank} is a compact form of encoding that Polkadot uses. The [`MultiLocation` type](https://wiki.polkadot.com/learn/learn-xcvm/){target=\_blank} is used to define a relative point in Polkadot, such as a specific account on a specific parachain (Polkadot blockchain). @@ -115,7 +115,7 @@ The following multilocation templates target accounts on other parachains with M }; ``` -It can be challenging to correctly SCALE encode the entire payload without the right tools, mainly due to the [custom types expected by the precompile](https://github.com/moonbeam-foundation/moonbeam/blob/{{ networks.moonbase.spec_version }}/precompiles/gmp/src/types.rs#L25-L48){target=\_blank}. Fortunately, the Polkadot.js API can assist with this. +It can be challenging to correctly SCALE encode the entire payload without the right tools, mainly due to the [custom types expected by the precompile](https://github.com/moonbeam-foundation/moonbeam/blob/{{ networks.moonbase.spec_version }}/precompiles/gmp/src/types.rs#L53-L76){target=\_blank}. Fortunately, the Polkadot.js API can assist with this. The versioned user action expected by the precompile accepts two versions: V1 and V2. V1 accepts the `XcmRoutingUserAction` type, which attempts to route the transferred assets to the destination defined by the multilocation. V2 accepts the `XcmRoutingUserActionWithFee` type, which also attempts to route the transferred assets to the destination and allows a fee to be paid. Relayers can use V2 to specify a fee on Moonbeam to relay the transaction to the given destination. diff --git a/builders/interoperability/xcm/core-concepts/weights-fees.md b/builders/interoperability/xcm/core-concepts/weights-fees.md index 04a166985..b6c0d8830 100644 --- a/builders/interoperability/xcm/core-concepts/weights-fees.md +++ b/builders/interoperability/xcm/core-concepts/weights-fees.md @@ -150,7 +150,7 @@ For each XCM instruction, the weight units are converted to balance units as par | Moonbeam | Moonriver | Moonbase Alpha | |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| [{{ networks.moonbeam.xcm.instructions.wei_per_weight.display }}](https://github.com/moonbeam-foundation/moonbeam/blob/{{networks.moonbeam.spec_version}}/runtime/moonbeam/src/lib.rs#L163){target=\_blank} | [{{ networks.moonriver.xcm.instructions.wei_per_weight.display }}](https://github.com/moonbeam-foundation/moonbeam/blob/{{networks.moonriver.spec_version}}/runtime/moonriver/src/lib.rs#L170){target=\_blank} | [{{ networks.moonbase.xcm.instructions.wei_per_weight.display }}](https://github.com/moonbeam-foundation/moonbeam/blob/{{networks.moonbase.spec_version}}/runtime/moonbase/src/lib.rs#L163){target=\_blank} | +| [{{ networks.moonbeam.xcm.instructions.wei_per_weight.display }}](https://github.com/moonbeam-foundation/moonbeam/blob/{{networks.moonbeam.spec_version}}/runtime/moonbeam/src/lib.rs#L163){target=\_blank} | [{{ networks.moonriver.xcm.instructions.wei_per_weight.display }}](https://github.com/moonbeam-foundation/moonbeam/blob/{{networks.moonriver.spec_version}}/runtime/moonriver/src/lib.rs#L171){target=\_blank} | [{{ networks.moonbase.xcm.instructions.wei_per_weight.display }}](https://github.com/moonbeam-foundation/moonbeam/blob/{{networks.moonbase.spec_version}}/runtime/moonbase/src/lib.rs#L163){target=\_blank} | This means that on Moonbeam, for example, the formula to calculate the cost of one XCM instruction in the reserve asset is as follows: diff --git a/builders/interoperability/xcm/remote-execution/remote-evm-calls.md b/builders/interoperability/xcm/remote-execution/remote-evm-calls.md index 2ee5261e0..1ea59f714 100644 --- a/builders/interoperability/xcm/remote-execution/remote-evm-calls.md +++ b/builders/interoperability/xcm/remote-execution/remote-evm-calls.md @@ -73,7 +73,7 @@ As of runtime 2900, the configuration of the XCM queue suggests that XCM message Suppose the XCM message can't be executed due to the lack of execution time in a given block, and the weight requirement exceeds the above limits. In that case, the XCM message will be marked as `overweight` and only be executable through democracy. -The maximum weight limit per XCM message constrains the gas limit available for remote EVM calls through XCM. For all Moonbeam-based networks, there is a ratio of [`25,000` units of gas per unit of weight](https://github.com/moonbeam-foundation/moonbeam/blob/{{ networks.moonbase.spec_version }}/runtime/moonbase/src/lib.rs#L417){target=\_blank} ([`WEIGHT_REF_TIME_PER_SECOND`](https://paritytech.github.io/substrate/master/frame_support/weights/constants/constant.WEIGHT_REF_TIME_PER_SECOND.html){target=\_blank} / [`GAS_PER_SECOND`](https://github.com/moonbeam-foundation/moonbeam/blob/{{ networks.moonbase.spec_version }}/runtime/moonbase/src/lib.rs#L414){target=\_blank}). Considering that you need some XCM message weight to execute the XCM instructions, a remote EVM call might consume 2,000,000,000 units. The following equation can be used to determine the maximum gas units for a remote EVM call: +The maximum weight limit per XCM message constrains the gas limit available for remote EVM calls through XCM. For all Moonbeam-based networks, there is a ratio of [`25,000` units of gas per unit of weight](https://github.com/moonbeam-foundation/moonbeam/blob/{{ networks.moonbase.spec_version }}/runtime/moonbase/src/lib.rs#L421){target=\_blank} ([`WEIGHT_REF_TIME_PER_SECOND`](https://paritytech.github.io/substrate/master/frame_support/weights/constants/constant.WEIGHT_REF_TIME_PER_SECOND.html){target=\_blank} / [`GAS_PER_SECOND`](https://github.com/moonbeam-foundation/moonbeam/blob/{{ networks.moonbase.spec_version }}/runtime/moonbase/src/lib.rs#L417){target=\_blank}). Considering that you need some XCM message weight to execute the XCM instructions, a remote EVM call might consume 2,000,000,000 units. The following equation can be used to determine the maximum gas units for a remote EVM call: ```text Maximum Gas Units = (Maximum Weight Units - Remote EVM Weight Units) / 25,000 diff --git a/variables.yml b/variables.yml index 5c7fb10f1..0281b5119 100644 --- a/variables.yml +++ b/variables.yml @@ -15,7 +15,7 @@ networks: hex_chain_id: '0x507' chain_spec: alphanet block_explorer: https://moonbase.moonscan.io/ - spec_version: runtime-4103 + spec_version: runtime-4202 parachain_release_tag: v0.50.3 # Required format for link generation system parachain_sha256sum: 46f4760cbd89e2f0de94f65ee448a8d457f6aa06361589429fca0c863c6c8f34 tracing_tag: moonbeamfoundation/moonbeam-tracing:v0.50.3-4202-c023 @@ -379,7 +379,7 @@ networks: tracing_tag: moonbeamfoundation/moonbeam-tracing:v0.50.3-4202-c023 chain_spec: moonriver block_explorer: https://moonriver.moonscan.io/ - spec_version: runtime-4103 + spec_version: runtime-4202 binary_name: moonbeam min_gas_price: 0.3125 block_time: 6