Skip to content

Commit

Permalink
[Moonbeam] Increase block gas limit from 15 mlns to 30 mlns (#2866)
Browse files Browse the repository at this point in the history
* raise block gas limit to 30 mlns
* Increase test gas limits
  • Loading branch information
gonzamontiel authored Jul 17, 2024
1 parent cab8f5a commit 9e5fa56
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 14 deletions.
12 changes: 6 additions & 6 deletions runtime/moonbeam/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ pub mod currency {

/// Maximum weight per block
pub const MAXIMUM_BLOCK_WEIGHT: Weight = Weight::from_parts(WEIGHT_REF_TIME_PER_SECOND, u64::MAX)
.saturating_div(2)
.saturating_mul(1)
.set_proof_size(relay_chain::MAX_POV_SIZE as u64);

pub const MILLISECS_PER_BLOCK: u64 = 6_000;
Expand Down Expand Up @@ -399,8 +399,8 @@ impl pallet_evm_chain_id::Config for Runtime {}

/// Current approximation of the gas/s consumption considering
/// EVM execution over compiled WASM (on 4.4Ghz CPU).
/// Given the 500ms Weight, from which 75% only are used for transactions,
/// the total EVM execution gas limit is: GAS_PER_SECOND * 0.500 * 0.75 ~= 15_000_000.
/// Given the 1000ms Weight, from which 75% only are used for transactions,
/// the total EVM execution gas limit is: GAS_PER_SECOND * 1 * 0.75 ~= 30_000_000.
pub const GAS_PER_SECOND: u64 = 40_000_000;

/// Approximate ratio of the amount of Weight per Gas.
Expand Down Expand Up @@ -433,9 +433,9 @@ parameter_types! {
/// (max_extrinsic.ref_time() / max_extrinsic.proof_size()) / WEIGHT_PER_GAS
/// )
/// We should re-check `xcm_config::Erc20XcmBridgeTransferGasLimit` when changing this value
pub const GasLimitPovSizeRatio: u64 = 4;
pub const GasLimitPovSizeRatio: u64 = 8;
/// The amount of gas per storage (in bytes): BLOCK_GAS_LIMIT / BLOCK_STORAGE_LIMIT
/// The current definition of BLOCK_STORAGE_LIMIT is 40 KB, resulting in a value of 366.
/// The current definition of BLOCK_STORAGE_LIMIT is 80 KB, resulting in a value of 366.
pub GasLimitStorageGrowthRatio: u64 = 366;
}

Expand Down Expand Up @@ -1823,7 +1823,7 @@ mod tests {
#[test]
fn test_storage_growth_ratio_is_correct() {
// This is the highest amount of new storage that can be created in a block 40 KB
let block_storage_limit = 40 * 1024;
let block_storage_limit = 80 * 1024;
let expected_storage_growth_ratio = BlockGasLimit::get()
.low_u64()
.saturating_div(block_storage_limit);
Expand Down
2 changes: 1 addition & 1 deletion runtime/moonbeam/src/xcm_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -676,7 +676,7 @@ parameter_types! {

// To be able to support almost all erc20 implementations,
// we provide a sufficiently hight gas limit.
pub Erc20XcmBridgeTransferGasLimit: u64 = 200_000;
pub Erc20XcmBridgeTransferGasLimit: u64 = 400_000;
}

impl pallet_erc20_xcm_bridge::Config for Runtime {
Expand Down
4 changes: 2 additions & 2 deletions runtime/moonbeam/tests/xcm_mock/parachain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -826,8 +826,8 @@ impl pallet_timestamp::Config for Runtime {
use sp_core::U256;

const MAX_POV_SIZE: u64 = 5 * 1024 * 1024;
/// Block storage limit in bytes. Set to 40 KB.
const BLOCK_STORAGE_LIMIT: u64 = 40 * 1024;
/// Block storage limit in bytes. Set to 80 KB.
const BLOCK_STORAGE_LIMIT: u64 = 80 * 1024;

parameter_types! {
pub BlockGasLimit: U256 = U256::from(u64::MAX);
Expand Down
10 changes: 5 additions & 5 deletions test/helpers/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,16 +103,16 @@ export const RUNTIME_CONSTANTS = {
MAX_BASE_FEE_IN_WEI: "12500000000000000",
TARGET_FILL_PERMILL: new RuntimeConstant({ 3000: 350_000n, 2801: 500_000n, 0: 250_000n }),
// Deadline for block production in miliseconds
DEADLINE_MILISECONDS: 500n,
DEADLINE_MILISECONDS: 1000n,
// Caclulated as the weight per second by the deadline in seconds
BLOCK_WEIGHT_LIMIT: 500_000_000_000n,
BLOCK_WEIGHT_LIMIT: 1_000_000_000_000n,
// Gas limit considering the block utilization threshold (75%)
GAS_LIMIT: 15_000_000n,
GAS_LIMIT: 30_000_000n,
// Maximum extrinsic weight is taken from the max allowed transaction weight per block (75%),
// minus the block initialization (10%) and minus the extrinsic base cost.
EXTRINSIC_GAS_LIMIT: 13_000_000n,
EXTRINSIC_GAS_LIMIT: 26_000_000n,
// Maximum Gas to PoV ratio used in the gasometer
GAS_PER_POV_BYTES: 4n,
GAS_PER_POV_BYTES: 8n,
},
} as const;

Expand Down

0 comments on commit 9e5fa56

Please sign in to comment.