Introduce a gas-based Storage limit per tx#1142
Merged
boundless-forest merged 49 commits intopolkadot-evm:masterfrom Dec 11, 2024
Merged
Introduce a gas-based Storage limit per tx#1142boundless-forest merged 49 commits intopolkadot-evm:masterfrom
boundless-forest merged 49 commits intopolkadot-evm:masterfrom
Conversation
notlesh
reviewed
Aug 14, 2023
notlesh
reviewed
Aug 14, 2023
notlesh
reviewed
Aug 14, 2023
notlesh
reviewed
Aug 14, 2023
koushiro
reviewed
Nov 21, 2023
Co-authored-by: Qinxuan Chen <koushiro.cqx@gmail.com>
Collaborator
|
@sorpaas We would like to merge this PR as we are cherry-picking it every release. |
Collaborator
|
Please merge the master, and I'll review and merge it later. @crystalin |
Contributor
Author
|
@boundless-forest I merged to master. PR is ready to be reviewed and merged |
Collaborator
boundless-forest
left a comment
There was a problem hiding this comment.
Just one comment, LGTM
This was referenced May 5, 2025
l0r1s
pushed a commit
to opentensor/frontier
that referenced
this pull request
May 19, 2025
* A new trait for recording foreign metrics * Remove Metric trait * rename BasicMetric to Metric * add unit tests and a new MetricError enum * Add ProofSizeMeter * Add ProofSizeMeter to WeightInfo * formatting * Add RefTimeMeter to WeightInfo * add storage meter to WeightInfo * rename metric to resource * code refactor * remove unused functions * make clippy happy * minor improvements * rename meter to resource * compute new storage created by SSTORE * revert changes * compute storage growth for opcodes * compute the storage quota per tx * pin evm temporarily * record storage growth for opcodes * update GAS_LIMIT_STORAGE_GROWTH_RATIO for tests * add support to record storage growth for precompiles * fix tests * fix formatting * fix storage growth parameters for tests * add rust integration tests * fix typo * fix recording storage growth of a special use case of SSTORE * use saturating add * minor improvements * add license to meter.rs * fix clippy warnings * pin evm to master * update evm to the latest commit * check limit exceedance before updating the usage * Use BtreeSet * add support for storage growth in precompiles * clippy warnings * update to evm 0.41.0 * Update Cargo.toml Co-authored-by: Qinxuan Chen <koushiro.cqx@gmail.com> * update Cargo.lock * format * fix tests * update license information in meter.rs to Apache-2.0 --------- Co-authored-by: Qinxuan Chen <koushiro.cqx@gmail.com>
dnjscksdn98
added a commit
to bifrost-platform/bifrost-node
that referenced
this pull request
Jul 29, 2025
…ontier#1142), Support external account provider (polkadot-evm/frontier#1329)
alstjd0921
pushed a commit
to bifrost-platform/bifrost-node
that referenced
this pull request
Sep 10, 2025
…ontier#1142), Support external account provider (polkadot-evm/frontier#1329)
alstjd0921
added a commit
to bifrost-platform/bifrost-node
that referenced
this pull request
Sep 10, 2025
* NODE-161, deps: update to stable2503 * NODE-161, fix: node: Replace TxPool RPC with Frontier implementation #moonbeam-foundation/moonbeam#3218 * NODE-161, fix: runtime: Fix weight limits in evm tracing runtimes (moonbeam-foundation/moonbeam#3210) * NODE-161, deps: update Cargo * NODE-161, fix: Use DecodeWithMemTracking (paritytech/polkadot-sdk#7360) * NODE-161, feat: runtime: upgrade to EIP-7702 new APIs * NODE-161, Introduce a gas-based Storage limit per tx (polkadot-evm/frontier#1142), Support external account provider (polkadot-evm/frontier#1329) * NODE-161, fix: remove sc_transaction_pool * NODE-161, fix: add missing crates * NODE-161, fix: resolve typo * NODE-161, fix: remove Paramter * NODE-161, feat: Allow whitleisting contract deployer (polkadot-evm/frontier#1629) * NODE-161, feat: Update Treasury to Support Relay Chain Block Number Provider (paritytech/polkadot-sdk#3970) * NODE-161, feat: [Identity] Decouple usernames from identities (paritytech/polkadot-sdk#5554) * NODE-161, feat: Collective: dynamic deposit based on number of proposals (paritytech/polkadot-sdk#3151) * NODE-161, fix: add missing DecodeWithMemTracking * NODE-161, feat: Moves disabling logic into pallet-session (paritytech/polkadot-sdk#7581) * NODE-161, feat: Update Scheduler to have a configurable block provider (paritytech/polkadot-sdk#7441) * NODE-161, chore: add WeightInfo to pallet_transaction_payment * NODE-161, fix: add missing authorization_list * NODE-161, fix: replace to new_bare * NODE-161, fix: add missing DecodeWithMemTracking derive * NODE-161, fix: resolve type mismatch * NODE-161, fix: use system_version (paritytech/polkadot-sdk#4257) * NODE-161, fix: use Cow (paritytech/polkadot-sdk#5693) * NODE-161, feat: Generic slashing side-effects (paritytech/polkadot-sdk#5623) * NODE-161, feat: impl create_inherent (paritytech/polkadot-sdk#3685) * NODE-161, fix: remove generic parameter from on_unbalanceds * NODE-161, fix: update storage_at runtime api * NODE-161, fix: node: Remove network starter that is no longer needed (paritytech/polkadot-sdk#6400) * NODE-161, fix: node: update FullNetworkConfiguration params * NODE-161, fix: node: update TransactionPool * NODE-161, fix: node: substrate-offchain: upgrade hyper to v1 (paritytech/polkadot-sdk#5919) * NODE-161, fix: node: update service, rpc * NODE-161, chore: remove unused imports * chore: add cargo feature "metadata-hash" * NODE-161, fix: add cumulus primitives storage proof size HostFunctions * NODE-161, chore: update dependencies branch * NODE-161, chore: update to stable2506 * NODE-161, chore: remove `RuntimeEvent` from pallet::Config * NODE-161, fix: update test code * NODE-161, fix: make node-lts compatible * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, fix: use node.kill() * NODE-161, fix: resolve test codes * NODE-161, fix: remove console.log * NODE-161, chore: update tools package.json * feat: init blaze * fix: remove unused crate * import precompile-blaze * NODE-161, chore: add mbm migrator into runtimes * NODE-161, chore: add pallet_session migration * NODE-161, fix: new_full_parts -> new_full_parts_record_import * fix: resolve issues * NODE-161, deps: update runtime version (489) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com>
alstjd0921
added a commit
to bifrost-platform/bifrost-node
that referenced
this pull request
Sep 10, 2025
* Node 161 pectra update (#126) * NODE-161, deps: update to stable2503 * NODE-161, fix: node: Replace TxPool RPC with Frontier implementation #moonbeam-foundation/moonbeam#3218 * NODE-161, fix: runtime: Fix weight limits in evm tracing runtimes (moonbeam-foundation/moonbeam#3210) * NODE-161, deps: update Cargo * NODE-161, fix: Use DecodeWithMemTracking (paritytech/polkadot-sdk#7360) * NODE-161, feat: runtime: upgrade to EIP-7702 new APIs * NODE-161, Introduce a gas-based Storage limit per tx (polkadot-evm/frontier#1142), Support external account provider (polkadot-evm/frontier#1329) * NODE-161, fix: remove sc_transaction_pool * NODE-161, fix: add missing crates * NODE-161, fix: resolve typo * NODE-161, fix: remove Paramter * NODE-161, feat: Allow whitleisting contract deployer (polkadot-evm/frontier#1629) * NODE-161, feat: Update Treasury to Support Relay Chain Block Number Provider (paritytech/polkadot-sdk#3970) * NODE-161, feat: [Identity] Decouple usernames from identities (paritytech/polkadot-sdk#5554) * NODE-161, feat: Collective: dynamic deposit based on number of proposals (paritytech/polkadot-sdk#3151) * NODE-161, fix: add missing DecodeWithMemTracking * NODE-161, feat: Moves disabling logic into pallet-session (paritytech/polkadot-sdk#7581) * NODE-161, feat: Update Scheduler to have a configurable block provider (paritytech/polkadot-sdk#7441) * NODE-161, chore: add WeightInfo to pallet_transaction_payment * NODE-161, fix: add missing authorization_list * NODE-161, fix: replace to new_bare * NODE-161, fix: add missing DecodeWithMemTracking derive * NODE-161, fix: resolve type mismatch * NODE-161, fix: use system_version (paritytech/polkadot-sdk#4257) * NODE-161, fix: use Cow (paritytech/polkadot-sdk#5693) * NODE-161, feat: Generic slashing side-effects (paritytech/polkadot-sdk#5623) * NODE-161, feat: impl create_inherent (paritytech/polkadot-sdk#3685) * NODE-161, fix: remove generic parameter from on_unbalanceds * NODE-161, fix: update storage_at runtime api * NODE-161, fix: node: Remove network starter that is no longer needed (paritytech/polkadot-sdk#6400) * NODE-161, fix: node: update FullNetworkConfiguration params * NODE-161, fix: node: update TransactionPool * NODE-161, fix: node: substrate-offchain: upgrade hyper to v1 (paritytech/polkadot-sdk#5919) * NODE-161, fix: node: update service, rpc * NODE-161, chore: remove unused imports * chore: add cargo feature "metadata-hash" * NODE-161, fix: add cumulus primitives storage proof size HostFunctions * NODE-161, chore: update dependencies branch * NODE-161, chore: update to stable2506 * NODE-161, chore: remove `RuntimeEvent` from pallet::Config * NODE-161, fix: update test code * NODE-161, fix: make node-lts compatible * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, fix: use node.kill() * NODE-161, fix: resolve test codes * NODE-161, fix: remove console.log * NODE-161, chore: update tools package.json * feat: init blaze * fix: remove unused crate * import precompile-blaze * NODE-161, chore: add mbm migrator into runtimes * NODE-161, chore: add pallet_session migration * NODE-161, fix: new_full_parts -> new_full_parts_record_import * fix: resolve issues * NODE-161, deps: update runtime version (489) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * NODE-80 branch restructure (#127) * NODE-179, feat: init pallet storages * NODE-179, feat: init pallet extrinsics * NODE-179, chore: add locktime * NODE-179, feat: finalize fee rate * NODE-179, feature: impl coin selections * NODE-179, feat: check blaze activation state * NODE-179, feature: impl `remove_outbound_messages` for legacy mode * NODE-80: implement benchmarking (#121) * NODE-80, feature: impl benchmarking.rs & mock.rs * NODE-80, fix: benchmark * NODE-80, fix: benchmark * NODE-80, chore: update weights * fix: zero out proof size in weights * chore: resolve --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * fix: correctly use mocha with tsx (#133) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com>
alstjd0921
added a commit
to bifrost-platform/bifrost-node
that referenced
this pull request
Sep 11, 2025
* Node 161 pectra update (#126) * NODE-161, deps: update to stable2503 * NODE-161, fix: node: Replace TxPool RPC with Frontier implementation #moonbeam-foundation/moonbeam#3218 * NODE-161, fix: runtime: Fix weight limits in evm tracing runtimes (moonbeam-foundation/moonbeam#3210) * NODE-161, deps: update Cargo * NODE-161, fix: Use DecodeWithMemTracking (paritytech/polkadot-sdk#7360) * NODE-161, feat: runtime: upgrade to EIP-7702 new APIs * NODE-161, Introduce a gas-based Storage limit per tx (polkadot-evm/frontier#1142), Support external account provider (polkadot-evm/frontier#1329) * NODE-161, fix: remove sc_transaction_pool * NODE-161, fix: add missing crates * NODE-161, fix: resolve typo * NODE-161, fix: remove Paramter * NODE-161, feat: Allow whitleisting contract deployer (polkadot-evm/frontier#1629) * NODE-161, feat: Update Treasury to Support Relay Chain Block Number Provider (paritytech/polkadot-sdk#3970) * NODE-161, feat: [Identity] Decouple usernames from identities (paritytech/polkadot-sdk#5554) * NODE-161, feat: Collective: dynamic deposit based on number of proposals (paritytech/polkadot-sdk#3151) * NODE-161, fix: add missing DecodeWithMemTracking * NODE-161, feat: Moves disabling logic into pallet-session (paritytech/polkadot-sdk#7581) * NODE-161, feat: Update Scheduler to have a configurable block provider (paritytech/polkadot-sdk#7441) * NODE-161, chore: add WeightInfo to pallet_transaction_payment * NODE-161, fix: add missing authorization_list * NODE-161, fix: replace to new_bare * NODE-161, fix: add missing DecodeWithMemTracking derive * NODE-161, fix: resolve type mismatch * NODE-161, fix: use system_version (paritytech/polkadot-sdk#4257) * NODE-161, fix: use Cow (paritytech/polkadot-sdk#5693) * NODE-161, feat: Generic slashing side-effects (paritytech/polkadot-sdk#5623) * NODE-161, feat: impl create_inherent (paritytech/polkadot-sdk#3685) * NODE-161, fix: remove generic parameter from on_unbalanceds * NODE-161, fix: update storage_at runtime api * NODE-161, fix: node: Remove network starter that is no longer needed (paritytech/polkadot-sdk#6400) * NODE-161, fix: node: update FullNetworkConfiguration params * NODE-161, fix: node: update TransactionPool * NODE-161, fix: node: substrate-offchain: upgrade hyper to v1 (paritytech/polkadot-sdk#5919) * NODE-161, fix: node: update service, rpc * NODE-161, chore: remove unused imports * chore: add cargo feature "metadata-hash" * NODE-161, fix: add cumulus primitives storage proof size HostFunctions * NODE-161, chore: update dependencies branch * NODE-161, chore: update to stable2506 * NODE-161, chore: remove `RuntimeEvent` from pallet::Config * NODE-161, fix: update test code * NODE-161, fix: make node-lts compatible * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, fix: use node.kill() * NODE-161, fix: resolve test codes * NODE-161, fix: remove console.log * NODE-161, chore: update tools package.json * feat: init blaze * fix: remove unused crate * import precompile-blaze * NODE-161, chore: add mbm migrator into runtimes * NODE-161, chore: add pallet_session migration * NODE-161, fix: new_full_parts -> new_full_parts_record_import * fix: resolve issues * NODE-161, deps: update runtime version (489) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * NODE-80 branch restructure (#127) * NODE-179, feat: init pallet storages * NODE-179, feat: init pallet extrinsics * NODE-179, chore: add locktime * NODE-179, feat: finalize fee rate * NODE-179, feature: impl coin selections * NODE-179, feat: check blaze activation state * NODE-179, feature: impl `remove_outbound_messages` for legacy mode * NODE-80: implement benchmarking (#121) * NODE-80, feature: impl benchmarking.rs & mock.rs * NODE-80, fix: benchmark * NODE-80, fix: benchmark * NODE-80, chore: update weights * fix: zero out proof size in weights * chore: resolve --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * fix: correctly use mocha with tsx (#133) * chore: version (#134) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com>
evm-dragonmm3
added a commit
to evm-dragonmm3/bifrost-node
that referenced
this pull request
Dec 10, 2025
* NODE-161, deps: update to stable2503 * NODE-161, fix: node: Replace TxPool RPC with Frontier implementation #moonbeam-foundation/moonbeam#3218 * NODE-161, fix: runtime: Fix weight limits in evm tracing runtimes (moonbeam-foundation/moonbeam#3210) * NODE-161, deps: update Cargo * NODE-161, fix: Use DecodeWithMemTracking (paritytech/polkadot-sdk#7360) * NODE-161, feat: runtime: upgrade to EIP-7702 new APIs * NODE-161, Introduce a gas-based Storage limit per tx (polkadot-evm/frontier#1142), Support external account provider (polkadot-evm/frontier#1329) * NODE-161, fix: remove sc_transaction_pool * NODE-161, fix: add missing crates * NODE-161, fix: resolve typo * NODE-161, fix: remove Paramter * NODE-161, feat: Allow whitleisting contract deployer (polkadot-evm/frontier#1629) * NODE-161, feat: Update Treasury to Support Relay Chain Block Number Provider (paritytech/polkadot-sdk#3970) * NODE-161, feat: [Identity] Decouple usernames from identities (paritytech/polkadot-sdk#5554) * NODE-161, feat: Collective: dynamic deposit based on number of proposals (paritytech/polkadot-sdk#3151) * NODE-161, fix: add missing DecodeWithMemTracking * NODE-161, feat: Moves disabling logic into pallet-session (paritytech/polkadot-sdk#7581) * NODE-161, feat: Update Scheduler to have a configurable block provider (paritytech/polkadot-sdk#7441) * NODE-161, chore: add WeightInfo to pallet_transaction_payment * NODE-161, fix: add missing authorization_list * NODE-161, fix: replace to new_bare * NODE-161, fix: add missing DecodeWithMemTracking derive * NODE-161, fix: resolve type mismatch * NODE-161, fix: use system_version (paritytech/polkadot-sdk#4257) * NODE-161, fix: use Cow (paritytech/polkadot-sdk#5693) * NODE-161, feat: Generic slashing side-effects (paritytech/polkadot-sdk#5623) * NODE-161, feat: impl create_inherent (paritytech/polkadot-sdk#3685) * NODE-161, fix: remove generic parameter from on_unbalanceds * NODE-161, fix: update storage_at runtime api * NODE-161, fix: node: Remove network starter that is no longer needed (paritytech/polkadot-sdk#6400) * NODE-161, fix: node: update FullNetworkConfiguration params * NODE-161, fix: node: update TransactionPool * NODE-161, fix: node: substrate-offchain: upgrade hyper to v1 (paritytech/polkadot-sdk#5919) * NODE-161, fix: node: update service, rpc * NODE-161, chore: remove unused imports * chore: add cargo feature "metadata-hash" * NODE-161, fix: add cumulus primitives storage proof size HostFunctions * NODE-161, chore: update dependencies branch * NODE-161, chore: update to stable2506 * NODE-161, chore: remove `RuntimeEvent` from pallet::Config * NODE-161, fix: update test code * NODE-161, fix: make node-lts compatible * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, fix: use node.kill() * NODE-161, fix: resolve test codes * NODE-161, fix: remove console.log * NODE-161, chore: update tools package.json * feat: init blaze * fix: remove unused crate * import precompile-blaze * NODE-161, chore: add mbm migrator into runtimes * NODE-161, chore: add pallet_session migration * NODE-161, fix: new_full_parts -> new_full_parts_record_import * fix: resolve issues * NODE-161, deps: update runtime version (489) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com>
evm-dragonmm3
added a commit
to evm-dragonmm3/bifrost-node
that referenced
this pull request
Dec 10, 2025
* Node 161 pectra update (#126) * NODE-161, deps: update to stable2503 * NODE-161, fix: node: Replace TxPool RPC with Frontier implementation #moonbeam-foundation/moonbeam#3218 * NODE-161, fix: runtime: Fix weight limits in evm tracing runtimes (moonbeam-foundation/moonbeam#3210) * NODE-161, deps: update Cargo * NODE-161, fix: Use DecodeWithMemTracking (paritytech/polkadot-sdk#7360) * NODE-161, feat: runtime: upgrade to EIP-7702 new APIs * NODE-161, Introduce a gas-based Storage limit per tx (polkadot-evm/frontier#1142), Support external account provider (polkadot-evm/frontier#1329) * NODE-161, fix: remove sc_transaction_pool * NODE-161, fix: add missing crates * NODE-161, fix: resolve typo * NODE-161, fix: remove Paramter * NODE-161, feat: Allow whitleisting contract deployer (polkadot-evm/frontier#1629) * NODE-161, feat: Update Treasury to Support Relay Chain Block Number Provider (paritytech/polkadot-sdk#3970) * NODE-161, feat: [Identity] Decouple usernames from identities (paritytech/polkadot-sdk#5554) * NODE-161, feat: Collective: dynamic deposit based on number of proposals (paritytech/polkadot-sdk#3151) * NODE-161, fix: add missing DecodeWithMemTracking * NODE-161, feat: Moves disabling logic into pallet-session (paritytech/polkadot-sdk#7581) * NODE-161, feat: Update Scheduler to have a configurable block provider (paritytech/polkadot-sdk#7441) * NODE-161, chore: add WeightInfo to pallet_transaction_payment * NODE-161, fix: add missing authorization_list * NODE-161, fix: replace to new_bare * NODE-161, fix: add missing DecodeWithMemTracking derive * NODE-161, fix: resolve type mismatch * NODE-161, fix: use system_version (paritytech/polkadot-sdk#4257) * NODE-161, fix: use Cow (paritytech/polkadot-sdk#5693) * NODE-161, feat: Generic slashing side-effects (paritytech/polkadot-sdk#5623) * NODE-161, feat: impl create_inherent (paritytech/polkadot-sdk#3685) * NODE-161, fix: remove generic parameter from on_unbalanceds * NODE-161, fix: update storage_at runtime api * NODE-161, fix: node: Remove network starter that is no longer needed (paritytech/polkadot-sdk#6400) * NODE-161, fix: node: update FullNetworkConfiguration params * NODE-161, fix: node: update TransactionPool * NODE-161, fix: node: substrate-offchain: upgrade hyper to v1 (paritytech/polkadot-sdk#5919) * NODE-161, fix: node: update service, rpc * NODE-161, chore: remove unused imports * chore: add cargo feature "metadata-hash" * NODE-161, fix: add cumulus primitives storage proof size HostFunctions * NODE-161, chore: update dependencies branch * NODE-161, chore: update to stable2506 * NODE-161, chore: remove `RuntimeEvent` from pallet::Config * NODE-161, fix: update test code * NODE-161, fix: make node-lts compatible * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, fix: use node.kill() * NODE-161, fix: resolve test codes * NODE-161, fix: remove console.log * NODE-161, chore: update tools package.json * feat: init blaze * fix: remove unused crate * import precompile-blaze * NODE-161, chore: add mbm migrator into runtimes * NODE-161, chore: add pallet_session migration * NODE-161, fix: new_full_parts -> new_full_parts_record_import * fix: resolve issues * NODE-161, deps: update runtime version (489) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * NODE-80 branch restructure (#127) * NODE-179, feat: init pallet storages * NODE-179, feat: init pallet extrinsics * NODE-179, chore: add locktime * NODE-179, feat: finalize fee rate * NODE-179, feature: impl coin selections * NODE-179, feat: check blaze activation state * NODE-179, feature: impl `remove_outbound_messages` for legacy mode * NODE-80: implement benchmarking (#121) * NODE-80, feature: impl benchmarking.rs & mock.rs * NODE-80, fix: benchmark * NODE-80, fix: benchmark * NODE-80, chore: update weights * fix: zero out proof size in weights * chore: resolve --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * fix: correctly use mocha with tsx (#133) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com>
evm-dragonmm3
added a commit
to evm-dragonmm3/bifrost-node
that referenced
this pull request
Dec 10, 2025
* Node 161 pectra update (#126) * NODE-161, deps: update to stable2503 * NODE-161, fix: node: Replace TxPool RPC with Frontier implementation #moonbeam-foundation/moonbeam#3218 * NODE-161, fix: runtime: Fix weight limits in evm tracing runtimes (moonbeam-foundation/moonbeam#3210) * NODE-161, deps: update Cargo * NODE-161, fix: Use DecodeWithMemTracking (paritytech/polkadot-sdk#7360) * NODE-161, feat: runtime: upgrade to EIP-7702 new APIs * NODE-161, Introduce a gas-based Storage limit per tx (polkadot-evm/frontier#1142), Support external account provider (polkadot-evm/frontier#1329) * NODE-161, fix: remove sc_transaction_pool * NODE-161, fix: add missing crates * NODE-161, fix: resolve typo * NODE-161, fix: remove Paramter * NODE-161, feat: Allow whitleisting contract deployer (polkadot-evm/frontier#1629) * NODE-161, feat: Update Treasury to Support Relay Chain Block Number Provider (paritytech/polkadot-sdk#3970) * NODE-161, feat: [Identity] Decouple usernames from identities (paritytech/polkadot-sdk#5554) * NODE-161, feat: Collective: dynamic deposit based on number of proposals (paritytech/polkadot-sdk#3151) * NODE-161, fix: add missing DecodeWithMemTracking * NODE-161, feat: Moves disabling logic into pallet-session (paritytech/polkadot-sdk#7581) * NODE-161, feat: Update Scheduler to have a configurable block provider (paritytech/polkadot-sdk#7441) * NODE-161, chore: add WeightInfo to pallet_transaction_payment * NODE-161, fix: add missing authorization_list * NODE-161, fix: replace to new_bare * NODE-161, fix: add missing DecodeWithMemTracking derive * NODE-161, fix: resolve type mismatch * NODE-161, fix: use system_version (paritytech/polkadot-sdk#4257) * NODE-161, fix: use Cow (paritytech/polkadot-sdk#5693) * NODE-161, feat: Generic slashing side-effects (paritytech/polkadot-sdk#5623) * NODE-161, feat: impl create_inherent (paritytech/polkadot-sdk#3685) * NODE-161, fix: remove generic parameter from on_unbalanceds * NODE-161, fix: update storage_at runtime api * NODE-161, fix: node: Remove network starter that is no longer needed (paritytech/polkadot-sdk#6400) * NODE-161, fix: node: update FullNetworkConfiguration params * NODE-161, fix: node: update TransactionPool * NODE-161, fix: node: substrate-offchain: upgrade hyper to v1 (paritytech/polkadot-sdk#5919) * NODE-161, fix: node: update service, rpc * NODE-161, chore: remove unused imports * chore: add cargo feature "metadata-hash" * NODE-161, fix: add cumulus primitives storage proof size HostFunctions * NODE-161, chore: update dependencies branch * NODE-161, chore: update to stable2506 * NODE-161, chore: remove `RuntimeEvent` from pallet::Config * NODE-161, fix: update test code * NODE-161, fix: make node-lts compatible * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, fix: use node.kill() * NODE-161, fix: resolve test codes * NODE-161, fix: remove console.log * NODE-161, chore: update tools package.json * feat: init blaze * fix: remove unused crate * import precompile-blaze * NODE-161, chore: add mbm migrator into runtimes * NODE-161, chore: add pallet_session migration * NODE-161, fix: new_full_parts -> new_full_parts_record_import * fix: resolve issues * NODE-161, deps: update runtime version (489) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * NODE-80 branch restructure (#127) * NODE-179, feat: init pallet storages * NODE-179, feat: init pallet extrinsics * NODE-179, chore: add locktime * NODE-179, feat: finalize fee rate * NODE-179, feature: impl coin selections * NODE-179, feat: check blaze activation state * NODE-179, feature: impl `remove_outbound_messages` for legacy mode * NODE-80: implement benchmarking (#121) * NODE-80, feature: impl benchmarking.rs & mock.rs * NODE-80, fix: benchmark * NODE-80, fix: benchmark * NODE-80, chore: update weights * fix: zero out proof size in weights * chore: resolve --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * fix: correctly use mocha with tsx (#133) * chore: version (#134) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com>
emersonrazor
added a commit
to emersonrazor/bifrost-node
that referenced
this pull request
Mar 19, 2026
* NODE-161, deps: update to stable2503 * NODE-161, fix: node: Replace TxPool RPC with Frontier implementation #moonbeam-foundation/moonbeam#3218 * NODE-161, fix: runtime: Fix weight limits in evm tracing runtimes (moonbeam-foundation/moonbeam#3210) * NODE-161, deps: update Cargo * NODE-161, fix: Use DecodeWithMemTracking (paritytech/polkadot-sdk#7360) * NODE-161, feat: runtime: upgrade to EIP-7702 new APIs * NODE-161, Introduce a gas-based Storage limit per tx (polkadot-evm/frontier#1142), Support external account provider (polkadot-evm/frontier#1329) * NODE-161, fix: remove sc_transaction_pool * NODE-161, fix: add missing crates * NODE-161, fix: resolve typo * NODE-161, fix: remove Paramter * NODE-161, feat: Allow whitleisting contract deployer (polkadot-evm/frontier#1629) * NODE-161, feat: Update Treasury to Support Relay Chain Block Number Provider (paritytech/polkadot-sdk#3970) * NODE-161, feat: [Identity] Decouple usernames from identities (paritytech/polkadot-sdk#5554) * NODE-161, feat: Collective: dynamic deposit based on number of proposals (paritytech/polkadot-sdk#3151) * NODE-161, fix: add missing DecodeWithMemTracking * NODE-161, feat: Moves disabling logic into pallet-session (paritytech/polkadot-sdk#7581) * NODE-161, feat: Update Scheduler to have a configurable block provider (paritytech/polkadot-sdk#7441) * NODE-161, chore: add WeightInfo to pallet_transaction_payment * NODE-161, fix: add missing authorization_list * NODE-161, fix: replace to new_bare * NODE-161, fix: add missing DecodeWithMemTracking derive * NODE-161, fix: resolve type mismatch * NODE-161, fix: use system_version (paritytech/polkadot-sdk#4257) * NODE-161, fix: use Cow (paritytech/polkadot-sdk#5693) * NODE-161, feat: Generic slashing side-effects (paritytech/polkadot-sdk#5623) * NODE-161, feat: impl create_inherent (paritytech/polkadot-sdk#3685) * NODE-161, fix: remove generic parameter from on_unbalanceds * NODE-161, fix: update storage_at runtime api * NODE-161, fix: node: Remove network starter that is no longer needed (paritytech/polkadot-sdk#6400) * NODE-161, fix: node: update FullNetworkConfiguration params * NODE-161, fix: node: update TransactionPool * NODE-161, fix: node: substrate-offchain: upgrade hyper to v1 (paritytech/polkadot-sdk#5919) * NODE-161, fix: node: update service, rpc * NODE-161, chore: remove unused imports * chore: add cargo feature "metadata-hash" * NODE-161, fix: add cumulus primitives storage proof size HostFunctions * NODE-161, chore: update dependencies branch * NODE-161, chore: update to stable2506 * NODE-161, chore: remove `RuntimeEvent` from pallet::Config * NODE-161, fix: update test code * NODE-161, fix: make node-lts compatible * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, fix: use node.kill() * NODE-161, fix: resolve test codes * NODE-161, fix: remove console.log * NODE-161, chore: update tools package.json * feat: init blaze * fix: remove unused crate * import precompile-blaze * NODE-161, chore: add mbm migrator into runtimes * NODE-161, chore: add pallet_session migration * NODE-161, fix: new_full_parts -> new_full_parts_record_import * fix: resolve issues * NODE-161, deps: update runtime version (489) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com>
emersonrazor
added a commit
to emersonrazor/bifrost-node
that referenced
this pull request
Mar 19, 2026
* Node 161 pectra update (#126) * NODE-161, deps: update to stable2503 * NODE-161, fix: node: Replace TxPool RPC with Frontier implementation #moonbeam-foundation/moonbeam#3218 * NODE-161, fix: runtime: Fix weight limits in evm tracing runtimes (moonbeam-foundation/moonbeam#3210) * NODE-161, deps: update Cargo * NODE-161, fix: Use DecodeWithMemTracking (paritytech/polkadot-sdk#7360) * NODE-161, feat: runtime: upgrade to EIP-7702 new APIs * NODE-161, Introduce a gas-based Storage limit per tx (polkadot-evm/frontier#1142), Support external account provider (polkadot-evm/frontier#1329) * NODE-161, fix: remove sc_transaction_pool * NODE-161, fix: add missing crates * NODE-161, fix: resolve typo * NODE-161, fix: remove Paramter * NODE-161, feat: Allow whitleisting contract deployer (polkadot-evm/frontier#1629) * NODE-161, feat: Update Treasury to Support Relay Chain Block Number Provider (paritytech/polkadot-sdk#3970) * NODE-161, feat: [Identity] Decouple usernames from identities (paritytech/polkadot-sdk#5554) * NODE-161, feat: Collective: dynamic deposit based on number of proposals (paritytech/polkadot-sdk#3151) * NODE-161, fix: add missing DecodeWithMemTracking * NODE-161, feat: Moves disabling logic into pallet-session (paritytech/polkadot-sdk#7581) * NODE-161, feat: Update Scheduler to have a configurable block provider (paritytech/polkadot-sdk#7441) * NODE-161, chore: add WeightInfo to pallet_transaction_payment * NODE-161, fix: add missing authorization_list * NODE-161, fix: replace to new_bare * NODE-161, fix: add missing DecodeWithMemTracking derive * NODE-161, fix: resolve type mismatch * NODE-161, fix: use system_version (paritytech/polkadot-sdk#4257) * NODE-161, fix: use Cow (paritytech/polkadot-sdk#5693) * NODE-161, feat: Generic slashing side-effects (paritytech/polkadot-sdk#5623) * NODE-161, feat: impl create_inherent (paritytech/polkadot-sdk#3685) * NODE-161, fix: remove generic parameter from on_unbalanceds * NODE-161, fix: update storage_at runtime api * NODE-161, fix: node: Remove network starter that is no longer needed (paritytech/polkadot-sdk#6400) * NODE-161, fix: node: update FullNetworkConfiguration params * NODE-161, fix: node: update TransactionPool * NODE-161, fix: node: substrate-offchain: upgrade hyper to v1 (paritytech/polkadot-sdk#5919) * NODE-161, fix: node: update service, rpc * NODE-161, chore: remove unused imports * chore: add cargo feature "metadata-hash" * NODE-161, fix: add cumulus primitives storage proof size HostFunctions * NODE-161, chore: update dependencies branch * NODE-161, chore: update to stable2506 * NODE-161, chore: remove `RuntimeEvent` from pallet::Config * NODE-161, fix: update test code * NODE-161, fix: make node-lts compatible * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, fix: use node.kill() * NODE-161, fix: resolve test codes * NODE-161, fix: remove console.log * NODE-161, chore: update tools package.json * feat: init blaze * fix: remove unused crate * import precompile-blaze * NODE-161, chore: add mbm migrator into runtimes * NODE-161, chore: add pallet_session migration * NODE-161, fix: new_full_parts -> new_full_parts_record_import * fix: resolve issues * NODE-161, deps: update runtime version (489) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * NODE-80 branch restructure (#127) * NODE-179, feat: init pallet storages * NODE-179, feat: init pallet extrinsics * NODE-179, chore: add locktime * NODE-179, feat: finalize fee rate * NODE-179, feature: impl coin selections * NODE-179, feat: check blaze activation state * NODE-179, feature: impl `remove_outbound_messages` for legacy mode * NODE-80: implement benchmarking (#121) * NODE-80, feature: impl benchmarking.rs & mock.rs * NODE-80, fix: benchmark * NODE-80, fix: benchmark * NODE-80, chore: update weights * fix: zero out proof size in weights * chore: resolve --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * fix: correctly use mocha with tsx (#133) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com>
emersonrazor
added a commit
to emersonrazor/bifrost-node
that referenced
this pull request
Mar 19, 2026
* Node 161 pectra update (#126) * NODE-161, deps: update to stable2503 * NODE-161, fix: node: Replace TxPool RPC with Frontier implementation #moonbeam-foundation/moonbeam#3218 * NODE-161, fix: runtime: Fix weight limits in evm tracing runtimes (moonbeam-foundation/moonbeam#3210) * NODE-161, deps: update Cargo * NODE-161, fix: Use DecodeWithMemTracking (paritytech/polkadot-sdk#7360) * NODE-161, feat: runtime: upgrade to EIP-7702 new APIs * NODE-161, Introduce a gas-based Storage limit per tx (polkadot-evm/frontier#1142), Support external account provider (polkadot-evm/frontier#1329) * NODE-161, fix: remove sc_transaction_pool * NODE-161, fix: add missing crates * NODE-161, fix: resolve typo * NODE-161, fix: remove Paramter * NODE-161, feat: Allow whitleisting contract deployer (polkadot-evm/frontier#1629) * NODE-161, feat: Update Treasury to Support Relay Chain Block Number Provider (paritytech/polkadot-sdk#3970) * NODE-161, feat: [Identity] Decouple usernames from identities (paritytech/polkadot-sdk#5554) * NODE-161, feat: Collective: dynamic deposit based on number of proposals (paritytech/polkadot-sdk#3151) * NODE-161, fix: add missing DecodeWithMemTracking * NODE-161, feat: Moves disabling logic into pallet-session (paritytech/polkadot-sdk#7581) * NODE-161, feat: Update Scheduler to have a configurable block provider (paritytech/polkadot-sdk#7441) * NODE-161, chore: add WeightInfo to pallet_transaction_payment * NODE-161, fix: add missing authorization_list * NODE-161, fix: replace to new_bare * NODE-161, fix: add missing DecodeWithMemTracking derive * NODE-161, fix: resolve type mismatch * NODE-161, fix: use system_version (paritytech/polkadot-sdk#4257) * NODE-161, fix: use Cow (paritytech/polkadot-sdk#5693) * NODE-161, feat: Generic slashing side-effects (paritytech/polkadot-sdk#5623) * NODE-161, feat: impl create_inherent (paritytech/polkadot-sdk#3685) * NODE-161, fix: remove generic parameter from on_unbalanceds * NODE-161, fix: update storage_at runtime api * NODE-161, fix: node: Remove network starter that is no longer needed (paritytech/polkadot-sdk#6400) * NODE-161, fix: node: update FullNetworkConfiguration params * NODE-161, fix: node: update TransactionPool * NODE-161, fix: node: substrate-offchain: upgrade hyper to v1 (paritytech/polkadot-sdk#5919) * NODE-161, fix: node: update service, rpc * NODE-161, chore: remove unused imports * chore: add cargo feature "metadata-hash" * NODE-161, fix: add cumulus primitives storage proof size HostFunctions * NODE-161, chore: update dependencies branch * NODE-161, chore: update to stable2506 * NODE-161, chore: remove `RuntimeEvent` from pallet::Config * NODE-161, fix: update test code * NODE-161, fix: make node-lts compatible * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, chore: update `test_btc_registration_pool.ts` * NODE-161, fix: use node.kill() * NODE-161, fix: resolve test codes * NODE-161, fix: remove console.log * NODE-161, chore: update tools package.json * feat: init blaze * fix: remove unused crate * import precompile-blaze * NODE-161, chore: add mbm migrator into runtimes * NODE-161, chore: add pallet_session migration * NODE-161, fix: new_full_parts -> new_full_parts_record_import * fix: resolve issues * NODE-161, deps: update runtime version (489) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * NODE-80 branch restructure (#127) * NODE-179, feat: init pallet storages * NODE-179, feat: init pallet extrinsics * NODE-179, chore: add locktime * NODE-179, feat: finalize fee rate * NODE-179, feature: impl coin selections * NODE-179, feat: check blaze activation state * NODE-179, feature: impl `remove_outbound_messages` for legacy mode * NODE-80: implement benchmarking (#121) * NODE-80, feature: impl benchmarking.rs & mock.rs * NODE-80, fix: benchmark * NODE-80, fix: benchmark * NODE-80, chore: update weights * fix: zero out proof size in weights * chore: resolve --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com> * fix: correctly use mocha with tsx (#133) * chore: version (#134) --------- Co-authored-by: dnjscksdn98 <dnjscksdn98@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduction
This pull request tackles the challenge of unsustainable storage growth in our blockchain, a complex issue constrained by the Evm gasometer's ability to record only gas usage. Storage growth refers to the new storage added on-chain after an execution. Without control, this can lead to storage congestions.
Approach: Introduce a gas-based Storage limit
The proposed solution tackles the problem of unsustainable storage growth within blockchains by introducing a concept of mapping storage to gas. By translating bytes into gas units and setting a storage limit per transaction, it establishes a flexible and effective control mechanism. The proposed solution maintains the existing behaviour of the EVM gasometer. It introduces controls for storage growth without altering the core gas tracking system within the EVM.
The core of this approach revolves around the definition of a ratio that encapsulates the relationship between storage growth (in bytes) and gas. For example:
RATIO=BLOCK_GAS_LIMIT/BLOCK_STORAGE_LIMITOnce this ratio is established, we can further define a transaction-wide storage growth limit:
TX_STORAGE_LIMIT=TX_GAS_LIMIT/RATIOThe storage growth is dynamically monitored throughout the execution of the transaction. Each time the EVM steps into an opcode, the corresponding storage growth is calculated and recorded. Should the recorded storage growth exceed the pre-established
TX_STORAGE_LIMIT, the transaction will trigger anOutOfGaserror.Example
Given:
BLOCK_GAS_LIMIT= 15,000,000 (Maximum gas per block)BLOCK_STORAGE_LIMIT= 40 * 1024 bytes (40 KB per block)The ratio between gas and storage is:
RATIO=BLOCK_GAS_LIMIT/BLOCK_STORAGE_LIMIT= 15,000,000 / (40 * 1024) ≈ 366For a transaction with
TX_GAS_LIMIT= 1,000,000, the storage limit is:TX_STORAGE_LIMIT=TX_GAS_LIMIT/RATIO= 1,000,000 / 366 ≈ 2,732 bytesChanges Introduced
The following changes are introduced to address storage growth within the EVM:
GasLimitStorageGrowthRatio: A new configurable parameter inpallet-evm, defining the ratio of gas to storage. It serves to control the mapping of storage growth to gas. When set to 0, it disables recording the storage growth.StorageMeter: An utility struct withinSubstrateStackStateto track and manage storage growth during execution.SSTORE, Storage growth is recorded during pre-execution inrecord_external_dynamic_opcode_cost, which is called frompre_validatein the executor (that is per each evm runtime step).CREATEandCREATE2, since the bytecode size to be stored is unknown before execution, recording occurs inrecord_external_operationduring execution, specifically incleanup_for_createbefore storing the contract bytecode.