diff --git a/frame/babel/Cargo.toml b/frame/babel/Cargo.toml
index e405e2cf..6aeb92de 100644
--- a/frame/babel/Cargo.toml
+++ b/frame/babel/Cargo.toml
@@ -14,7 +14,7 @@ cosmwasm-std = { workspace = true, default-features = false, optional = true }
cosmwasm-vm = { workspace = true, default-features = false, optional = true }
cosmwasm-vm-wasmi = { workspace = true, default-features = false, optional = true }
ethereum = { version = "0.15.0", default-features = false, optional = true }
-fp-evm = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, optional = true }
+fp-evm = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, optional = true }
frame-support = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409", default-features = false }
frame-system = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409", default-features = false }
hex-literal = "0.4"
@@ -30,17 +30,17 @@ pallet-cosmos-x-auth-signing = { workspace = true, default-features = false, opt
pallet-cosmos-x-bank = { workspace = true, default-features = false, optional = true }
pallet-cosmos-x-wasm = { workspace = true, default-features = false, optional = true }
pallet-cosmwasm = { workspace = true, default-features = false, optional = true }
-pallet-ethereum = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, optional = true }
-pallet-evm = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, optional = true }
+pallet-ethereum = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, optional = true }
+pallet-evm = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, optional = true }
pallet-evm-precompileset-assets-erc20 = { workspace = true, optional = true }
pallet-evm-precompile-balances-erc20 = { workspace = true, optional = true }
-pallet-evm-precompile-blake2 = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, optional = true }
-pallet-evm-precompile-bn128 = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, optional = true }
-pallet-evm-precompile-modexp = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, optional = true }
-pallet-evm-precompile-simple = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, optional = true }
+pallet-evm-precompile-blake2 = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, optional = true }
+pallet-evm-precompile-bn128 = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, optional = true }
+pallet-evm-precompile-modexp = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, optional = true }
+pallet-evm-precompile-simple = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, optional = true }
pallet-multimap = { workspace = true, default-features = false }
parity-scale-codec = { version = "3.6", default-features = false, features = ["derive"] }
-precompile-utils = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, optional = true }
+precompile-utils = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, optional = true }
scale-info = { version = "2.11", default-features = false, features = ["derive"] }
serde = { version = "1.0.210", default-features = false, features = ["derive"], optional = true }
serde-json-wasm = { version = "1.0.1", default-features = false, optional = true }
@@ -50,6 +50,20 @@ sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", branch = "sta
[dev-dependencies]
hex = "0.4.3"
+# substrate
+pallet-assets = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" }
+pallet-balances = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" }
+pallet-sudo = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" }
+pallet-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" }
+# frontier
+pallet-ethereum = { git = "https://github.com/noirhq/frontier", branch = "stable2409" }
+pallet-evm = { git = "https://github.com/noirhq/frontier", branch = "stable2409" }
+# noir
+np-runtime = { workspace = true, default-features = true }
+pallet-cosmos = { workspace = true, default-features = true }
+pallet-cosmos-x-auth = { workspace = true, default-features = false }
+pallet-cosmwasm = { workspace = true, default-features = true }
+pallet-multimap = { workspace = true, default-features = true }
[features]
default = ["std", "pallet"]
diff --git a/frame/babel/src/lib.rs b/frame/babel/src/lib.rs
index 8f4512b5..bc3938e9 100644
--- a/frame/babel/src/lib.rs
+++ b/frame/babel/src/lib.rs
@@ -26,6 +26,8 @@ pub mod cosmos;
#[cfg(feature = "ethereum")]
pub mod ethereum;
pub mod extensions;
+#[cfg(test)]
+mod mock;
pub use extensions::unify_account::UnifyAccount;
pub use np_babel::VarAddress;
diff --git a/frame/babel/src/mock.rs b/frame/babel/src/mock.rs
new file mode 100644
index 00000000..63c5f809
--- /dev/null
+++ b/frame/babel/src/mock.rs
@@ -0,0 +1,352 @@
+// This file is part of Noir.
+
+// Copyright (c) Haderech Pte. Ltd.
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+use crate as frame_babel;
+use cosmos_sdk_proto::{
+ cosmos::bank::v1beta1::MsgSend,
+ cosmwasm::wasm::v1::{
+ MsgExecuteContract, MsgInstantiateContract2, MsgMigrateContract, MsgStoreCode,
+ MsgUpdateAdmin,
+ },
+ Any,
+};
+use frame_babel::{
+ cosmos::{
+ address::{AccountToAddr, AddressMapping as CosmosAddressMapping},
+ precompile::Precompiles,
+ },
+ ethereum::{AddressMapping as EthereumAddressMapping, EnsureAddress},
+ extensions::unify_account,
+ VarAddress,
+};
+use frame_support::{
+ derive_impl,
+ instances::{Instance1, Instance2},
+ parameter_types,
+ traits::{ConstU32, Contains, NeverEnsureOrigin},
+ PalletId,
+};
+use frame_system::EnsureRoot;
+use np_cosmos::traits::CosmosHub;
+use np_runtime::{AccountId32, MultiSigner};
+use pallet_cosmos::{
+ config_preludes::{MaxDenomLimit, NativeAssetId},
+ types::DenomOf,
+};
+use pallet_cosmos_types::{
+ any_match,
+ coin::DecCoin,
+ context::{self, Context},
+ msgservice,
+};
+use pallet_cosmos_x_auth::AnteDecorators;
+use pallet_cosmos_x_auth_signing::{
+ sign_mode_handler::SignModeHandler, sign_verifiable_tx::SigVerifiableTx,
+};
+use pallet_cosmos_x_bank::MsgSendHandler;
+use pallet_cosmos_x_wasm::msgs::{
+ MsgExecuteContractHandler, MsgInstantiateContract2Handler, MsgMigrateContractHandler,
+ MsgStoreCodeHandler, MsgUpdateAdminHandler,
+};
+use pallet_cosmwasm::instrument::CostRules;
+use pallet_multimap::traits::UniqueMap;
+use sp_core::{ConstU128, H256};
+use sp_runtime::{
+ traits::{IdentityLookup, TryConvert},
+ BoundedVec,
+};
+
+type AccountId = AccountId32;
+type Balance = u128;
+type AssetId = u32;
+type Hash = H256;
+
+#[frame_support::runtime]
+mod runtime {
+ #[runtime::runtime]
+ #[runtime::derive(
+ RuntimeCall,
+ RuntimeEvent,
+ RuntimeError,
+ RuntimeOrigin,
+ RuntimeFreezeReason,
+ RuntimeHoldReason,
+ RuntimeSlashReason,
+ RuntimeLockId,
+ RuntimeTask
+ )]
+ pub struct Test;
+
+ #[runtime::pallet_index(0)]
+ pub type System = frame_system;
+ #[runtime::pallet_index(1)]
+ pub type Timestamp = pallet_timestamp;
+
+ #[runtime::pallet_index(10)]
+ pub type Balances = pallet_balances;
+ #[runtime::pallet_index(11)]
+ pub type Assets = pallet_assets;
+
+ #[runtime::pallet_index(20)]
+ pub type Sudo = pallet_sudo;
+
+ #[runtime::pallet_index(30)]
+ pub type Ethereum = pallet_ethereum;
+ #[runtime::pallet_index(31)]
+ pub type EVM = pallet_evm;
+
+ #[runtime::pallet_index(40)]
+ pub type Cosmos = pallet_cosmos;
+ #[runtime::pallet_index(41)]
+ pub type Cosmwasm = pallet_cosmwasm;
+
+ #[runtime::pallet_index(50)]
+ pub type AddressMap = pallet_multimap;
+ #[runtime::pallet_index(51)]
+ pub type AssetMap = pallet_multimap;
+ #[runtime::pallet_index(100)]
+ pub type Babel = frame_babel;
+}
+
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
+impl frame_system::Config for Test {
+ type AccountId = AccountId;
+ type Block = frame_system::mocking::MockBlock;
+ type Lookup = IdentityLookup;
+ type AccountData = pallet_balances::AccountData;
+}
+
+#[derive_impl(pallet_timestamp::config_preludes::TestDefaultConfig)]
+impl pallet_timestamp::Config for Test {}
+
+parameter_types! {
+ pub const ExistentialDeposit: Balance = 1;
+}
+#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)]
+impl pallet_balances::Config for Test {
+ type Balance = Balance;
+ type AccountStore = System;
+ type ExistentialDeposit = ExistentialDeposit;
+}
+
+#[derive_impl(pallet_assets::config_preludes::TestDefaultConfig)]
+impl pallet_assets::Config for Test {
+ type Balance = Balance;
+ type AssetId = AssetId;
+ type Currency = Balances;
+ type CreateOrigin = NeverEnsureOrigin;
+ type ForceOrigin = EnsureRoot;
+ type Freezer = ();
+ type AssetDeposit = ConstU128<500>;
+ type AssetAccountDeposit = ConstU128<500>;
+ type MetadataDepositBase = ConstU128<0>;
+ type MetadataDepositPerByte = ConstU128<0>;
+ type ApprovalDeposit = ConstU128<0>;
+}
+
+#[derive_impl(pallet_sudo::config_preludes::TestDefaultConfig)]
+impl pallet_sudo::Config for Test {}
+
+#[derive_impl(pallet_ethereum::config_preludes::TestDefaultConfig)]
+impl pallet_ethereum::Config for Test {}
+
+#[derive_impl(pallet_evm::config_preludes::TestDefaultConfig)]
+impl pallet_evm::Config for Test {
+ type CallOrigin = EnsureAddress;
+ type WithdrawOrigin = EnsureAddress;
+ type AddressMapping = EthereumAddressMapping;
+ type AccountProvider = pallet_evm::FrameSystemAccountProvider;
+ type BlockHashMapping = pallet_evm::SubstrateBlockHashMapping;
+ type Currency = Balances;
+ type Runner = pallet_evm::runner::stack::Runner;
+ type Timestamp = Timestamp;
+}
+
+parameter_types! {
+ pub const NativeDenom: &'static str = "antt";
+}
+
+pub struct MinGasPrices;
+impl context::traits::MinGasPrices for MinGasPrices {
+ fn min_prices() -> Vec {
+ vec![DecCoin { denom: NativeDenom::get().to_string(), amount: 1 }]
+ }
+}
+
+pub struct AssetToDenom;
+impl TryConvert for AssetToDenom {
+ fn try_convert(denom: String) -> Result {
+ if denom == NativeDenom::get() {
+ Ok(NativeAssetId::get())
+ } else {
+ let denom_raw: BoundedVec =
+ denom.as_bytes().to_vec().try_into().map_err(|_| denom.clone())?;
+ AssetMap::find_key(denom_raw).ok_or(denom.clone())
+ }
+ }
+}
+impl TryConvert for AssetToDenom {
+ fn try_convert(asset_id: AssetId) -> Result {
+ if asset_id == NativeAssetId::get() {
+ Ok(NativeDenom::get().to_string())
+ } else {
+ let denom =
+ >>::get(asset_id)
+ .ok_or(asset_id)?;
+ String::from_utf8(denom.into()).map_err(|_| asset_id)
+ }
+ }
+}
+
+pub struct MsgFilter;
+impl Contains for MsgFilter {
+ fn contains(msg: &Any) -> bool {
+ any_match!(
+ msg, {
+ MsgSend => true,
+ MsgStoreCode => true,
+ MsgInstantiateContract2 => true,
+ MsgExecuteContract => true,
+ MsgMigrateContract => true,
+ MsgUpdateAdmin => true,
+ },
+ false
+ )
+ }
+}
+
+pub struct MsgServiceRouter;
+impl msgservice::traits::MsgServiceRouter for MsgServiceRouter {
+ fn route(msg: &Any) -> Option>> {
+ any_match!(
+ msg, {
+ MsgSend => Some(Box::>::default()),
+ MsgStoreCode => Some(Box::>::default()),
+ MsgInstantiateContract2 => Some(Box::>::default()),
+ MsgExecuteContract => Some(Box::>::default()),
+ MsgMigrateContract => Some(Box::>::default()),
+ MsgUpdateAdmin => Some(Box::>::default()),
+ },
+ None
+ )
+ }
+}
+
+#[derive_impl(pallet_cosmos::config_preludes::TestDefaultConfig)]
+impl pallet_cosmos::Config for Test {
+ type AddressMapping = CosmosAddressMapping;
+ type Balance = Balance;
+ type AssetId = AssetId;
+ type NativeAsset = Balances;
+ type Assets = Assets;
+ type NativeDenom = NativeDenom;
+ type MinGasPrices = MinGasPrices;
+ type AssetToDenom = AssetToDenom;
+ type Context = Context;
+ type ChainInfo = CosmosHub;
+ type AnteHandler = AnteDecorators;
+ type MsgFilter = MsgFilter;
+ type MsgServiceRouter = MsgServiceRouter;
+ type SigVerifiableTx = SigVerifiableTx;
+ type SignModeHandler = SignModeHandler;
+}
+
+parameter_types! {
+ pub const CosmwasmPalletId: PalletId = PalletId(*b"cosmwasm");
+ pub const MaxContractLabelSize: u32 = 64;
+ pub const MaxContractTrieIdSize: u32 = Hash::len_bytes() as u32;
+ pub const MaxInstantiateSaltSize: u32 = 128;
+ pub const MaxFundsAssets: u32 = 32;
+ pub const CodeTableSizeLimit: u32 = 4096;
+ pub const CodeGlobalVariableLimit: u32 = 256;
+ pub const CodeParameterLimit: u32 = 128;
+ pub const CodeBranchTableSizeLimit: u32 = 256;
+ pub const CodeStorageByteDeposit: u32 = 1_000_000;
+ pub const ContractStorageByteReadPrice: u32 = 1;
+ pub const ContractStorageByteWritePrice: u32 = 1;
+ pub WasmCostRules: CostRules = Default::default();
+}
+
+impl pallet_cosmwasm::Config for Test {
+ const MAX_FRAMES: u8 = 64;
+ type RuntimeEvent = RuntimeEvent;
+ type AccountIdExtended = AccountId;
+ type PalletId = CosmwasmPalletId;
+ type MaxCodeSize = ConstU32<{ 1024 * 1024 }>;
+ type MaxInstrumentedCodeSize = ConstU32<{ 2 * 1024 * 1024 }>;
+ type MaxMessageSize = ConstU32<{ 64 * 1024 }>;
+ type AccountToAddr = AccountToAddr;
+ type AssetToDenom = AssetToDenom;
+ type Balance = Balance;
+ type AssetId = AssetId;
+ type Assets = Assets;
+ type NativeAsset = Balances;
+ type ChainInfo = CosmosHub;
+ type MaxContractLabelSize = MaxContractLabelSize;
+ type MaxContractTrieIdSize = MaxContractTrieIdSize;
+ type MaxInstantiateSaltSize = MaxInstantiateSaltSize;
+ type MaxFundsAssets = MaxFundsAssets;
+
+ type CodeTableSizeLimit = CodeTableSizeLimit;
+ type CodeGlobalVariableLimit = CodeGlobalVariableLimit;
+ type CodeStackLimit = ConstU32<{ u32::MAX }>;
+
+ type CodeParameterLimit = CodeParameterLimit;
+ type CodeBranchTableSizeLimit = CodeBranchTableSizeLimit;
+ type CodeStorageByteDeposit = CodeStorageByteDeposit;
+ type ContractStorageByteReadPrice = ContractStorageByteReadPrice;
+ type ContractStorageByteWritePrice = ContractStorageByteWritePrice;
+
+ type WasmCostRules = WasmCostRules;
+ type UnixTime = Timestamp;
+ type WeightInfo = pallet_cosmwasm::weights::SubstrateWeight;
+
+ type PalletHook = Precompiles;
+
+ type UploadWasmOrigin = frame_system::EnsureSigned;
+
+ type ExecuteWasmOrigin = frame_system::EnsureSigned;
+
+ type NativeAssetId = NativeAssetId;
+
+ type NativeDenom = NativeDenom;
+}
+
+#[derive_impl(pallet_multimap::config_preludes::TestDefaultConfig)]
+impl pallet_multimap::Config for Test {
+ type Key = AccountId;
+ type Value = VarAddress;
+ type CapacityPerKey = ConstU32<{ VarAddress::variant_count() }>;
+}
+
+#[derive_impl(pallet_multimap::config_preludes::TestDefaultConfig)]
+impl pallet_multimap::Config for Test {
+ type Key = AssetId;
+ type Value = DenomOf;
+}
+
+impl frame_babel::Config for Test {
+ type AddressMap = AddressMap;
+ type AssetMap = AssetMap;
+ type Balance = Balance;
+}
+
+impl unify_account::Config for Test {
+ type AddressMap = AddressMap;
+ type DrainBalance = ();
+}
diff --git a/frame/cosmos/src/lib.rs b/frame/cosmos/src/lib.rs
index 7e838dc4..533d38ae 100644
--- a/frame/cosmos/src/lib.rs
+++ b/frame/cosmos/src/lib.rs
@@ -203,7 +203,6 @@ pub mod pallet {
type RuntimeEvent: From + IsType<::RuntimeEvent>;
/// Weight information for extrinsics in this pallet.
- #[pallet::no_default]
type WeightInfo: WeightInfo;
/// Converter between Weight and Gas.
@@ -253,13 +252,13 @@ pub mod pallet {
/// The gas limit for simulation.
#[pallet::constant]
- #[pallet::no_default]
type SimulationGasLimit: Get;
}
pub mod config_preludes {
use super::*;
use frame_support::{derive_impl, parameter_types, traits::Everything};
+ use frame_system::limits::BlockWeights;
use pallet_cosmos_types::context::Context;
pub struct WeightToGas;
@@ -279,13 +278,14 @@ pub mod pallet {
pub const TxSigLimit: u64 = 7;
pub const MaxDenomLimit: u32 = 128;
pub const NativeAssetId: u32 = 0;
+ pub SimulationGasLimit: u64 = BlockWeights::default().base_block.ref_time();
}
pub struct TestDefaultConfig;
- #[derive_impl(frame_system::config_preludes::TestDefaultConfig, no_aggregated_types)]
+ #[derive_impl(frame_system::config_preludes::SolochainDefaultConfig, no_aggregated_types)]
impl frame_system::DefaultConfig for TestDefaultConfig {}
- #[frame_support::register_default_impl(TestDefaultConfig)]
+ #[register_default_impl(TestDefaultConfig)]
impl DefaultConfig for TestDefaultConfig {
#[inject_runtime_type]
type RuntimeEvent = ();
@@ -299,6 +299,8 @@ pub mod pallet {
type TxSigLimit = TxSigLimit;
type MaxDenomLimit = MaxDenomLimit;
type MsgFilter = Everything;
+ type WeightInfo = ();
+ type SimulationGasLimit = SimulationGasLimit;
}
}
diff --git a/frame/cosmos/src/weights.rs b/frame/cosmos/src/weights.rs
index 43fde031..bed06428 100644
--- a/frame/cosmos/src/weights.rs
+++ b/frame/cosmos/src/weights.rs
@@ -17,12 +17,19 @@
use core::marker::PhantomData;
use frame_support::{dispatch::DispatchClass, weights::Weight};
+use frame_system::limits::BlockWeights;
use sp_core::Get;
pub trait WeightInfo {
fn base_weight() -> Weight;
}
+impl WeightInfo for () {
+ fn base_weight() -> Weight {
+ BlockWeights::default().per_class.get(DispatchClass::Normal).base_extrinsic
+ }
+}
+
pub struct CosmosWeight(PhantomData);
impl WeightInfo for CosmosWeight
where
diff --git a/primitives/runtime/Cargo.toml b/primitives/runtime/Cargo.toml
index 03e2d113..f9b04241 100644
--- a/primitives/runtime/Cargo.toml
+++ b/primitives/runtime/Cargo.toml
@@ -10,7 +10,7 @@ publish = false
[dependencies]
buidl = { version = "0.1.1", default-features = false, features = ["derive"] }
const-hex = { version = "1.12", default-features = false }
-fp-self-contained = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false }
+fp-self-contained = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false }
frame-support = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409", default-features = false }
parity-scale-codec = { version = "3.6", default-features = false, features = ["derive"] }
scale-info = { version = "2.11", default-features = false, features = ["derive"] }
diff --git a/vendor/moonbeam/precompiles/assets-erc20/Cargo.toml b/vendor/moonbeam/precompiles/assets-erc20/Cargo.toml
index 2c259bb4..358dffca 100644
--- a/vendor/moonbeam/precompiles/assets-erc20/Cargo.toml
+++ b/vendor/moonbeam/precompiles/assets-erc20/Cargo.toml
@@ -23,9 +23,9 @@ sp-io = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable24
sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409", default-features = false }
# Frontier
-fp-evm = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false }
-pallet-evm = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, features = ["forbid-evm-reentrancy"] }
-precompile-utils = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false }
+fp-evm = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false }
+pallet-evm = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, features = ["forbid-evm-reentrancy"] }
+precompile-utils = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false }
# Moonkit
#moonkit-xcm-primitives = { workspace = true }
@@ -37,7 +37,7 @@ serde = "1.0"
sha3 = "0.10"
# Moonbeam
-precompile-utils = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", features = ["testing"] }
+precompile-utils = { git = "https://github.com/noirhq/frontier", branch = "stable2409", features = ["testing"] }
[features]
default = ["std"]
diff --git a/vendor/moonbeam/precompiles/balances-erc20/Cargo.toml b/vendor/moonbeam/precompiles/balances-erc20/Cargo.toml
index 8cc78098..7549ff1a 100644
--- a/vendor/moonbeam/precompiles/balances-erc20/Cargo.toml
+++ b/vendor/moonbeam/precompiles/balances-erc20/Cargo.toml
@@ -22,9 +22,9 @@ sp-io = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable24
sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409", default-features = false }
# Frontier
-fp-evm = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false }
-pallet-evm = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false, features = ["forbid-evm-reentrancy"] }
-precompile-utils = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", default-features = false }
+fp-evm = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false }
+pallet-evm = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false, features = ["forbid-evm-reentrancy"] }
+precompile-utils = { git = "https://github.com/noirhq/frontier", branch = "stable2409", default-features = false }
[dev-dependencies]
hex-literal = "0.4"
@@ -33,7 +33,7 @@ serde = "1.0"
sha3 = "0.10"
# Moonbeam
-precompile-utils = { git = "https://github.com/polkadot-evm/frontier", rev = "aacf5a4e", features = ["testing"] }
+precompile-utils = { git = "https://github.com/noirhq/frontier", branch = "stable2409", features = ["testing"] }
scale-info = { version = "2.11", features = ["derive"] }