From 675fe3bbabfed7345f4fece5f0e1c604617bee58 Mon Sep 17 00:00:00 2001 From: Nikita Smirnov Date: Fri, 13 Oct 2023 11:11:12 +0200 Subject: [PATCH 1/6] Fix clippy warnings in dex-manager --- pallets/dex-manager/src/lib.rs | 12 +++++------- pallets/dex-manager/src/migrations/tests.rs | 2 +- pallets/dex-manager/src/mock.rs | 6 +++--- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/pallets/dex-manager/src/lib.rs b/pallets/dex-manager/src/lib.rs index c099a3f99b..c6d9b12322 100644 --- a/pallets/dex-manager/src/lib.rs +++ b/pallets/dex-manager/src/lib.rs @@ -29,8 +29,6 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #![cfg_attr(not(feature = "std"), no_std)] -// TODO #167: fix clippy warnings -#![allow(clippy::all)] use assets::AssetIdOf; use common::prelude::EnsureDEXManager; @@ -63,10 +61,10 @@ impl EnsureDEXManager for Pall { match origin.into() { Ok(RawOrigin::Signed(who)) => { - let dex_info = Self::get_dex_info(&dex_id)?; + let dex_info = Self::get_dex_info(dex_id)?; // If DEX is public, anyone can manage it, otherwise confirm ownership. if !dex_info.is_public || mode != ManagementMode::Public { - Self::ensure_direct_manager(&dex_id, &who)?; + Self::ensure_direct_manager(dex_id, &who)?; } Ok(Some(who)) } @@ -77,12 +75,12 @@ impl EnsureDEXManager for Pall impl DexInfoProvider> for Pallet { fn get_dex_info(dex_id: &T::DEXId) -> Result, DispatchError> { - Ok(DEXInfos::::get(&dex_id).ok_or(Error::::DEXDoesNotExist)?) + Ok(DEXInfos::::get(dex_id).ok_or(Error::::DEXDoesNotExist)?) } fn ensure_dex_exists(dex_id: &T::DEXId) -> DispatchResult { ensure!( - DEXInfos::::contains_key(&dex_id), + DEXInfos::::contains_key(dex_id), Error::::DEXDoesNotExist ); Ok(()) @@ -161,7 +159,7 @@ pub mod pallet { impl GenesisBuild for GenesisConfig { fn build(&self) { self.dex_list.iter().for_each(|(dex_id, dex_info)| { - DEXInfos::::insert(dex_id.clone(), dex_info); + DEXInfos::::insert(*dex_id, dex_info); }) } } diff --git a/pallets/dex-manager/src/migrations/tests.rs b/pallets/dex-manager/src/migrations/tests.rs index cc0d84e3dc..fa143fa640 100644 --- a/pallets/dex-manager/src/migrations/tests.rs +++ b/pallets/dex-manager/src/migrations/tests.rs @@ -40,7 +40,7 @@ fn test() { super::migrate::(); for dex_info in DEXInfos::::iter_values() { - assert_eq!(dex_info.synthetic_base_asset_id, XST.into()); + assert_eq!(dex_info.synthetic_base_asset_id, XST); } assert_eq!(Pallet::::on_chain_storage_version(), 2); }); diff --git a/pallets/dex-manager/src/mock.rs b/pallets/dex-manager/src/mock.rs index b6080ea99a..745b23eede 100644 --- a/pallets/dex-manager/src/mock.rs +++ b/pallets/dex-manager/src/mock.rs @@ -36,7 +36,7 @@ use currencies::BasicCurrencyAdapter; use frame_support::traits::{Everything, GenesisBuild}; use frame_support::weights::Weight; use frame_support::{construct_runtime, parameter_types}; -use frame_system; + use permissions::Scope; use sp_core::H256; use sp_runtime::testing::Header; @@ -195,8 +195,8 @@ impl Default for ExtBuilder { Self { initial_dex_list: Vec::new(), endowed_accounts: vec![ - (ALICE, XOR, 1_000_000_000_000_000_000u128.into()), - (BOB, DOT, 1_000_000_000_000_000_000u128.into()), + (ALICE, XOR, 1_000_000_000_000_000_000u128), + (BOB, DOT, 1_000_000_000_000_000_000u128), ], initial_permission_owners: Vec::new(), initial_permissions: Vec::new(), From dc2751838108905b1d46305abfe0ecd787572632 Mon Sep 17 00:00:00 2001 From: Nikita Smirnov Date: Fri, 13 Oct 2023 11:14:54 +0200 Subject: [PATCH 2/6] Fix clippy warnings in eth-bridge-runtime-api --- pallets/eth-bridge/runtime-api/src/lib.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pallets/eth-bridge/runtime-api/src/lib.rs b/pallets/eth-bridge/runtime-api/src/lib.rs index 29c7333376..032af166d1 100644 --- a/pallets/eth-bridge/runtime-api/src/lib.rs +++ b/pallets/eth-bridge/runtime-api/src/lib.rs @@ -29,8 +29,6 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #![cfg_attr(not(feature = "std"), no_std)] -// TODO #167: fix clippy warnings -#![allow(clippy::all)] use codec::Codec; use sp_runtime::DispatchError; @@ -66,6 +64,7 @@ sp_api::decl_runtime_apis! { fn get_approved_requests(hashes: Vec, network_id: Option) -> Result)>, DispatchError>; fn get_approvals(hashes: Vec, network_id: Option) -> Result>, DispatchError>; fn get_account_requests(account_id: AccountId, status_filter: Option) -> Result, DispatchError>; + #[allow(clippy::type_complexity)] fn get_registered_assets(network_id: Option) -> Result)>, DispatchError>; } } From 9ab707c23fb363586b880f7bd5a82a8f08e2e049 Mon Sep 17 00:00:00 2001 From: Nikita Smirnov Date: Fri, 13 Oct 2023 11:29:13 +0200 Subject: [PATCH 3/6] Fix clippy warnings in dex-api-rpc --- pallets/dex-api/rpc/Cargo.toml | 2 +- pallets/dex-api/rpc/src/lib.rs | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pallets/dex-api/rpc/Cargo.toml b/pallets/dex-api/rpc/Cargo.toml index fa2776337c..16158ac84b 100644 --- a/pallets/dex-api/rpc/Cargo.toml +++ b/pallets/dex-api/rpc/Cargo.toml @@ -10,7 +10,7 @@ repository = 'https://github.com/sora-xor/sora2-network' [dependencies] serde = { version = "1.0.101", features = ["derive"] } codec = { package = "parity-scale-codec", version = "3" } -jsonrpsee = { version = "0.16.2", features = ["server", "macros"] } +jsonrpsee = { version = "0.16.2", features = ["server", "client", "macros"] } sp-api = { git = "https://github.com/sora-xor/substrate.git", branch = "polkadot-v0.9.38", default-features = false } sp-blockchain = { git = "https://github.com/sora-xor/substrate.git", branch = "polkadot-v0.9.38", default-features = false } sp-core = { git = "https://github.com/sora-xor/substrate.git", branch = "polkadot-v0.9.38", default-features = false } diff --git a/pallets/dex-api/rpc/src/lib.rs b/pallets/dex-api/rpc/src/lib.rs index 921621be4d..ed9728d239 100644 --- a/pallets/dex-api/rpc/src/lib.rs +++ b/pallets/dex-api/rpc/src/lib.rs @@ -28,8 +28,7 @@ // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// TODO #167: fix clippy warnings -#![allow(clippy::all)] +#![allow(clippy::too_many_arguments)] use codec::Codec; use common::BalanceWrapper; From 2402dc6771524f11c7b2bb0a4cceb7ed114010c4 Mon Sep 17 00:00:00 2001 From: Nikita Smirnov Date: Fri, 13 Oct 2023 11:29:30 +0200 Subject: [PATCH 4/6] Fix clippy warnings in eth-bridge-rpc --- Cargo.lock | 62 ++++++++++++++++++++++++++++++- pallets/eth-bridge/rpc/Cargo.toml | 2 +- pallets/eth-bridge/rpc/src/lib.rs | 3 +- 3 files changed, 63 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 51d6b45a90..a4269c4eb9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4789,6 +4789,10 @@ name = "futures-timer" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] [[package]] name = "futures-util" @@ -4956,6 +4960,26 @@ dependencies = [ "regex", ] +[[package]] +name = "gloo-net" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9902a044653b26b99f7e3693a42f171312d9be8b26b5697bd1e43ad1f8a35e10" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "gloo-timers" version = "0.2.6" @@ -4968,6 +4992,19 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gloo-utils" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "group" version = "0.12.1" @@ -5695,6 +5732,7 @@ dependencies = [ "jsonrpsee-proc-macros", "jsonrpsee-server", "jsonrpsee-types", + "jsonrpsee-wasm-client", "jsonrpsee-ws-client", "tracing", ] @@ -5705,7 +5743,11 @@ version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8b3815d9f5d5de348e5f162b316dc9cdf4548305ebb15b4eb9328e66cf27d7a" dependencies = [ + "anyhow", + "futures-channel", + "futures-timer", "futures-util", + "gloo-net", "http", "jsonrpsee-core", "jsonrpsee-types", @@ -5746,6 +5788,7 @@ dependencies = [ "thiserror", "tokio", "tracing", + "wasm-bindgen-futures", ] [[package]] @@ -5816,6 +5859,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "jsonrpsee-wasm-client" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e5df77c8f625d36e4cfb583c5a674eccebe32403fcfe42f7ceff7fac9324dd" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", +] + [[package]] name = "jsonrpsee-ws-client" version = "0.16.3" @@ -11716,6 +11770,12 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + [[package]] name = "send_wrapper" version = "0.6.0" @@ -15116,7 +15176,7 @@ dependencies = [ "log", "pharos", "rustc_version 0.4.0", - "send_wrapper", + "send_wrapper 0.6.0", "thiserror", "wasm-bindgen", "wasm-bindgen-futures", diff --git a/pallets/eth-bridge/rpc/Cargo.toml b/pallets/eth-bridge/rpc/Cargo.toml index 1a40b0c686..af12cf2a9d 100644 --- a/pallets/eth-bridge/rpc/Cargo.toml +++ b/pallets/eth-bridge/rpc/Cargo.toml @@ -11,7 +11,7 @@ version = "0.1.0" [dependencies] serde = { version = "1.0.101", features = ["derive"] } codec = { package = "parity-scale-codec", version = "3" } -jsonrpsee = { version = "0.16.2", features = ["server", "macros"] } +jsonrpsee = { version = "0.16.2", features = ["server", "macros", "client"] } sp-runtime = { git = "https://github.com/sora-xor/substrate.git", branch = "polkadot-v0.9.38" } sp-api = { git = "https://github.com/sora-xor/substrate.git", branch = "polkadot-v0.9.38" } sp-blockchain = { git = "https://github.com/sora-xor/substrate.git", branch = "polkadot-v0.9.38" } diff --git a/pallets/eth-bridge/rpc/src/lib.rs b/pallets/eth-bridge/rpc/src/lib.rs index 6f985b4c4a..899bb813a2 100644 --- a/pallets/eth-bridge/rpc/src/lib.rs +++ b/pallets/eth-bridge/rpc/src/lib.rs @@ -28,8 +28,7 @@ // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// TODO #167: fix clippy warnings -#![allow(clippy::all)] +#![allow(clippy::type_complexity)] use codec::Codec; pub use eth_bridge_runtime_api::EthBridgeRuntimeApi; From d460cc229e544dd3c371e1f0bea626c0ab70581e Mon Sep 17 00:00:00 2001 From: Nikita Smirnov Date: Mon, 23 Oct 2023 11:25:06 +0200 Subject: [PATCH 5/6] eth-bridge clippy fixes pt1 --- pallets/eth-bridge/src/benchmarking.rs | 30 ++--- pallets/eth-bridge/src/contract.rs | 17 +-- pallets/eth-bridge/src/lib.rs | 91 +++++++------ pallets/eth-bridge/src/offchain/handle.rs | 26 ++-- pallets/eth-bridge/src/offchain/http.rs | 10 +- pallets/eth-bridge/src/offchain/mod.rs | 14 +- pallets/eth-bridge/src/requests/incoming.rs | 16 +-- pallets/eth-bridge/src/requests/mod.rs | 34 +++-- pallets/eth-bridge/src/requests/outgoing.rs | 24 ++-- pallets/eth-bridge/src/rpc.rs | 4 +- pallets/eth-bridge/src/tests/asset.rs | 47 ++++--- pallets/eth-bridge/src/tests/cancel.rs | 100 +++++++------- .../eth-bridge/src/tests/incoming_transfer.rs | 122 +++++++++--------- pallets/eth-bridge/src/tests/mock.rs | 20 +-- pallets/eth-bridge/src/tests/mod.rs | 14 +- pallets/eth-bridge/src/tests/ocw.rs | 48 +++---- .../eth-bridge/src/tests/outgoing_tranfser.rs | 64 ++++----- pallets/eth-bridge/src/tests/peer.rs | 66 +++++----- pallets/eth-bridge/src/types/substrate.rs | 8 +- .../src/types/transaction_request.rs | 4 +- pallets/eth-bridge/src/util.rs | 37 +++--- 21 files changed, 383 insertions(+), 413 deletions(-) diff --git a/pallets/eth-bridge/src/benchmarking.rs b/pallets/eth-bridge/src/benchmarking.rs index 8cdf1fe219..acfc050cba 100644 --- a/pallets/eth-bridge/src/benchmarking.rs +++ b/pallets/eth-bridge/src/benchmarking.rs @@ -64,7 +64,7 @@ benchmarks! { let caller = alice::(); let asset_id: T::AssetId = XOR.into(); let net_id = 0u32.into(); - let bridge_acc_id = crate::BridgeAccount::::get(&net_id).unwrap(); + let bridge_acc_id = crate::BridgeAccount::::get(net_id).unwrap(); Assets::::mint_to(&asset_id, &bridge_acc_id, &caller, balance!(100)).unwrap(); let initial_base_balance = Assets::::free_balance(&asset_id, &caller).unwrap(); }: transfer_to_sidechain( @@ -85,7 +85,7 @@ benchmarks! { let caller = alice::(); let asset_id: T::AssetId = XOR.into(); let net_id = 0u32.into(); - let bridge_acc_id = crate::BridgeAccount::::get(&net_id).unwrap(); + let bridge_acc_id = crate::BridgeAccount::::get(net_id).unwrap(); Assets::::mint_to(&asset_id, &bridge_acc_id, &caller, balance!(100)).unwrap(); let initial_base_balance = Assets::::free_balance(&asset_id, &caller).unwrap(); let req_hash = H256([1u8; 32]); @@ -101,7 +101,7 @@ benchmarks! { register_incoming_request { let net_id = 0u32.into(); - let caller = crate::BridgeAccount::::get(&net_id).unwrap(); + let caller = crate::BridgeAccount::::get(net_id).unwrap(); let asset_id: T::AssetId = XOR.into(); let alice = alice::(); let inc_req = IncomingRequest::Transfer(IncomingTransfer:: { @@ -110,7 +110,7 @@ benchmarks! { asset_id, asset_kind: AssetKind::SidechainOwned, amount: 1u32.into(), - author: alice.clone(), + author: alice, tx_hash: H256([1u8; 32]), at_height: 0, timepoint: Default::default(), @@ -128,7 +128,7 @@ benchmarks! { finalize_incoming_request { let net_id = 0u32.into(); - let caller = crate::BridgeAccount::::get(&net_id).unwrap(); + let caller = crate::BridgeAccount::::get(net_id).unwrap(); let asset_id: T::AssetId = XOR.into(); let req_hash = H256([1u8; 32]); let alice = alice::(); @@ -138,7 +138,7 @@ benchmarks! { asset_id, asset_kind: AssetKind::SidechainOwned, amount: 1u32.into(), - author: alice.clone(), + author: alice, tx_hash: req_hash, at_height: 0, timepoint: Default::default(), @@ -161,13 +161,13 @@ benchmarks! { approve_request { let net_id = 0u32.into(); - let caller = crate::BridgeAccount::::get(&net_id).unwrap(); + let caller = crate::BridgeAccount::::get(net_id).unwrap(); let asset_id: T::AssetId = XOR.into(); let alice = alice::(); Assets::::mint_to(&asset_id, &caller, &caller, balance!(100)).unwrap(); let initial_base_balance = Assets::::free_balance(&asset_id, &caller).unwrap(); frame_support::assert_ok!(crate::Pallet::::transfer_to_sidechain( - RawOrigin::Signed(caller.clone()).into(), + RawOrigin::Signed(caller).into(), asset_id, EthAddress::from(hex!("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A")), balance!(100), @@ -180,7 +180,7 @@ benchmarks! { let public = secp256k1::PublicKey::from_secret_key(&sk); let address = public_key_to_eth_address(&public); let public = ecdsa::Public(public.serialize_compressed()); - let account_id = T::AccountId::decode(&mut &MultiSigner::Ecdsa(public.clone()).into_account().encode()[..]).unwrap(); + let account_id = T::AccountId::decode(&mut &MultiSigner::Ecdsa(public).into_account().encode()[..]).unwrap(); Pallet::::force_add_peer(RawOrigin::Root.into(), account_id.clone(), address, net_id).unwrap(); let (signature, _) = Pallet::::sign_message(encoded_request.as_raw(), &sk); }: approve_request( @@ -191,18 +191,18 @@ benchmarks! { net_id ) verify { - assert_eq!(RequestApprovals::::get(net_id, &req_hash).len(), 1); + assert_eq!(RequestApprovals::::get(net_id, req_hash).len(), 1); } approve_request_finalize { let net_id = 0u32.into(); - let caller = crate::BridgeAccount::::get(&net_id).unwrap(); + let caller = crate::BridgeAccount::::get(net_id).unwrap(); let asset_id: T::AssetId = XOR.into(); let alice = alice::(); Assets::::mint_to(&asset_id, &caller, &caller, balance!(100)).unwrap(); let initial_base_balance = Assets::::free_balance(&asset_id, &caller).unwrap(); frame_support::assert_ok!(crate::Pallet::::transfer_to_sidechain( - RawOrigin::Signed(caller.clone()).into(), + RawOrigin::Signed(caller).into(), asset_id, EthAddress::from(hex!("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A")), balance!(100), @@ -215,10 +215,10 @@ benchmarks! { let public = secp256k1::PublicKey::from_secret_key(&sk); let address = public_key_to_eth_address(&public); let public = ecdsa::Public(public.serialize_compressed()); - let account_id = T::AccountId::decode(&mut &MultiSigner::Ecdsa(public.clone()).into_account().encode()[..]).unwrap(); + let account_id = T::AccountId::decode(&mut &MultiSigner::Ecdsa(public).into_account().encode()[..]).unwrap(); Pallet::::force_add_peer(RawOrigin::Root.into(), account_id.clone(), address, net_id).unwrap(); let (signature, _) = Pallet::::sign_message(encoded_request.as_raw(), &sk); - RequestApprovals::::mutate(net_id, &req_hash, |v| { + RequestApprovals::::mutate(net_id, req_hash, |v| { for i in 0..majority(crate::Peers::::get(net_id).len()) - 1 { v.insert(SignatureParams { v: i as u8, @@ -239,7 +239,7 @@ benchmarks! { abort_request { let net_id = 0u32.into(); - let caller = crate::BridgeAccount::::get(&net_id).unwrap(); + let caller = crate::BridgeAccount::::get(net_id).unwrap(); let asset_id: T::AssetId = XOR.into(); let alice = alice::(); Assets::::mint_to(&asset_id, &caller, &caller, balance!(100)).unwrap(); diff --git a/pallets/eth-bridge/src/contract.rs b/pallets/eth-bridge/src/contract.rs index 1e9f95923e..53db8f4b10 100644 --- a/pallets/eth-bridge/src/contract.rs +++ b/pallets/eth-bridge/src/contract.rs @@ -38,6 +38,7 @@ use sp_std::collections::btree_map::BTreeMap; /// Avoid of Contract struct never used warning #[allow(dead_code)] +#[allow(clippy::too_many_arguments)] pub mod eth_bridge_contract { use alloc::string::String; use sp_std::prelude::*; @@ -51,8 +52,7 @@ pub const METHOD_ID_SIZE: usize = 4; pub type MethodId = [u8; METHOD_ID_SIZE]; pub fn calculate_method_id(function: &Function) -> MethodId { - let id = function.short_signature(); - id + function.short_signature() } pub static ADD_ETH_NATIVE_TOKEN_FN: OnceBox = OnceBox::new(); @@ -98,15 +98,16 @@ pub static FUNCTIONS: OnceBox> = OnceBox::new() pub fn init_add_peer_by_peer_fn() -> Box { let add_peer_by_peer_fn = ADD_PEER_BY_PEER_FN .get_or_init(|| Box::new(eth_bridge_contract::functions::add_peer_by_peer::function())); - Box::new(calculate_method_id(&add_peer_by_peer_fn)) + Box::new(calculate_method_id(add_peer_by_peer_fn)) } pub fn init_remove_peer_by_peer_fn() -> Box { let remove_peer_by_peer_fn = REMOVE_PEER_BY_PEER_FN .get_or_init(|| Box::new(eth_bridge_contract::functions::remove_peer_by_peer::function())); - Box::new(calculate_method_id(&remove_peer_by_peer_fn)) + Box::new(calculate_method_id(remove_peer_by_peer_fn)) } +#[allow(clippy::box_collection)] pub fn functions() -> Box> { let add_eth_native_token_fn = ADD_ETH_NATIVE_TOKEN_FN .get_or_init(|| Box::new(eth_bridge_contract::functions::add_eth_native_token::function())); @@ -126,7 +127,7 @@ pub fn functions() -> Box> { let map = vec![ ( *ADD_ETH_NATIVE_TOKEN_ID - .get_or_init(|| Box::new(calculate_method_id(&add_eth_native_token_fn))), + .get_or_init(|| Box::new(calculate_method_id(add_eth_native_token_fn))), FunctionMeta::new( add_eth_native_token_fn.clone(), ADD_ETH_NATIVE_TOKEN_TX_HASH_ARG_POS, @@ -134,7 +135,7 @@ pub fn functions() -> Box> { ), ( *ADD_NEW_SIDECHAIN_TOKEN_ID - .get_or_init(|| Box::new(calculate_method_id(&add_new_sidechain_token_fn))), + .get_or_init(|| Box::new(calculate_method_id(add_new_sidechain_token_fn))), FunctionMeta::new( add_new_sidechain_token_fn.clone(), ADD_NEW_SIDECHAIN_TOKEN_TX_HASH_ARG_POS, @@ -156,7 +157,7 @@ pub fn functions() -> Box> { ), ( *RECEIVE_BY_ETHEREUM_ASSET_ADDRESS_ID - .get_or_init(|| Box::new(calculate_method_id(&receive_by_eth_asset_address_fn))), + .get_or_init(|| Box::new(calculate_method_id(receive_by_eth_asset_address_fn))), FunctionMeta::new( receive_by_eth_asset_address_fn.clone(), RECEIVE_BY_ETHEREUM_ASSET_ADDRESS_TX_HASH_ARG_POS, @@ -164,7 +165,7 @@ pub fn functions() -> Box> { ), ( *RECEIVE_BY_SIDECHAIN_ASSET_ID_ID - .get_or_init(|| Box::new(calculate_method_id(&receive_by_sidechain_asset_id_fn))), + .get_or_init(|| Box::new(calculate_method_id(receive_by_sidechain_asset_id_fn))), FunctionMeta::new( receive_by_sidechain_asset_id_fn.clone(), RECEIVE_BY_SIDECHAIN_ASSET_ID_TX_HASH_ARG_POS, diff --git a/pallets/eth-bridge/src/lib.rs b/pallets/eth-bridge/src/lib.rs index 172dc13266..cf5b8bcdd5 100644 --- a/pallets/eth-bridge/src/lib.rs +++ b/pallets/eth-bridge/src/lib.rs @@ -65,8 +65,7 @@ Persists the same multi-sig account (+- 1 signatory) for validating all its inco */ #![cfg_attr(not(feature = "std"), no_std)] -// TODO #167: fix clippy warnings -#![allow(clippy::all)] +#![allow(clippy::crate_in_macro_def)] #[macro_use] extern crate alloc; @@ -233,8 +232,8 @@ impl BridgeAssetData { sidechain_precision: BalancePrecision, sidechain_asset_id: sp_core::H160, ) -> Self { - let name: Cow<'_, str> = if name.contains(".") { - name.replacen(".", " ", 2).into() + let name: Cow<'_, str> = if name.contains('.') { + name.replacen('.', " ", 2).into() } else { name.into() }; @@ -637,7 +636,7 @@ pub mod pallet { ) -> DispatchResultWithPostInfo { debug!("called finalize_incoming_request"); let _ = Self::ensure_bridge_account(origin, network_id)?; - let request = Requests::::get(network_id, &hash) + let request = Requests::::get(network_id, hash) .ok_or_else(|| err_pays_no(Error::::UnknownRequest))?; let (request, hash) = request .as_incoming() @@ -957,7 +956,7 @@ pub mod pallet { address: EthAddress, network_id: BridgeNetworkId, ) -> DispatchResultWithPostInfo { - let _ = ensure_root(origin)?; + ensure_root(origin)?; if !Self::is_peer(&who, network_id) { bridge_multisig::Pallet::::add_signatory( RawOrigin::Signed(get_bridge_account::(network_id)).into(), @@ -965,7 +964,7 @@ pub mod pallet { ) .map_err(|e| e.error)?; PeerAddress::::insert(network_id, &who, address); - PeerAccountId::::insert(network_id, &address, who.clone()); + PeerAccountId::::insert(network_id, address, who.clone()); >::mutate(network_id, |l| l.insert(who)); } Ok(().into()) @@ -985,12 +984,12 @@ pub mod pallet { log::debug!("called remove_sidechain_asset. asset_id: {:?}", asset_id); ensure_root(origin)?; assets::Pallet::::ensure_asset_exists(&asset_id)?; - let token_address = RegisteredSidechainToken::::get(network_id, &asset_id) + let token_address = RegisteredSidechainToken::::get(network_id, asset_id) .ok_or(Error::::UnknownAssetId)?; - RegisteredAsset::::remove(network_id, &asset_id); - RegisteredSidechainAsset::::remove(network_id, &token_address); - RegisteredSidechainToken::::remove(network_id, &asset_id); - SidechainAssetPrecision::::remove(network_id, &asset_id); + RegisteredAsset::::remove(network_id, asset_id); + RegisteredSidechainAsset::::remove(network_id, token_address); + RegisteredSidechainToken::::remove(network_id, asset_id); + SidechainAssetPrecision::::remove(network_id, asset_id); Ok(().into()) } @@ -1013,16 +1012,16 @@ pub mod pallet { ensure_root(origin)?; assets::Pallet::::ensure_asset_exists(&asset_id)?; ensure!( - !RegisteredAsset::::contains_key(network_id, &asset_id), + !RegisteredAsset::::contains_key(network_id, asset_id), Error::::TokenIsAlreadyAdded ); // TODO: #395 use AssetInfoProvider instead of assets pallet let (_, _, precision, ..) = assets::Pallet::::get_asset_info(&asset_id); - RegisteredAsset::::insert(network_id, &asset_id, AssetKind::Sidechain); - RegisteredSidechainAsset::::insert(network_id, &token_address, asset_id); - RegisteredSidechainToken::::insert(network_id, &asset_id, token_address); - SidechainAssetPrecision::::insert(network_id, &asset_id, precision); + RegisteredAsset::::insert(network_id, asset_id, AssetKind::Sidechain); + RegisteredSidechainAsset::::insert(network_id, token_address, asset_id); + RegisteredSidechainToken::::insert(network_id, asset_id, token_address); + SidechainAssetPrecision::::insert(network_id, asset_id, precision); Ok(().into()) } } @@ -1472,14 +1471,14 @@ pub mod pallet { #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { - AuthorityAccount::::put(&self.authority_account.as_ref().unwrap()); - XorMasterContractAddress::::put(&self.xor_master_contract_address); - ValMasterContractAddress::::put(&self.val_master_contract_address); + AuthorityAccount::::put(self.authority_account.as_ref().unwrap()); + XorMasterContractAddress::::put(self.xor_master_contract_address); + ValMasterContractAddress::::put(self.val_master_contract_address); for network in &self.networks { let net_id = NextNetworkId::::get(); let peers_account_id = &network.bridge_account_id; BridgeContractAddress::::insert(net_id, network.bridge_contract_address); - frame_system::Pallet::::inc_consumers(&peers_account_id).unwrap(); + frame_system::Pallet::::inc_consumers(peers_account_id).unwrap(); BridgeAccount::::insert(net_id, peers_account_id.clone()); BridgeStatuses::::insert(net_id, BridgeStatus::Initialized); Peers::::insert(net_id, network.initial_peers.clone()); @@ -1505,7 +1504,7 @@ pub mod pallet { for permission_id in &permission_ids { permissions::Pallet::::assign_permission( peers_account_id.clone(), - &peers_account_id, + peers_account_id, *permission_id, scope, ) @@ -1514,8 +1513,8 @@ pub mod pallet { for (asset_id, balance) in &network.reserves { assets::Pallet::::mint_to( asset_id, - &peers_account_id, - &peers_account_id, + peers_account_id, + peers_account_id, *balance, ) .unwrap(); @@ -1550,23 +1549,23 @@ impl Pallet { ); } let hash = request.hash(); - let can_resubmit = RequestStatuses::::get(net_id, &hash) + let can_resubmit = RequestStatuses::::get(net_id, hash) .map(|status| matches!(status, RequestStatus::Failed(_))) .unwrap_or(false); if !can_resubmit { ensure!( - Requests::::get(net_id, &hash).is_none(), + Requests::::get(net_id, hash).is_none(), Error::::DuplicatedRequest ); } request.validate()?; request.prepare()?; - AccountRequests::::mutate(&request.author(), |vec| vec.push((net_id, hash))); - Requests::::insert(net_id, &hash, request); + AccountRequests::::mutate(request.author(), |vec| vec.push((net_id, hash))); + Requests::::insert(net_id, hash, request); RequestsQueue::::mutate(net_id, |v| v.push(hash)); - RequestStatuses::::insert(net_id, &hash, RequestStatus::Pending); + RequestStatuses::::insert(net_id, hash, RequestStatus::Pending); let block_number = frame_system::Pallet::::current_block_number(); - RequestSubmissionHeight::::insert(net_id, &hash, block_number); + RequestSubmissionHeight::::insert(net_id, hash, block_number); Self::deposit_event(Event::RequestRegistered(hash)); Ok(()) } @@ -1608,7 +1607,7 @@ impl Pallet { Self::deposit_event(Event::RegisterRequestFailed(incoming_request_hash, e)); return Ok(incoming_request_hash); } - Requests::::insert(network_id, &incoming_request_hash, incoming_request); + Requests::::insert(network_id, incoming_request_hash, incoming_request); RequestsQueue::::mutate(network_id, |v| v.push(incoming_request_hash)); RequestStatuses::::insert(network_id, incoming_request_hash, RequestStatus::Pending); AccountRequests::::mutate(request_author, |v| { @@ -1663,7 +1662,7 @@ impl Pallet { network_id: T::NetworkId, ) -> Result { ensure!( - RegisteredSidechainAsset::::get(network_id, &token_address).is_none(), + RegisteredSidechainAsset::::get(network_id, token_address).is_none(), Error::::TokenIsAlreadyAdded ); ensure!( @@ -1682,14 +1681,14 @@ impl Pallet { None, None, )?; - RegisteredAsset::::insert(network_id, &asset_id, AssetKind::Sidechain); - RegisteredSidechainAsset::::insert(network_id, &token_address, asset_id); - RegisteredSidechainToken::::insert(network_id, &asset_id, token_address); - SidechainAssetPrecision::::insert(network_id, &asset_id, precision); + RegisteredAsset::::insert(network_id, asset_id, AssetKind::Sidechain); + RegisteredSidechainAsset::::insert(network_id, token_address, asset_id); + RegisteredSidechainToken::::insert(network_id, asset_id, token_address); + SidechainAssetPrecision::::insert(network_id, asset_id, precision); let scope = Scope::Limited(common::hash(&asset_id)); let permission_ids = [MINT, BURN]; for permission_id in &permission_ids { - let permission_owner = permissions::Owners::::get(permission_id, &scope) + let permission_owner = permissions::Owners::::get(permission_id, scope) .pop() .unwrap_or_else(|| bridge_account.clone()); permissions::Pallet::::grant_permission_with_scope( @@ -1744,7 +1743,7 @@ impl Pallet { Self::inner_abort_request(&load_incoming, sidechain_tx_hash, e, net_id)?; } } - Ok(().into()) + Ok(()) } fn inner_approve_request( @@ -1768,7 +1767,7 @@ impl Pallet { return Err(Error::::InvalidSignature.into()); } info!("Verified request approve {:?}", request_encoded); - let mut approvals = RequestApprovals::::get(net_id, &hash); + let mut approvals = RequestApprovals::::get(net_id, hash); let pending_peers_len = if Self::is_additional_signature_needed(net_id, &request) { 1 } else { @@ -1776,9 +1775,9 @@ impl Pallet { }; let need_sigs = majority(Self::peers(net_id).len()) + pending_peers_len; let current_status = - RequestStatuses::::get(net_id, &hash).ok_or(Error::::UnknownRequest)?; + RequestStatuses::::get(net_id, hash).ok_or(Error::::UnknownRequest)?; approvals.insert(signature_params); - RequestApprovals::::insert(net_id, &hash, &approvals); + RequestApprovals::::insert(net_id, hash, &approvals); if current_status == RequestStatus::Pending && approvals.len() == need_sigs { if let Err(err) = request.finalize(hash) { error!("Outgoing request finalization failed: {:?}", err); @@ -1821,7 +1820,7 @@ impl BridgeApp for Pal let Ok(network_id) = Self::ensure_generic_network(network_id) else { return false; }; - RegisteredAsset::::contains_key(network_id, &asset_id) + RegisteredAsset::::contains_key(network_id, asset_id) } fn transfer( @@ -1871,11 +1870,9 @@ impl BridgeApp for Pal RegisteredAsset::::iter_prefix(network_id) .map(|(asset_id, _kind)| { let evm_address = - RegisteredSidechainToken::::get(network_id, &asset_id).map(|x| H160(x.0)); - let precision = evm_address.map(|_address| { - let precision = SidechainAssetPrecision::::get(network_id, &asset_id); - precision - }); + RegisteredSidechainToken::::get(network_id, asset_id).map(|x| H160(x.0)); + let precision = evm_address + .map(|_address| SidechainAssetPrecision::::get(network_id, asset_id)); let app_kind = if asset_id == common::XOR.into() { EVMAppKind::XorMaster diff --git a/pallets/eth-bridge/src/offchain/handle.rs b/pallets/eth-bridge/src/offchain/handle.rs index 3c32ba0620..36b744c314 100644 --- a/pallets/eth-bridge/src/offchain/handle.rs +++ b/pallets/eth-bridge/src/offchain/handle.rs @@ -404,21 +404,19 @@ impl Pallet { } _ => continue, }; - match maybe_call { - Ok(Call::::import_incoming_request { - load_incoming_request, - .. - }) => { - let tx_hash = load_incoming_request.hash(); + if let Ok(Call::::import_incoming_request { + load_incoming_request, + .. + }) = maybe_call + { + let tx_hash = load_incoming_request.hash(); - if RequestStatuses::::get(network_id, tx_hash).is_some() { - to_remove.push(*key); - // Skip already submitted requests. - continue; - } - let _ = Self::send_transaction::>(tx_call); + if RequestStatuses::::get(network_id, tx_hash).is_some() { + to_remove.push(*key); + // Skip already submitted requests. + continue; } - _ => (), + let _ = Self::send_transaction::>(tx_call); }; } } @@ -623,7 +621,7 @@ impl Pallet { continue; } let request_submission_height: T::BlockNumber = - Self::request_submission_height(network_id, &request_hash); + Self::request_submission_height(network_id, request_hash); let number = T::BlockNumber::from(MAX_PENDING_TX_BLOCKS_PERIOD); let diff = substrate_finalized_height.saturating_sub(request_submission_height); let should_reapprove = diff >= number && diff % number == T::BlockNumber::zero(); diff --git a/pallets/eth-bridge/src/offchain/http.rs b/pallets/eth-bridge/src/offchain/http.rs index 3240acbef9..b98f6261c8 100644 --- a/pallets/eth-bridge/src/offchain/http.rs +++ b/pallets/eth-bridge/src/offchain/http.rs @@ -67,7 +67,7 @@ impl Pallet { HTTP_REQUEST_TIMEOUT_SECS * 1000, )); for (key, value) in headers { - request = request.add_header(*key, &*value); + request = request.add_header(key, value); } #[allow(unused_mut)] let mut pending = request.deadline(timeout).send().map_err(|e| { @@ -119,11 +119,11 @@ impl Pallet { jsonrpc: Some(jsonrpc::Version::V2), method: method.into(), params, - id: jsonrpc::Id::Num(id as u64), + id: jsonrpc::Id::Num(id), }, ))) .map_err(|_| Error::::JsonSerializationError)?, - &headers, + headers, ) .and_then(|x| { String::from_utf8(x).map_err(|e| { @@ -149,13 +149,13 @@ impl Pallet { } else { serde_json::from_value(s.result).map_err(|e| { error!("json_rpc_request: from_value failed, {}", e); - Error::::JsonDeserializationError.into() + Error::::JsonDeserializationError }) } } _ => { error!("json_rpc_request: request failed"); - Err(Error::::JsonDeserializationError.into()) + Err(Error::::JsonDeserializationError) } } } diff --git a/pallets/eth-bridge/src/offchain/mod.rs b/pallets/eth-bridge/src/offchain/mod.rs index b5191a0866..809a8963a9 100644 --- a/pallets/eth-bridge/src/offchain/mod.rs +++ b/pallets/eth-bridge/src/offchain/mod.rs @@ -192,7 +192,7 @@ impl Pallet { _ => (), } } - Err(Error::::UnknownEvent.into()) + Err(Error::::UnknownEvent) } /// Verifies the message signed by a peer. Also, compares the given `AccountId` with the given @@ -209,7 +209,7 @@ impl Pallet { secp256k1::PublicKey::parse_slice(ecdsa_public_key.as_slice(), None).map(|pk| (sig, pk)) }); if let Ok((signature, public_key)) = res { - let signer_account = MultiSigner::Ecdsa(ecdsa_public_key.clone()).into_account(); + let signer_account = MultiSigner::Ecdsa(*ecdsa_public_key).into_account(); let verified = secp256k1::verify(&message, &signature, &public_key); signer_account.encode() == author.encode() && verified } else { @@ -309,7 +309,7 @@ impl Pallet { ) -> Result, Error> { let is_sidechain_token = raw_asset_id == H256::zero(); if is_sidechain_token { - let asset_id = match Self::registered_sidechain_asset(network_id, &token_address) { + let asset_id = match Self::registered_sidechain_asset(network_id, token_address) { Some(asset_id) => asset_id, _ => { return Ok(None); @@ -317,11 +317,11 @@ impl Pallet { }; Ok(Some(( asset_id, - Self::registered_asset(network_id, &asset_id).unwrap_or(AssetKind::Sidechain), + Self::registered_asset(network_id, asset_id).unwrap_or(AssetKind::Sidechain), ))) } else { let asset_id = T::AssetId::from(H256(raw_asset_id.0)); - let asset_kind = Self::registered_asset(network_id, &asset_id); + let asset_kind = Self::registered_asset(network_id, asset_id); if asset_kind.is_none() || asset_kind.unwrap() == AssetKind::Sidechain { fail!(Error::::UnknownAssetId); } @@ -341,7 +341,7 @@ impl Pallet { let (fun, arg_pos, tail, added) = if let Some(tail) = tx .input .0 - .strip_prefix(&*ADD_PEER_BY_PEER_ID.get_or_init(init_add_peer_by_peer_fn)) + .strip_prefix(ADD_PEER_BY_PEER_ID.get_or_init(init_add_peer_by_peer_fn)) { ( &ADD_PEER_BY_PEER_FN, @@ -352,7 +352,7 @@ impl Pallet { } else if let Some(tail) = tx .input .0 - .strip_prefix(&*REMOVE_PEER_BY_PEER_ID.get_or_init(init_remove_peer_by_peer_fn)) + .strip_prefix(REMOVE_PEER_BY_PEER_ID.get_or_init(init_remove_peer_by_peer_fn)) { ( &REMOVE_PEER_BY_PEER_FN, diff --git a/pallets/eth-bridge/src/requests/incoming.rs b/pallets/eth-bridge/src/requests/incoming.rs index 96fb38da60..8087659eb4 100644 --- a/pallets/eth-bridge/src/requests/incoming.rs +++ b/pallets/eth-bridge/src/requests/incoming.rs @@ -399,7 +399,7 @@ pub fn encode_outgoing_request_eth_call( let fun_meta = fun_metas.get(&method_id).ok_or(Error::UnknownMethodId)?; let request_encoded = request.to_eth_abi(request_hash)?; let approvals: BTreeSet = - crate::RequestApprovals::::get(request.network_id(), &request_hash); + crate::RequestApprovals::::get(request.network_id(), request_hash); let input_tokens = request_encoded.input_tokens(Some(approvals.into_iter().collect())); fun_meta .function @@ -433,7 +433,7 @@ impl IncomingCancelOutgoingRequest { pub fn prepare(&self) -> Result<(), DispatchError> { let request_hash = self.outgoing_request_hash; let net_id = self.network_id; - let req_status = crate::RequestStatuses::::get(net_id, &self.outgoing_request_hash) + let req_status = crate::RequestStatuses::::get(net_id, self.outgoing_request_hash) .ok_or(crate::Error::::UnknownRequest)?; ensure!( req_status == RequestStatus::ApprovalsReady, @@ -451,7 +451,7 @@ impl IncomingCancelOutgoingRequest { expected_input == self.tx_input, crate::Error::::InvalidContractInput ); - crate::RequestStatuses::::insert(net_id, &request_hash, RequestStatus::Frozen); + crate::RequestStatuses::::insert(net_id, request_hash, RequestStatus::Frozen); Ok(()) } @@ -459,7 +459,7 @@ impl IncomingCancelOutgoingRequest { pub fn cancel(&self) -> Result<(), DispatchError> { crate::RequestStatuses::::insert( self.network_id, - &self.outgoing_request_hash, + self.outgoing_request_hash, RequestStatus::ApprovalsReady, ); Ok(()) @@ -563,7 +563,7 @@ impl IncomingPrepareForMigration { /// Checks that the current bridge status is `Initialized`, otherwise an error is thrown. pub fn prepare(&self) -> Result<(), DispatchError> { ensure!( - crate::BridgeStatuses::::get(&self.network_id).ok_or(Error::::UnknownNetwork)? + crate::BridgeStatuses::::get(self.network_id).ok_or(Error::::UnknownNetwork)? == BridgeStatus::Initialized, Error::::ContractIsAlreadyInMigrationStage ); @@ -607,9 +607,9 @@ impl IncomingMigrate { /// Checks that the current bridge status is `Migrating`, otherwise an error is thrown. pub fn prepare(&self) -> Result<(), DispatchError> { ensure!( - crate::BridgeStatuses::::get(&self.network_id).ok_or(Error::::UnknownNetwork)? + crate::BridgeStatuses::::get(self.network_id).ok_or(Error::::UnknownNetwork)? == BridgeStatus::Migrating - && crate::PendingBridgeSignatureVersions::::get(&self.network_id).is_some(), + && crate::PendingBridgeSignatureVersions::::get(self.network_id).is_some(), Error::::ContractIsNotInMigrationStage ); Ok(()) @@ -623,7 +623,7 @@ impl IncomingMigrate { pub fn finalize(&self) -> Result { crate::BridgeContractAddress::::insert(self.network_id, self.new_contract_address); crate::BridgeStatuses::::insert(self.network_id, BridgeStatus::Initialized); - let signature_version = crate::PendingBridgeSignatureVersions::::take(&self.network_id) + let signature_version = crate::PendingBridgeSignatureVersions::::take(self.network_id) .ok_or(Error::::ContractIsNotInMigrationStage)?; crate::BridgeSignatureVersions::::insert(self.network_id, signature_version); Ok(self.tx_hash) diff --git a/pallets/eth-bridge/src/requests/mod.rs b/pallets/eth-bridge/src/requests/mod.rs index 486ac33f71..9a80971f52 100644 --- a/pallets/eth-bridge/src/requests/mod.rs +++ b/pallets/eth-bridge/src/requests/mod.rs @@ -327,7 +327,7 @@ impl IncomingRequest { .ok_or(Error::::UnsupportedAssetId)?; let amount = if !asset_kind.is_owned() { let sidechain_precision = - SidechainAssetPrecision::::get(network_id, &asset_id); + SidechainAssetPrecision::::get(network_id, asset_id); let thischain_precision = assets::Pallet::::get_asset_info(&asset_id).2; Pallet::::convert_precision( sidechain_precision, @@ -353,7 +353,7 @@ impl IncomingRequest { }) } ContractEvent::ChangePeers(peer_address, removed) => { - let peer_account_id = PeerAccountId::::get(network_id, &peer_address); + let peer_account_id = PeerAccountId::::get(network_id, peer_address); ensure!( removed || peer_account_id.is_some(), Error::::UnknownPeerAddress @@ -517,7 +517,7 @@ impl IncomingRequest { IncomingRequest::CancelOutgoingRequest(request) => { let hash = request.tx_hash; let tx = Pallet::::load_tx_receipt(hash, network_id)?; - Ok(tx.is_approved() == false) // TODO: check for gas limit + Ok(!tx.is_approved()) // TODO: check for gas limit } IncomingRequest::MarkAsDone(request) => { Pallet::::load_is_used(request.outgoing_request_hash, request.network_id) @@ -582,17 +582,14 @@ impl LoadIncomingRequest { match self { Self::Transaction(_request) => Ok(()), Self::Meta(request, _) => { - match request.kind { - IncomingMetaRequestKind::MarkAsDone => { - let request_status = - RequestStatuses::::get(request.network_id, request.hash) - .ok_or(Error::::UnknownRequest)?; - ensure!( - request_status == RequestStatus::ApprovalsReady, - Error::::RequestIsNotReady - ); - } - _ => (), + if request.kind == IncomingMetaRequestKind::MarkAsDone { + let request_status = + RequestStatuses::::get(request.network_id, request.hash) + .ok_or(Error::::UnknownRequest)?; + ensure!( + request_status == RequestStatus::ApprovalsReady, + Error::::RequestIsNotReady + ); } Ok(()) } @@ -819,10 +816,11 @@ impl OffchainRequest { } pub fn is_load_incoming(&self) -> bool { - match self { - OffchainRequest::LoadIncoming(..) => true, - _ => false, - } + // match self { + // OffchainRequest::LoadIncoming(..) => true, + // _ => false, + // } + matches!(self, OffchainRequest::LoadIncoming(..)) } pub fn is_incoming(&self) -> bool { diff --git a/pallets/eth-bridge/src/requests/outgoing.rs b/pallets/eth-bridge/src/requests/outgoing.rs index f6f6d4716c..cc3f7c5626 100644 --- a/pallets/eth-bridge/src/requests/outgoing.rs +++ b/pallets/eth-bridge/src/requests/outgoing.rs @@ -82,7 +82,7 @@ pub struct OutgoingTransfer { impl OutgoingTransfer { pub fn sidechain_amount(&self) -> Result<(u128, Balance), Error> { let sidechain_precision = - crate::SidechainAssetPrecision::::get(self.network_id, &self.asset_id); + crate::SidechainAssetPrecision::::get(self.network_id, self.asset_id); let thischain_precision = assets::Pallet::::get_asset_info(&self.asset_id).2; Pallet::::convert_precision(thischain_precision, sidechain_precision, self.amount) } @@ -94,7 +94,7 @@ impl OutgoingTransfer { let currency_id; let amount; if let Some(token_address) = - Pallet::::registered_sidechain_token(self.network_id, &self.asset_id) + Pallet::::registered_sidechain_token(self.network_id, self.asset_id) { currency_id = CurrencyIdEncoded::TokenAddress(token_address); let converted_amount = self.sidechain_amount().map(|x| x.0)?; @@ -148,7 +148,7 @@ impl OutgoingTransfer { Token::FixedBytes(network_id.0.to_vec()).into(), ]), BridgeSignatureVersion::V3 => { - let kind = crate::RegisteredAsset::::get(self.network_id, &self.asset_id) + let kind = crate::RegisteredAsset::::get(self.network_id, self.asset_id) .ok_or(Error::::UnsupportedToken)?; let prefix = if kind.is_owned() { "transferOwned" @@ -185,7 +185,7 @@ impl OutgoingTransfer { /// Checks that the given asset can be transferred through the bridge. pub fn validate(&self) -> Result<(), DispatchError> { - if let Some(kind) = crate::RegisteredAsset::::get(self.network_id, &self.asset_id) { + if let Some(kind) = crate::RegisteredAsset::::get(self.network_id, self.asset_id) { if !kind.is_owned() { let dust = self.sidechain_amount().map(|x| x.1)?; ensure!(dust == 0, Error::::NonZeroDust); @@ -248,7 +248,7 @@ impl OutgoingTransfer { let remainder = Assets::::unreserve(&self.asset_id, &bridge_acc, self.amount)?; ensure!(remainder == 0, Error::::FailedToUnreserve); let asset_kind: AssetKind = - crate::Pallet::::registered_asset(self.network_id, &self.asset_id) + crate::Pallet::::registered_asset(self.network_id, self.asset_id) .ok_or(Error::::UnknownAssetId)?; if !asset_kind.is_owned() { // The burn shouldn't fail, because we've just unreserved the needed amount of the asset, @@ -401,7 +401,7 @@ impl OutgoingAddAsset { pub fn validate(&self) -> Result<(), DispatchError> { Assets::::ensure_asset_exists(&self.asset_id)?; ensure!( - crate::RegisteredAsset::::get(self.network_id, &self.asset_id).is_none(), + crate::RegisteredAsset::::get(self.network_id, self.asset_id).is_none(), Error::::TokenIsAlreadyAdded ); Ok(()) @@ -414,7 +414,7 @@ impl OutgoingAddAsset { /// Calls `validate` again and registers the asset. pub fn finalize(&self) -> Result<(), DispatchError> { self.validate()?; - crate::RegisteredAsset::::insert(self.network_id, &self.asset_id, AssetKind::Thischain); + crate::RegisteredAsset::::insert(self.network_id, self.asset_id, AssetKind::Thischain); Ok(()) } @@ -579,7 +579,7 @@ impl OutgoingAddToken { Error::::UnsupportedAssetPrecision ); ensure!( - crate::RegisteredSidechainAsset::::get(self.network_id, &self.token_address) + crate::RegisteredSidechainAsset::::get(self.network_id, self.token_address) .is_none(), Error::::SidechainAssetIsAlreadyRegistered ); @@ -934,7 +934,7 @@ impl OutgoingRemovePeer { if let Some(compat_hash) = self.compat_hash { // RemovePeerCompat request need to be processed first matches!( - RequestStatuses::::get(self.network_id, &compat_hash), + RequestStatuses::::get(self.network_id, compat_hash), Some(RequestStatus::Pending) ) } else { @@ -1085,7 +1085,7 @@ impl OutgoingPrepareForMigration { .expect("NetworkId can be always converted to u128; qed"), ) .to_big_endian(&mut network_id.0); - let contract_address: EthAddress = crate::BridgeContractAddress::::get(&self.network_id); + let contract_address: EthAddress = crate::BridgeContractAddress::::get(self.network_id); let signature_version = BridgeSignatureVersions::::get(self.network_id); let raw = match signature_version { BridgeSignatureVersion::V1 => encode_packed(&[ @@ -1181,7 +1181,7 @@ impl OutgoingMigrate { .expect("NetworkId can be always converted to u128; qed"), ) .to_big_endian(&mut network_id.0); - let contract_address: EthAddress = crate::BridgeContractAddress::::get(&self.network_id); + let contract_address: EthAddress = crate::BridgeContractAddress::::get(self.network_id); let signature_version = BridgeSignatureVersions::::get(self.network_id); let raw = match signature_version { BridgeSignatureVersion::V1 | BridgeSignatureVersion::V2 => encode_packed(&[ @@ -1321,7 +1321,7 @@ pub fn parse_hash_from_call( .get(tx_hash_arg_pos) .cloned() .and_then(Decoder::::parse_h256) - .ok_or_else(|| Error::::FailedToParseTxHashInCall.into()) + .ok_or(Error::::FailedToParseTxHashInCall) } macro_rules! impl_from_for_outgoing_requests { diff --git a/pallets/eth-bridge/src/rpc.rs b/pallets/eth-bridge/src/rpc.rs index 4d3be8570c..baff985ff2 100644 --- a/pallets/eth-bridge/src/rpc.rs +++ b/pallets/eth-bridge/src/rpc.rs @@ -232,10 +232,10 @@ impl Pallet { Ok(iter_storage::, _, _, _, _, _>( network_id, |(network_id, asset_id, kind)| { - let token_info = RegisteredSidechainToken::::get(network_id, &asset_id) + let token_info = RegisteredSidechainToken::::get(network_id, asset_id) .map(|x| H160(x.0)) .map(|address| { - let precision = SidechainAssetPrecision::::get(network_id, &asset_id); + let precision = SidechainAssetPrecision::::get(network_id, asset_id); (address, precision) }); let asset_precision = assets::Pallet::::get_asset_info(&asset_id).2; diff --git a/pallets/eth-bridge/src/tests/asset.rs b/pallets/eth-bridge/src/tests/asset.rs index e09cdec8d7..ba11bd99e6 100644 --- a/pallets/eth-bridge/src/tests/asset.rs +++ b/pallets/eth-bridge/src/tests/asset.rs @@ -98,10 +98,10 @@ fn should_mint_and_burn_sidechain_asset() { network_id: ETH_NETWORK_ID, should_take_fee: false, }); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); check_invariant(&asset_id, 100); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), + RuntimeOrigin::signed(alice), asset_id, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_u32.into(), @@ -118,17 +118,14 @@ fn should_not_burn_or_mint_sidechain_owned_asset() { #[track_caller] fn check_invariant() { - assert_eq!( - Assets::total_issuance(&XOR.into()).unwrap(), - balance!(350000) - ); + assert_eq!(Assets::total_issuance(&XOR).unwrap(), balance!(350000)); } ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); assert_eq!( - EthBridge::registered_asset(net_id, AssetId32::from(XOR)).unwrap(), + EthBridge::registered_asset(net_id, XOR).unwrap(), AssetKind::SidechainOwned ); check_invariant(); @@ -142,7 +139,7 @@ fn should_not_burn_or_mint_sidechain_owned_asset() { let incoming_transfer = IncomingRequest::Transfer(crate::IncomingTransfer { from: EthAddress::from([1; 20]), to: alice.clone(), - asset_id: XOR.into(), + asset_id: XOR, asset_kind: AssetKind::SidechainOwned, amount: 100u32.into(), author: alice.clone(), @@ -152,11 +149,11 @@ fn should_not_burn_or_mint_sidechain_owned_asset() { network_id: ETH_NETWORK_ID, should_take_fee: false, }); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); check_invariant(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - XOR.into(), + RuntimeOrigin::signed(alice), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_u32.into(), net_id, @@ -179,7 +176,7 @@ fn should_register_and_find_asset_ids() { ) .unwrap() .unwrap(); - assert_eq!(asset_id, XOR.into()); + assert_eq!(asset_id, XOR); assert_eq!(asset_kind, AssetKind::Thischain); let token_address = EthAddress::from(hex!("7d7ff6f42e928de241282b9606c8e98ea48526e2")); // registers unknown token @@ -315,7 +312,7 @@ fn should_reserve_owned_asset_on_different_networks() { ext.execute_with(|| { let alice = get_account_id_from_seed::("Alice"); - let asset_id = XOR.into(); + let asset_id = XOR; Assets::mint_to(&asset_id, &alice, &alice, 100u32.into()).unwrap(); Assets::mint_to( &asset_id, @@ -376,7 +373,7 @@ fn should_reserve_owned_asset_on_different_networks() { network_id: net_id_0, should_take_fee: false, }); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); let tx_hash = request_incoming( alice.clone(), H256::from_slice(&[2; 32]), @@ -390,14 +387,14 @@ fn should_reserve_owned_asset_on_different_networks() { asset_id, asset_kind: AssetKind::Thischain, amount: 50u32.into(), - author: alice.clone(), + author: alice, tx_hash, at_height: 1, timepoint: Default::default(), network_id: net_id_1, should_take_fee: false, }); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); assert_eq!(Assets::total_issuance(&asset_id).unwrap(), supply); }); } @@ -468,7 +465,7 @@ fn should_handle_sidechain_and_thischain_asset_on_different_networks() { network_id: net_id_0, should_take_fee: false, }); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( RuntimeOrigin::signed(alice.clone()), @@ -499,10 +496,10 @@ fn should_handle_sidechain_and_thischain_asset_on_different_networks() { network_id: net_id_1, should_take_fee: false, }); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), + RuntimeOrigin::signed(alice), asset_id, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 50_u32.into(), @@ -560,7 +557,7 @@ fn should_convert_amount_for_a_token_with_non_default_precision() { net_id, ) .unwrap(); - let sidechain_amount = 1 * 10_u128.pow(decimals as u32); + let sidechain_amount = 10_u128.pow(decimals as u32); let incoming_trasfer = IncomingRequest::try_from_contract_event( ContractEvent::Deposit(DepositEvent::new( alice.clone(), @@ -586,7 +583,7 @@ fn should_convert_amount_for_a_token_with_non_default_precision() { // Outgoing transfer part. assert_ok!(EthBridge::transfer_to_sidechain( RuntimeOrigin::signed(alice.clone()), - asset_id.clone(), + asset_id, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), balance!(1), net_id, @@ -637,7 +634,7 @@ fn should_convert_amount_for_indivisible_token() { // Outgoing transfer part. assert_ok!(EthBridge::transfer_to_sidechain( RuntimeOrigin::signed(alice.clone()), - asset_id.clone(), + asset_id, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 1, net_id, @@ -725,7 +722,7 @@ fn should_fail_convert_amount_for_a_token_with_non_default_precision() { H256::zero(), )), LoadIncomingTransactionRequest::new( - alice.clone(), + alice, tx_hash, Default::default(), IncomingTransactionRequestKind::Transfer, @@ -776,8 +773,8 @@ fn should_fail_tranfer_amount_with_dust_for_a_token_with_non_default_precision() .unwrap(); assert_noop!( EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - asset_id.clone(), + RuntimeOrigin::signed(alice), + asset_id, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), balance!(0.1000009), net_id, diff --git a/pallets/eth-bridge/src/tests/cancel.rs b/pallets/eth-bridge/src/tests/cancel.rs index 37195bb9be..5256e17f1e 100644 --- a/pallets/eth-bridge/src/tests/cancel.rs +++ b/pallets/eth-bridge/src/tests/cancel.rs @@ -66,19 +66,16 @@ fn should_cancel_ready_outgoing_request() { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); // Sending request part - Assets::mint_to(&XOR.into(), &alice, &alice, 100u32.into()).unwrap(); - assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), - 100u32.into() - ); + Assets::mint_to(&XOR, &alice, &alice, 100u32.into()).unwrap(); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 100u32.into()); assert_ok!(EthBridge::transfer_to_sidechain( RuntimeOrigin::signed(alice.clone()), - XOR.into(), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_u32.into(), net_id, )); - assert_eq!(Assets::total_balance(&XOR.into(), &alice).unwrap(), 0); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 0); let (outgoing_req, outgoing_req_hash) = approve_last_request(&state, net_id).expect("request wasn't approved"); @@ -99,10 +96,10 @@ fn should_cancel_ready_outgoing_request() { .unwrap(); let incoming_transfer = IncomingRequest::CancelOutgoingRequest(crate::IncomingCancelOutgoingRequest { - outgoing_request: outgoing_req.clone(), + outgoing_request: outgoing_req, outgoing_request_hash: outgoing_req_hash, initial_request_hash: request_hash, - tx_input: tx_input.clone(), + tx_input, author: alice.clone(), tx_hash, at_height: 1, @@ -110,11 +107,8 @@ fn should_cancel_ready_outgoing_request() { network_id: ETH_NETWORK_ID, }); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); - assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), - 100u32.into() - ); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 100u32.into()); }); } @@ -126,19 +120,16 @@ fn should_fail_cancel_ready_outgoing_request_with_wrong_approvals() { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); // Sending request part - Assets::mint_to(&XOR.into(), &alice, &alice, 100u32.into()).unwrap(); - assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), - 100u32.into() - ); + Assets::mint_to(&XOR, &alice, &alice, 100u32.into()).unwrap(); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 100u32.into()); assert_ok!(EthBridge::transfer_to_sidechain( RuntimeOrigin::signed(alice.clone()), - XOR.into(), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_u32.into(), net_id, )); - assert_eq!(Assets::total_balance(&XOR.into(), &alice).unwrap(), 0); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 0); let (outgoing_req, outgoing_req_hash) = approve_last_request(&state, net_id).expect("request wasn't approved"); @@ -159,10 +150,10 @@ fn should_fail_cancel_ready_outgoing_request_with_wrong_approvals() { .unwrap(); let incoming_transfer = IncomingRequest::CancelOutgoingRequest(crate::IncomingCancelOutgoingRequest { - outgoing_request: outgoing_req.clone(), + outgoing_request: outgoing_req, outgoing_request_hash: outgoing_req_hash, initial_request_hash: request_hash, - tx_input: tx_input.clone(), + tx_input, author: alice.clone(), tx_hash, at_height: 1, @@ -180,11 +171,11 @@ fn should_fail_cancel_ready_outgoing_request_with_wrong_approvals() { }); assert_incoming_request_registration_failed( &state, - incoming_transfer.clone(), + incoming_transfer, Error::InvalidContractInput, ) .unwrap(); - assert_eq!(Assets::total_balance(&XOR.into(), &alice).unwrap(), 0); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 0); }); } @@ -196,19 +187,16 @@ fn should_fail_cancel_unfinished_outgoing_request() { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); // Sending request part - Assets::mint_to(&XOR.into(), &alice, &alice, 100u32.into()).unwrap(); - assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), - 100u32.into() - ); + Assets::mint_to(&XOR, &alice, &alice, 100u32.into()).unwrap(); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 100u32.into()); assert_ok!(EthBridge::transfer_to_sidechain( RuntimeOrigin::signed(alice.clone()), - XOR.into(), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_u32.into(), net_id, )); - assert_eq!(Assets::total_balance(&XOR.into(), &alice).unwrap(), 0); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 0); let (outgoing_req, outgoing_req_hash) = last_outgoing_request(net_id).expect("request wasn't found"); @@ -241,11 +229,11 @@ fn should_fail_cancel_unfinished_outgoing_request() { }); assert_incoming_request_registration_failed( &state, - incoming_transfer.clone(), + incoming_transfer, Error::RequestIsNotReady, ) .unwrap(); - assert_eq!(Assets::total_balance(&XOR.into(), &alice).unwrap(), 0); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 0); }); } @@ -257,14 +245,14 @@ fn should_cancel_outgoing_prepared_requests() { vec![ AssetConfig::Thischain { id: PSWAP.into() }, AssetConfig::Sidechain { - id: XOR.into(), + id: XOR, sidechain_id: sp_core::H160::from_str("40fd72257597aa14c7231a7b1aaa29fce868f677") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }, AssetConfig::Sidechain { - id: VAL.into(), + id: VAL, sidechain_id: sp_core::H160::from_str("3f9feac97e5feb15d8bf98042a9a01b515da3dfb") .unwrap(), owned: true, @@ -272,8 +260,8 @@ fn should_cancel_outgoing_prepared_requests() { }, ], Some(vec![ - (XOR.into(), common::balance!(350000)), - (VAL.into(), common::balance!(33900000)), + (XOR, common::balance!(350000)), + (VAL, common::balance!(33900000)), ]), Some(5), Default::default(), @@ -294,8 +282,8 @@ fn should_cancel_outgoing_prepared_requests() { None, ) .unwrap(); - Assets::mint_to(&XOR.into(), &alice, &alice, 100u32.into()).unwrap(); - Assets::mint_to(&XOR.into(), &alice, bridge_acc, 100u32.into()).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100u32.into()).unwrap(); + Assets::mint_to(&XOR, &alice, bridge_acc, 100u32.into()).unwrap(); let ocw0_account_id = &state.networks[&net_id].ocw_keypairs[0].1; // Paris (preparation requests, testable request). let test_acc = AccountId32::new([10u8; 32]); @@ -306,7 +294,7 @@ fn should_cancel_outgoing_prepared_requests() { OutgoingTransfer { from: alice.clone(), to: EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), - asset_id: XOR.into(), + asset_id: XOR, amount: 1_u32.into(), nonce: 0, network_id: net_id, @@ -318,7 +306,7 @@ fn should_cancel_outgoing_prepared_requests() { vec![], OutgoingAddAsset { author: alice.clone(), - asset_id: DOT.into(), + asset_id: DOT, nonce: 0, network_id: net_id, timepoint: Default::default(), @@ -411,7 +399,7 @@ fn should_cancel_outgoing_prepared_requests() { peer_address: EthAddress::from([10u8; 20]), nonce: 0, network_id: net_id + 1, - peer_account_id: test_acc.clone(), + peer_account_id: test_acc, timepoint: Default::default(), compat_hash: None, } @@ -420,7 +408,7 @@ fn should_cancel_outgoing_prepared_requests() { ( vec![OutgoingRemovePeer { author: alice.clone(), - peer_address: crate::PeerAddress::::get(&net_id, &ocw0_account_id), + peer_address: crate::PeerAddress::::get(net_id, ocw0_account_id), nonce: 0, network_id: net_id, peer_account_id: ocw0_account_id.clone(), @@ -430,7 +418,7 @@ fn should_cancel_outgoing_prepared_requests() { .into()], OutgoingRemovePeerCompat { author: alice.clone(), - peer_address: crate::PeerAddress::::get(&net_id, &ocw0_account_id), + peer_address: crate::PeerAddress::::get(net_id, ocw0_account_id), nonce: 0, network_id: net_id, peer_account_id: ocw0_account_id.clone(), @@ -467,7 +455,7 @@ fn should_cancel_outgoing_prepared_requests() { .into(), ], OutgoingMigrate { - author: alice.clone(), + author: alice, new_contract_address: Default::default(), erc20_native_tokens: vec![], nonce: 0, @@ -516,11 +504,11 @@ fn should_cancel_outgoing_prepared_requests() { fn should_cancel_incoming_prepared_requests() { let net_id = ETH_NETWORK_ID; let mut builder = ExtBuilder::default(); - builder.add_currency(net_id, AssetConfig::Thischain { id: DOT.into() }); + builder.add_currency(net_id, AssetConfig::Thischain { id: DOT }); builder.add_currency( net_id, AssetConfig::Sidechain { - id: USDT.into(), + id: USDT, sidechain_id: H160(hex!("dAC17F958D2ee523a2206206994597C13D831ec7")), owned: false, precision: DEFAULT_BALANCE_PRECISION, @@ -530,9 +518,9 @@ fn should_cancel_incoming_prepared_requests() { ext.execute_with(|| { let alice = get_account_id_from_seed::("Alice"); let bridge_acc = &state.networks[&net_id].config.bridge_account_id; - Assets::mint_to(&XOR.into(), &alice, &alice, 100u32.into()).unwrap(); - Assets::mint_to(&XOR.into(), &alice, bridge_acc, 100u32.into()).unwrap(); - Assets::mint_to(&DOT.into(), &alice, bridge_acc, 100u32.into()).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100u32.into()).unwrap(); + Assets::mint_to(&XOR, &alice, bridge_acc, 100u32.into()).unwrap(); + Assets::mint_to(&DOT, &alice, bridge_acc, 100u32.into()).unwrap(); // Paris (preparation requests, testable request). let requests: Vec<(Vec>, OffchainRequest)> = vec![ ( @@ -540,7 +528,7 @@ fn should_cancel_incoming_prepared_requests() { IncomingTransfer { from: EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), to: alice.clone(), - asset_id: XOR.into(), + asset_id: XOR, asset_kind: AssetKind::SidechainOwned, amount: 1_u32.into(), author: alice.clone(), @@ -557,7 +545,7 @@ fn should_cancel_incoming_prepared_requests() { IncomingTransfer { from: EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), to: alice.clone(), - asset_id: DOT.into(), + asset_id: DOT, asset_kind: AssetKind::Thischain, amount: 1_u32.into(), author: alice.clone(), @@ -574,7 +562,7 @@ fn should_cancel_incoming_prepared_requests() { IncomingTransfer { from: EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), to: alice.clone(), - asset_id: USDT.into(), + asset_id: USDT, asset_kind: AssetKind::Sidechain, amount: 1_u32.into(), author: alice.clone(), @@ -590,7 +578,7 @@ fn should_cancel_incoming_prepared_requests() { vec![], IncomingAddToken { token_address: EthAddress::from([100; 20]), - asset_id: KSM.into(), + asset_id: KSM, precision: DEFAULT_BALANCE_PRECISION, symbol: Default::default(), name: Default::default(), @@ -636,7 +624,7 @@ fn should_cancel_incoming_prepared_requests() { ], IncomingMigrate { new_contract_address: Default::default(), - author: alice.clone(), + author: alice, tx_hash: Default::default(), network_id: net_id, timepoint: Default::default(), diff --git a/pallets/eth-bridge/src/tests/incoming_transfer.rs b/pallets/eth-bridge/src/tests/incoming_transfer.rs index c3b885b35e..d1089eb3d2 100644 --- a/pallets/eth-bridge/src/tests/incoming_transfer.rs +++ b/pallets/eth-bridge/src/tests/incoming_transfer.rs @@ -45,8 +45,7 @@ use crate::types::{Log, TransactionReceipt}; use crate::{types, AssetConfig, EthAddress, CONFIRMATION_INTERVAL}; use codec::Encode; use common::{ - balance, AssetId32, AssetInfoProvider, Balance, PredefinedAssetId, DEFAULT_BALANCE_PRECISION, - VAL, XOR, + balance, AssetInfoProvider, Balance, PredefinedAssetId, DEFAULT_BALANCE_PRECISION, VAL, XOR, }; use frame_support::assert_noop; use frame_support::dispatch::{DispatchErrorWithPostInfo, Pays, PostDispatchInfo}; @@ -70,7 +69,7 @@ fn should_not_accept_duplicated_incoming_transfer() { )); assert_err!( EthBridge::request_from_sidechain( - RuntimeOrigin::signed(alice.clone()), + RuntimeOrigin::signed(alice), H256::from_slice(&[1u8; 32]), IncomingTransactionRequestKind::Transfer.into(), net_id, @@ -97,7 +96,7 @@ fn should_not_accept_approved_incoming_transfer() { let incoming_transfer = IncomingRequest::Transfer(crate::IncomingTransfer { from: EthAddress::from([1; 20]), to: alice.clone(), - asset_id: XOR.into(), + asset_id: XOR, asset_kind: AssetKind::Thischain, amount: 100u32.into(), author: alice.clone(), @@ -107,10 +106,10 @@ fn should_not_accept_approved_incoming_transfer() { network_id: ETH_NETWORK_ID, should_take_fee: false, }); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); assert_err!( EthBridge::request_from_sidechain( - RuntimeOrigin::signed(alice.clone()), + RuntimeOrigin::signed(alice), H256::from_slice(&[1u8; 32]), IncomingTransactionRequestKind::Transfer.into(), net_id, @@ -136,7 +135,7 @@ fn should_success_incoming_transfer() { let incoming_transfer = IncomingRequest::Transfer(crate::IncomingTransfer { from: EthAddress::from([1; 20]), to: alice.clone(), - asset_id: XOR.into(), + asset_id: XOR, asset_kind: AssetKind::Thischain, amount: 100u32.into(), author: alice.clone(), @@ -146,12 +145,9 @@ fn should_success_incoming_transfer() { network_id: ETH_NETWORK_ID, should_take_fee: false, }); - assert_eq!(Assets::total_balance(&XOR.into(), &alice).unwrap(), 0); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); - assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), - 100u32.into() - ); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 0); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); + assert_eq!(Assets::total_balance(&XOR, &alice).unwrap(), 100u32.into()); }); } @@ -160,13 +156,13 @@ fn should_cancel_incoming_transfer() { let mut builder = ExtBuilder::new(); let net_id = builder.add_network( vec![AssetConfig::Sidechain { - id: XOR.into(), + id: XOR, sidechain_id: sp_core::H160::from_str("40fd72257597aa14c7231a7b1aaa29fce868f677") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }], - Some(vec![(XOR.into(), Balance::from(100u32))]), + Some(vec![(XOR, Balance::from(100u32))]), None, Default::default(), ); @@ -174,7 +170,7 @@ fn should_cancel_incoming_transfer() { ext.execute_with(|| { let bridge_acc_id = state.networks[&net_id].config.bridge_account_id.clone(); let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100000u32.into()).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100000u32.into()).unwrap(); let bob = get_account_id_from_seed::("Bob"); let tx_hash = request_incoming( alice.clone(), @@ -186,7 +182,7 @@ fn should_cancel_incoming_transfer() { let incoming_transfer = IncomingRequest::Transfer(crate::IncomingTransfer { from: EthAddress::from([1; 20]), to: alice.clone(), - asset_id: XOR.into(), + asset_id: XOR, asset_kind: AssetKind::Thischain, amount: 100u32.into(), author: alice.clone(), @@ -198,23 +194,23 @@ fn should_cancel_incoming_transfer() { }); assert_ok!(EthBridge::register_incoming_request( RuntimeOrigin::signed(bridge_acc_id.clone()), - incoming_transfer.clone(), + incoming_transfer, )); assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), + Assets::total_balance(&XOR, &alice).unwrap(), 100000u32.into() ); - Assets::unreserve(&XOR.into(), &bridge_acc_id, 100u32.into()).unwrap(); - Assets::transfer_from(&XOR.into(), &bridge_acc_id, &bob, 100u32.into()).unwrap(); + Assets::unreserve(&XOR, &bridge_acc_id, 100u32.into()).unwrap(); + Assets::transfer_from(&XOR, &bridge_acc_id, &bob, 100u32.into()).unwrap(); let req_hash = crate::LoadToIncomingRequestHash::::get(net_id, tx_hash); assert_ok!( EthBridge::finalize_incoming_request( - RuntimeOrigin::signed(bridge_acc_id.clone()), + RuntimeOrigin::signed(bridge_acc_id), req_hash, net_id, ), PostDispatchInfo { - pays_fee: Pays::No.into(), + pays_fee: Pays::No, actual_weight: None } ); @@ -224,7 +220,7 @@ fn should_cancel_incoming_transfer() { RequestStatus::Broken(_, _) )); assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), + Assets::total_balance(&XOR, &alice).unwrap(), 100000u32.into() ); }); @@ -237,7 +233,7 @@ fn should_fail_incoming_transfer() { let net_id = ETH_NETWORK_ID; let bridge_acc_id = state.networks[&net_id].config.bridge_account_id.clone(); let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100000u32.into()).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100000u32.into()).unwrap(); let tx_hash = request_incoming( alice.clone(), H256::from_slice(&[1u8; 32]), @@ -248,7 +244,7 @@ fn should_fail_incoming_transfer() { let incoming_transfer = IncomingRequest::Transfer(crate::IncomingTransfer { from: EthAddress::from([1; 20]), to: alice.clone(), - asset_id: XOR.into(), + asset_id: XOR, asset_kind: AssetKind::Thischain, amount: 100u32.into(), author: alice.clone(), @@ -265,7 +261,7 @@ fn should_fail_incoming_transfer() { let req_hash = crate::LoadToIncomingRequestHash::::get(net_id, tx_hash); assert!(crate::RequestsQueue::::get(net_id).contains(&req_hash)); assert_eq!( - *crate::Requests::get(net_id, &req_hash) + *crate::Requests::get(net_id, req_hash) .unwrap() .as_incoming() .unwrap() @@ -273,7 +269,7 @@ fn should_fail_incoming_transfer() { incoming_transfer ); assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), + Assets::total_balance(&XOR, &alice).unwrap(), 100000u32.into() ); assert_ok!(EthBridge::abort_request( @@ -283,12 +279,12 @@ fn should_fail_incoming_transfer() { net_id, )); assert!(matches!( - crate::RequestStatuses::::get(net_id, &req_hash).unwrap(), + crate::RequestStatuses::::get(net_id, req_hash).unwrap(), RequestStatus::Failed(_) )); assert!(!crate::RequestsQueue::::get(net_id).contains(&req_hash)); assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), + Assets::total_balance(&XOR, &alice).unwrap(), 100000u32.into() ); }); @@ -325,7 +321,7 @@ fn should_take_fee_in_incoming_transfer() { .unwrap(), 0 ); - assert_incoming_request_done(&state, incoming_transfer.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_transfer).unwrap(); let fee_amount = crate::IncomingTransfer::::fee_amount(); assert_eq!( assets::Pallet::::total_balance(&PredefinedAssetId::XOR.into(), &alice) @@ -354,7 +350,7 @@ fn should_fail_take_fee_in_incoming_transfer() { asset_id: PredefinedAssetId::XOR.into(), asset_kind: AssetKind::SidechainOwned, amount: 100u32.into(), - author: alice.clone(), + author: alice, tx_hash, at_height: 1, timepoint: Default::default(), @@ -363,7 +359,7 @@ fn should_fail_take_fee_in_incoming_transfer() { }); assert_incoming_request_registration_failed( &state, - incoming_transfer.clone(), + incoming_transfer, Error::UnableToPayFees, ) .unwrap(); @@ -392,7 +388,7 @@ fn should_fail_registering_incoming_request_if_preparation_failed() { asset_id: PSWAP.into(), asset_kind: AssetKind::Thischain, amount: 100u32.into(), - author: alice.clone(), + author: alice, tx_hash, at_height: 1, timepoint: Default::default(), @@ -402,11 +398,11 @@ fn should_fail_registering_incoming_request_if_preparation_failed() { let bridge_acc_id = state.networks[&net_id].config.bridge_account_id.clone(); assert_ok!( EthBridge::register_incoming_request( - RuntimeOrigin::signed(bridge_acc_id.clone()), - incoming_transfer.clone(), + RuntimeOrigin::signed(bridge_acc_id), + incoming_transfer, ), PostDispatchInfo { - pays_fee: Pays::No.into(), + pays_fee: Pays::No, actual_weight: None } ); @@ -420,9 +416,9 @@ fn should_fail_registering_incoming_request_if_preparation_failed() { ); assert!(!crate::RequestsQueue::::get(net_id).contains(&tx_hash)); assert!(!crate::RequestsQueue::::get(net_id).contains(&req_hash)); - assert!(crate::Requests::::get(net_id, &req_hash).is_none()); + assert!(crate::Requests::::get(net_id, req_hash).is_none()); assert!(matches!( - crate::RequestStatuses::::get(net_id, &req_hash).unwrap(), + crate::RequestStatuses::::get(net_id, req_hash).unwrap(), RequestStatus::Failed(_) )); }); @@ -444,10 +440,9 @@ fn should_import_incoming_request() { ); let incoming_transfer_result = IncomingRequest::try_from_contract_event( ContractEvent::Deposit(DepositEvent::new( - alice.clone(), + alice, 1, - crate::RegisteredSidechainToken::::get(net_id, AssetId32::from(XOR)) - .unwrap(), + crate::RegisteredSidechainToken::::get(net_id, XOR).unwrap(), H256::zero(), )), load_incoming_transaction_request.clone(), @@ -483,8 +478,7 @@ fn should_not_import_incoming_request_twice() { ContractEvent::Deposit(DepositEvent::new( alice.clone(), 1, - crate::RegisteredSidechainToken::::get(net_id, AssetId32::from(XOR)) - .unwrap(), + crate::RegisteredSidechainToken::::get(net_id, XOR).unwrap(), H256::zero(), )), load_incoming_transaction_request.clone(), @@ -515,13 +509,13 @@ fn ocw_should_handle_incoming_request() { let mut builder = ExtBuilder::new(); builder.add_network( vec![AssetConfig::Sidechain { - id: XOR.into(), + id: XOR, sidechain_id: sp_core::H160::from_str("40fd72257597aa14c7231a7b1aaa29fce868f677") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }], - Some(vec![(XOR.into(), common::balance!(350000))]), + Some(vec![(XOR, common::balance!(350000))]), Some(1), Default::default(), ); @@ -568,7 +562,7 @@ fn ocw_should_handle_incoming_request() { crate::RequestStatuses::::get(net_id, tx_hash).unwrap(), RequestStatus::Done ); - let hash = crate::LoadToIncomingRequestHash::::get(net_id, &tx_hash); + let hash = crate::LoadToIncomingRequestHash::::get(net_id, tx_hash); assert_eq!( crate::RequestStatuses::::get(net_id, hash).unwrap(), RequestStatus::Pending @@ -587,13 +581,13 @@ fn ocw_should_not_register_pending_incoming_request() { let mut builder = ExtBuilder::new(); builder.add_network( vec![AssetConfig::Sidechain { - id: XOR.into(), + id: XOR, sidechain_id: sp_core::H160::from_str("40fd72257597aa14c7231a7b1aaa29fce868f677") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }], - Some(vec![(XOR.into(), common::balance!(350000))]), + Some(vec![(XOR, common::balance!(350000))]), Some(1), Default::default(), ); @@ -642,9 +636,9 @@ fn ocw_should_not_register_pending_incoming_request() { crate::RequestStatuses::::get(net_id, tx_hash).unwrap(), RequestStatus::Done ); - state.push_response(receipt.clone()); + state.push_response(receipt); state.run_next_offchain_and_dispatch_txs(); - let hash = crate::LoadToIncomingRequestHash::::get(net_id, &tx_hash); + let hash = crate::LoadToIncomingRequestHash::::get(net_id, tx_hash); assert_eq!( crate::RequestStatuses::::get(net_id, hash).unwrap(), RequestStatus::Pending @@ -658,13 +652,13 @@ fn ocw_should_import_incoming_request() { let mut builder = ExtBuilder::new(); builder.add_network( vec![AssetConfig::Sidechain { - id: XOR.into(), + id: XOR, sidechain_id: sp_core::H160::from_str("40fd72257597aa14c7231a7b1aaa29fce868f677") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }], - Some(vec![(XOR.into(), common::balance!(350000))]), + Some(vec![(XOR, common::balance!(350000))]), Some(1), Default::default(), ); @@ -708,7 +702,7 @@ fn ocw_should_import_incoming_request() { crate::RequestStatuses::::get(net_id, tx_hash).unwrap(), RequestStatus::Done ); - let hash = crate::LoadToIncomingRequestHash::::get(net_id, &tx_hash); + let hash = crate::LoadToIncomingRequestHash::::get(net_id, tx_hash); assert_eq!( crate::RequestStatuses::::get(net_id, hash).unwrap(), RequestStatus::Done @@ -721,13 +715,13 @@ fn ocw_should_import_incoming_request_raw_response() { let mut builder = ExtBuilder::new(); builder.add_network( vec![AssetConfig::Sidechain { - id: VAL.into(), + id: VAL, sidechain_id: sp_core::H160::from_str("0x725c6b8cd3621eba4e0ccc40d532e7025b925a65") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }], - Some(vec![(VAL.into(), common::balance!(350000))]), + Some(vec![(VAL, common::balance!(350000))]), Some(1), hex!("077c2ec37d28709ce01ae740209bfbe185bd1eaa").into(), ); @@ -766,7 +760,7 @@ fn ocw_should_import_incoming_request_raw_response() { crate::RequestStatuses::::get(net_id, tx_hash).unwrap(), RequestStatus::Done ); - let hash = crate::LoadToIncomingRequestHash::::get(net_id, &tx_hash); + let hash = crate::LoadToIncomingRequestHash::::get(net_id, tx_hash); assert_eq!( crate::RequestStatuses::::get(net_id, hash).unwrap(), RequestStatus::Done @@ -779,13 +773,13 @@ fn ocw_should_not_import_pending_incoming_request() { let mut builder = ExtBuilder::new(); builder.add_network( vec![AssetConfig::Sidechain { - id: XOR.into(), + id: XOR, sidechain_id: sp_core::H160::from_str("40fd72257597aa14c7231a7b1aaa29fce868f677") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }], - Some(vec![(XOR.into(), common::balance!(350000))]), + Some(vec![(XOR, common::balance!(350000))]), Some(2), Default::default(), ); @@ -835,7 +829,7 @@ fn should_not_register_and_finalize_incoming_request_twice() { let net_id = ETH_NETWORK_ID; let bridge_acc_id = state.networks[&net_id].config.bridge_account_id.clone(); let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100000u32.into()).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100000u32.into()).unwrap(); let tx_hash = request_incoming( alice.clone(), H256::from_slice(&[1u8; 32]), @@ -846,10 +840,10 @@ fn should_not_register_and_finalize_incoming_request_twice() { let incoming_transfer = IncomingRequest::Transfer(crate::IncomingTransfer { from: EthAddress::from([1; 20]), to: alice.clone(), - asset_id: XOR.into(), + asset_id: XOR, asset_kind: AssetKind::Thischain, amount: 100u32.into(), - author: alice.clone(), + author: alice, tx_hash, at_height: 1, timepoint: Default::default(), @@ -863,7 +857,7 @@ fn should_not_register_and_finalize_incoming_request_twice() { assert_noop!( EthBridge::register_incoming_request( RuntimeOrigin::signed(bridge_acc_id.clone()), - incoming_transfer.clone(), + incoming_transfer, ), DispatchErrorWithPostInfo { post_info: Pays::No.into(), @@ -872,7 +866,7 @@ fn should_not_register_and_finalize_incoming_request_twice() { ); let req_hash = crate::LoadToIncomingRequestHash::::get(net_id, tx_hash); assert_ok!(EthBridge::finalize_incoming_request( - RuntimeOrigin::signed(bridge_acc_id.clone()), + RuntimeOrigin::signed(bridge_acc_id), req_hash, net_id, )); diff --git a/pallets/eth-bridge/src/tests/mock.rs b/pallets/eth-bridge/src/tests/mock.rs index 5e80f0ec5f..c03f553145 100644 --- a/pallets/eth-bridge/src/tests/mock.rs +++ b/pallets/eth-bridge/src/tests/mock.rs @@ -506,7 +506,7 @@ construct_runtime!( pub type SubstrateAccountId = <::Signer as IdentifyAccount>::AccountId; pub trait Mock { - fn on_request(pending_request: &http::PendingRequest, url: &str, body: Cow<'_, str>); + fn on_request(pending_request: &mut http::PendingRequest, url: &str, body: Cow<'_, str>); fn should_fail_send_signed_transaction() -> bool; } @@ -545,7 +545,7 @@ pub struct State { } impl Mock for State { - fn on_request(pending_request: &http::PendingRequest, url: &str, body: Cow<'_, str>) { + fn on_request(pending_request: &mut http::PendingRequest, url: &str, body: Cow<'_, str>) { OFFCHAIN_STATE.with(|oc_state_ref_cell| { RESPONSES.with(|ref_cell| { let oc_state_opt = oc_state_ref_cell.borrow(); @@ -726,7 +726,7 @@ impl Default for ExtBuilder { vec![ AssetConfig::Thischain { id: PSWAP.into() }, AssetConfig::Sidechain { - id: XOR.into(), + id: XOR, sidechain_id: sp_core::H160::from_str( "40fd72257597aa14c7231a7b1aaa29fce868f677", ) @@ -735,7 +735,7 @@ impl Default for ExtBuilder { precision: DEFAULT_BALANCE_PRECISION, }, AssetConfig::Sidechain { - id: VAL.into(), + id: VAL, sidechain_id: sp_core::H160::from_str( "3f9feac97e5feb15d8bf98042a9a01b515da3dfb", ) @@ -745,8 +745,8 @@ impl Default for ExtBuilder { }, ], Some(vec![ - (XOR.into(), common::balance!(350000)), - (VAL.into(), common::balance!(33900000)), + (XOR, common::balance!(350000)), + (VAL, common::balance!(33900000)), ]), Some(4), Default::default(), @@ -796,7 +796,7 @@ impl ExtBuilder { ExtendedNetworkConfig { config: NetworkConfig { initial_peers: peers_keys.iter().map(|(_, id, _)| id).cloned().collect(), - bridge_account_id: multisig_account_id.clone(), + bridge_account_id: multisig_account_id, assets, bridge_contract_address: contract_address, reserves: reserves.unwrap_or_default(), @@ -817,7 +817,7 @@ impl ExtBuilder { let mut bridge_accounts = Vec::new(); let mut bridge_network_configs = Vec::new(); let mut endowed_accounts: Vec<(_, AssetId32, _)> = Vec::new(); - let network_ids: Vec<_> = self.networks.iter().map(|(id, _)| *id).collect(); + let network_ids: Vec<_> = self.networks.keys().copied().collect(); let mut networks: Vec<_> = self.networks.clone().into_iter().collect(); networks.sort_by(|(x, _), (y, _)| x.cmp(y)); let mut offchain_guard = offchain.0.write(); @@ -838,7 +838,7 @@ impl ExtBuilder { |asset_config| { ( ext_network.config.bridge_account_id.clone(), - asset_config.asset_id().clone(), + *asset_config.asset_id(), 0, ) }, @@ -949,7 +949,7 @@ impl ExtBuilder { .unwrap(); TokensConfig { - balances: endowed_accounts.clone(), + balances: endowed_accounts, } .assimilate_storage(&mut storage) .unwrap(); diff --git a/pallets/eth-bridge/src/tests/mod.rs b/pallets/eth-bridge/src/tests/mod.rs index 3f6b05e149..6edf6da10d 100644 --- a/pallets/eth-bridge/src/tests/mod.rs +++ b/pallets/eth-bridge/src/tests/mod.rs @@ -111,7 +111,7 @@ pub fn approve_request( 0 }; let sigs_needed = majority(keypairs.len()) + additional_sigs; - let current_status = crate::RequestStatuses::::get(net_id, &request_hash).unwrap(); + let current_status = crate::RequestStatuses::::get(net_id, request_hash).unwrap(); ensure!( EthBridge::approve_request( RuntimeOrigin::signed(account_id.clone()), @@ -207,7 +207,7 @@ pub fn request_incoming( } let hash = last_request.hash(); assert_eq!( - crate::RequestStatuses::::get(net_id, &hash).unwrap(), + crate::RequestStatuses::::get(net_id, hash).unwrap(), RequestStatus::Pending ); Ok(hash) @@ -240,7 +240,7 @@ pub fn assert_incoming_request_done( ); assert!(crate::RequestsQueue::::get(net_id).contains(&req_hash)); assert_eq!( - *crate::Requests::get(net_id, &req_hash) + *crate::Requests::get(net_id, req_hash) .unwrap() .as_incoming() .unwrap() @@ -248,12 +248,12 @@ pub fn assert_incoming_request_done( incoming_request ); assert_ok!(EthBridge::finalize_incoming_request( - RuntimeOrigin::signed(bridge_acc_id.clone()), + RuntimeOrigin::signed(bridge_acc_id), req_hash, net_id, )); assert_eq!( - crate::RequestStatuses::::get(net_id, &req_hash).unwrap(), + crate::RequestStatuses::::get(net_id, req_hash).unwrap(), RequestStatus::Done ); assert!(!crate::RequestsQueue::::get(net_id).contains(&req_hash)); @@ -276,11 +276,11 @@ pub fn assert_incoming_request_registration_failed( ); assert_ok!( EthBridge::register_incoming_request( - RuntimeOrigin::signed(bridge_acc_id.clone()), + RuntimeOrigin::signed(bridge_acc_id), incoming_request.clone(), ), PostDispatchInfo { - pays_fee: Pays::No.into(), + pays_fee: Pays::No, actual_weight: None } ); diff --git a/pallets/eth-bridge/src/tests/ocw.rs b/pallets/eth-bridge/src/tests/ocw.rs index fa3c81b96c..6dcc18b252 100644 --- a/pallets/eth-bridge/src/tests/ocw.rs +++ b/pallets/eth-bridge/src/tests/ocw.rs @@ -53,10 +53,10 @@ fn ocw_should_not_handle_non_finalized_outgoing_request() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - XOR.into(), + RuntimeOrigin::signed(alice), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100, net_id, @@ -76,10 +76,10 @@ fn ocw_should_resend_signed_transaction_on_timeout() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - XOR.into(), + RuntimeOrigin::signed(alice), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100, net_id, @@ -117,10 +117,10 @@ fn ocw_should_remove_pending_transaction_on_max_retries() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - XOR.into(), + RuntimeOrigin::signed(alice), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100, net_id, @@ -144,18 +144,18 @@ fn ocw_should_remove_pending_transaction_on_max_retries() { #[test] fn should_not_abort_request_with_failed_to_send_signed_tx_error() { - assert_eq!(Error::FailedToSendSignedTransaction.should_abort(), false); + assert!(!Error::FailedToSendSignedTransaction.should_abort()); let mut builder = ExtBuilder::new(); builder.add_network( vec![AssetConfig::Sidechain { - id: XOR.into(), + id: XOR, sidechain_id: sp_core::H160::from_str("40fd72257597aa14c7231a7b1aaa29fce868f677") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }], - Some(vec![(XOR.into(), common::balance!(350000))]), + Some(vec![(XOR, common::balance!(350000))]), Some(2), Default::default(), ); @@ -163,10 +163,10 @@ fn should_not_abort_request_with_failed_to_send_signed_tx_error() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - XOR.into(), + RuntimeOrigin::signed(alice), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100, net_id, @@ -212,13 +212,13 @@ fn ocw_should_abort_missing_transaction() { let mut builder = ExtBuilder::new(); builder.add_network( vec![AssetConfig::Sidechain { - id: VAL.into(), + id: VAL, sidechain_id: sp_core::H160::from_str("0x725c6b8cd3621eba4e0ccc40d532e7025b925a65") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }], - Some(vec![(VAL.into(), common::balance!(350000))]), + Some(vec![(VAL, common::balance!(350000))]), Some(1), Default::default(), ); @@ -228,7 +228,7 @@ fn ocw_should_abort_missing_transaction() { let alice = get_account_id_from_seed::("Alice"); let tx_hash = H256([1; 32]); assert_ok!(EthBridge::request_from_sidechain( - RuntimeOrigin::signed(alice.clone()), + RuntimeOrigin::signed(alice), tx_hash, IncomingRequestKind::Transaction(IncomingTransactionRequestKind::Transfer), net_id @@ -254,10 +254,10 @@ fn should_reapprove_on_long_pending() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - XOR.into(), + RuntimeOrigin::signed(alice), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 10, net_id, @@ -292,13 +292,13 @@ fn should_resend_incoming_requests_from_failed_offchain_queue() { let mut builder = ExtBuilder::new(); builder.add_network( vec![AssetConfig::Sidechain { - id: XOR.into(), + id: XOR, sidechain_id: sp_core::H160::from_str("40fd72257597aa14c7231a7b1aaa29fce868f677") .unwrap(), owned: true, precision: DEFAULT_BALANCE_PRECISION, }], - Some(vec![(XOR.into(), common::balance!(350000))]), + Some(vec![(XOR, common::balance!(350000))]), Some(1), Default::default(), ); @@ -306,7 +306,7 @@ fn should_resend_incoming_requests_from_failed_offchain_queue() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100).unwrap(); let mut log = Log::default(); log.topics = vec![types::H256(hex!( diff --git a/pallets/eth-bridge/src/tests/outgoing_tranfser.rs b/pallets/eth-bridge/src/tests/outgoing_tranfser.rs index b0bdf22813..20bff74b90 100644 --- a/pallets/eth-bridge/src/tests/outgoing_tranfser.rs +++ b/pallets/eth-bridge/src/tests/outgoing_tranfser.rs @@ -50,20 +50,20 @@ fn should_approve_outgoing_transfer() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100000u32.into()).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100000u32.into()).unwrap(); assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), + Assets::total_balance(&XOR, &alice).unwrap(), 100000u32.into() ); assert_ok!(EthBridge::transfer_to_sidechain( RuntimeOrigin::signed(alice.clone()), - XOR.into(), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_u32.into(), net_id, )); assert_eq!( - Assets::total_balance(&XOR.into(), &alice).unwrap(), + Assets::total_balance(&XOR, &alice).unwrap(), 99900u32.into() ); approve_last_request(&state, net_id).expect("request wasn't approved"); @@ -76,7 +76,7 @@ fn should_reserve_and_burn_sidechain_asset_in_outgoing_transfer() { let mut builder = ExtBuilder::new(); builder.add_network( vec![AssetConfig::Sidechain { - id: USDT.into(), + id: USDT, sidechain_id: H160(hex!("dAC17F958D2ee523a2206206994597C13D831ec7")), owned: false, precision: DEFAULT_BALANCE_PRECISION, @@ -90,26 +90,26 @@ fn should_reserve_and_burn_sidechain_asset_in_outgoing_transfer() { ext.execute_with(|| { let bridge_acc = &state.networks[&net_id].config.bridge_account_id; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&USDT.into(), &alice, &alice, 100000u32.into()).unwrap(); + Assets::mint_to(&USDT, &alice, &alice, 100000u32.into()).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - USDT.into(), + RuntimeOrigin::signed(alice), + USDT, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_u32.into(), net_id, )); - assert_eq!(Assets::free_balance(&USDT.into(), &bridge_acc).unwrap(), 0); + assert_eq!(Assets::free_balance(&USDT, bridge_acc).unwrap(), 0); // Sidechain asset was reserved. assert_eq!( - Assets::total_balance(&USDT.into(), &bridge_acc).unwrap(), + Assets::total_balance(&USDT, bridge_acc).unwrap(), 100u32.into() ); approve_last_request(&state, net_id).expect("request wasn't approved"); // Sidechain asset was burnt. - assert_eq!(Assets::total_balance(&USDT.into(), &bridge_acc).unwrap(), 0); + assert_eq!(Assets::total_balance(&USDT, bridge_acc).unwrap(), 0); assert_eq!( - Assets::free_balance(&USDT.into(), &bridge_acc).unwrap(), - Assets::total_balance(&USDT.into(), &bridge_acc).unwrap() + Assets::free_balance(&USDT, bridge_acc).unwrap(), + Assets::total_balance(&USDT, bridge_acc).unwrap() ); }); } @@ -131,27 +131,27 @@ fn should_reserve_and_unreserve_thischain_asset_in_outgoing_transfer() { let alice = get_account_id_from_seed::("Alice"); Assets::mint_to(&PSWAP.into(), &alice, &alice, 100000u32.into()).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), + RuntimeOrigin::signed(alice), PSWAP.into(), EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_u32.into(), net_id, )); - assert_eq!(Assets::free_balance(&PSWAP.into(), &bridge_acc).unwrap(), 0); + assert_eq!(Assets::free_balance(&PSWAP.into(), bridge_acc).unwrap(), 0); // Thischain asset was reserved. assert_eq!( - Assets::total_balance(&PSWAP.into(), &bridge_acc).unwrap(), + Assets::total_balance(&PSWAP.into(), bridge_acc).unwrap(), 100u32.into() ); approve_last_request(&state, net_id).expect("request wasn't approved"); // Thischain asset was unreserved. assert_eq!( - Assets::total_balance(&PSWAP.into(), &bridge_acc).unwrap(), + Assets::total_balance(&PSWAP.into(), bridge_acc).unwrap(), 100u32.into() ); assert_eq!( - Assets::free_balance(&PSWAP.into(), &bridge_acc).unwrap(), - Assets::total_balance(&PSWAP.into(), &bridge_acc).unwrap() + Assets::free_balance(&PSWAP.into(), bridge_acc).unwrap(), + Assets::total_balance(&PSWAP.into(), bridge_acc).unwrap() ); }); } @@ -166,7 +166,7 @@ fn should_not_transfer() { assert_err!( EthBridge::transfer_to_sidechain( RuntimeOrigin::signed(alice.clone()), - KSM.into(), + KSM, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_u32.into(), net_id, @@ -174,8 +174,8 @@ fn should_not_transfer() { Error::UnsupportedToken ); assert!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - XOR.into(), + RuntimeOrigin::signed(alice), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100_000_000_u32.into(), net_id, @@ -191,18 +191,18 @@ fn should_register_outgoing_transfer() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100000u32.into()).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100000u32.into()).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( RuntimeOrigin::signed(alice.clone()), - XOR.into(), + XOR, EthAddress::from([1; 20]), 100u32.into(), net_id, )); let outgoing_transfer = OutgoingTransfer:: { - from: alice.clone(), + from: alice, to: EthAddress::from([1; 20]), - asset_id: XOR.into(), + asset_id: XOR, amount: 100_u32.into(), nonce: 3, network_id: ETH_NETWORK_ID, @@ -224,10 +224,10 @@ fn ocw_should_handle_outgoing_request() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - XOR.into(), + RuntimeOrigin::signed(alice), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100, net_id, @@ -247,10 +247,10 @@ fn ocw_should_not_handle_outgoing_request_twice() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - Assets::mint_to(&XOR.into(), &alice, &alice, 100).unwrap(); + Assets::mint_to(&XOR, &alice, &alice, 100).unwrap(); assert_ok!(EthBridge::transfer_to_sidechain( - RuntimeOrigin::signed(alice.clone()), - XOR.into(), + RuntimeOrigin::signed(alice), + XOR, EthAddress::from_str("19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A").unwrap(), 100, net_id, diff --git a/pallets/eth-bridge/src/tests/peer.rs b/pallets/eth-bridge/src/tests/peer.rs index fd2f3c0f16..98482a9db1 100644 --- a/pallets/eth-bridge/src/tests/peer.rs +++ b/pallets/eth-bridge/src/tests/peer.rs @@ -81,7 +81,7 @@ fn should_add_peer_in_eth_network() { new_peer_id ); assert_eq!( - crate::PeerAccountId::::get(&net_id, &new_peer_address), + crate::PeerAccountId::::get(net_id, new_peer_address), Some(new_peer_id.clone()) ); assert_eq!( @@ -108,7 +108,7 @@ fn should_add_peer_in_eth_network() { timepoint: Default::default(), network_id: net_id, }); - assert_incoming_request_done(&state, incoming_request.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_request).unwrap(); assert!(!crate::Peers::::get(net_id).contains(&new_peer_id)); // peer is added to XOR contract let tx_hash = request_incoming( @@ -130,7 +130,7 @@ fn should_add_peer_in_eth_network() { timepoint: Default::default(), network_id: net_id, }); - assert_incoming_request_done(&state, incoming_request.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_request).unwrap(); assert!(!crate::Peers::::get(net_id).contains(&new_peer_id)); // peer is added to VAL contract let tx_hash = request_incoming( @@ -146,7 +146,7 @@ fn should_add_peer_in_eth_network() { peer_address: new_peer_address, added: true, contract: ChangePeersContract::VAL, - author: alice.clone(), + author: alice, tx_hash, at_height: 3, timepoint: Default::default(), @@ -154,10 +154,10 @@ fn should_add_peer_in_eth_network() { }); assert!(!crate::Peers::::get(net_id).contains(&new_peer_id)); assert!(crate::PendingPeer::::get(net_id).is_some()); - assert_incoming_request_done(&state, incoming_request.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_request).unwrap(); assert!(crate::PendingPeer::::get(net_id).is_none()); assert!(crate::Peers::::get(net_id).contains(&new_peer_id)); - assert!(bridge_multisig::Accounts::::get(&bridge_acc_id) + assert!(bridge_multisig::Accounts::::get(bridge_acc_id) .unwrap() .is_signatory(&new_peer_id)); }); @@ -197,7 +197,7 @@ fn should_add_peer_in_simple_networks() { new_peer_id ); assert_eq!( - crate::PeerAccountId::::get(&net_id, &new_peer_address), + crate::PeerAccountId::::get(net_id, new_peer_address), Some(new_peer_id.clone()) ); assert_eq!( @@ -216,17 +216,17 @@ fn should_add_peer_in_simple_networks() { peer_account_id: Some(new_peer_id.clone()), peer_address: new_peer_address, removed: false, - author: alice.clone(), + author: alice, tx_hash, at_height: 1, timepoint: Default::default(), network_id: net_id, }); assert!(!crate::Peers::::get(net_id).contains(&new_peer_id)); - assert_incoming_request_done(&state, incoming_request.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_request).unwrap(); assert!(crate::PendingPeer::::get(net_id).is_none()); assert!(crate::Peers::::get(net_id).contains(&new_peer_id)); - assert!(bridge_multisig::Accounts::::get(&bridge_acc_id) + assert!(bridge_multisig::Accounts::::get(bridge_acc_id) .unwrap() .is_signatory(&new_peer_id)); }); @@ -256,16 +256,16 @@ fn should_remove_peer_in_simple_network() { &crate::PendingPeer::::get(net_id).unwrap(), peer_id ); - assert!(crate::Peers::::get(net_id).contains(&peer_id)); + assert!(crate::Peers::::get(net_id).contains(peer_id)); approve_next_request(&state, net_id).expect("request wasn't approved"); assert_eq!( &crate::PendingPeer::::get(net_id).unwrap(), peer_id ); - assert!(!crate::Peers::::get(net_id).contains(&peer_id)); + assert!(!crate::Peers::::get(net_id).contains(peer_id)); assert!(!bridge_multisig::Accounts::::get(&bridge_acc_id) .unwrap() - .is_signatory(&peer_id)); + .is_signatory(peer_id)); // incoming request part let tx_hash = request_incoming( @@ -280,18 +280,18 @@ fn should_remove_peer_in_simple_network() { peer_account_id: Some(peer_id.clone()), peer_address, removed: true, - author: alice.clone(), + author: alice, tx_hash, at_height: 1, timepoint: Default::default(), network_id: net_id, }); - assert_incoming_request_done(&state, incoming_request.clone()).unwrap(); + assert_incoming_request_done(&state, incoming_request).unwrap(); assert!(crate::PendingPeer::::get(net_id).is_none()); - assert!(!crate::Peers::::get(net_id).contains(&peer_id)); + assert!(!crate::Peers::::get(net_id).contains(peer_id)); assert!(!bridge_multisig::Accounts::::get(&bridge_acc_id) .unwrap() - .is_signatory(&peer_id)); + .is_signatory(peer_id)); }); } @@ -320,17 +320,17 @@ fn should_remove_peer_in_eth_network() { &crate::PendingPeer::::get(net_id).unwrap(), peer_id ); - assert!(crate::Peers::::get(net_id).contains(&peer_id)); + assert!(crate::Peers::::get(net_id).contains(peer_id)); approve_next_request(&state, net_id).expect("request wasn't approved"); approve_next_request(&state, net_id).expect("request wasn't approved"); assert_eq!( &crate::PendingPeer::::get(net_id).unwrap(), peer_id ); - assert!(!crate::Peers::::get(net_id).contains(&peer_id)); + assert!(!crate::Peers::::get(net_id).contains(peer_id)); assert!(!bridge_multisig::Accounts::::get(&bridge_acc_id) .unwrap() - .is_signatory(&peer_id)); + .is_signatory(peer_id)); // incoming request part let tx_hash = request_incoming( @@ -351,8 +351,8 @@ fn should_remove_peer_in_eth_network() { timepoint: Default::default(), network_id: net_id, }); - assert_incoming_request_done(&state, incoming_request.clone()).unwrap(); - assert!(!crate::Peers::::get(net_id).contains(&peer_id)); + assert_incoming_request_done(&state, incoming_request).unwrap(); + assert!(!crate::Peers::::get(net_id).contains(peer_id)); // peer is added to XOR contract let tx_hash = request_incoming( alice.clone(), @@ -373,8 +373,8 @@ fn should_remove_peer_in_eth_network() { timepoint: Default::default(), network_id: net_id, }); - assert_incoming_request_done(&state, incoming_request.clone()).unwrap(); - assert!(!crate::Peers::::get(net_id).contains(&peer_id)); + assert_incoming_request_done(&state, incoming_request).unwrap(); + assert!(!crate::Peers::::get(net_id).contains(peer_id)); // peer is added to VAL contract let tx_hash = request_incoming( alice.clone(), @@ -389,19 +389,19 @@ fn should_remove_peer_in_eth_network() { peer_address, added: false, contract: ChangePeersContract::VAL, - author: alice.clone(), + author: alice, tx_hash, at_height: 3, timepoint: Default::default(), network_id: net_id, }); - assert!(!crate::Peers::::get(net_id).contains(&peer_id)); - assert_incoming_request_done(&state, incoming_request.clone()).unwrap(); + assert!(!crate::Peers::::get(net_id).contains(peer_id)); + assert_incoming_request_done(&state, incoming_request).unwrap(); assert!(crate::PendingPeer::::get(net_id).is_none()); - assert!(!crate::Peers::::get(net_id).contains(&peer_id)); + assert!(!crate::Peers::::get(net_id).contains(peer_id)); assert!(!bridge_multisig::Accounts::::get(&bridge_acc_id) .unwrap() - .is_signatory(&peer_id)); + .is_signatory(peer_id)); }); } @@ -427,7 +427,7 @@ fn should_not_allow_add_and_remove_peer_only_to_authority() { ); assert_err!( EthBridge::add_peer( - RuntimeOrigin::signed(bob.clone()), + RuntimeOrigin::signed(bob), peer_id.clone(), EthAddress::from(&hex!("2222222222222222222222222222222222222222")), net_id, @@ -514,11 +514,11 @@ fn should_parse_add_peer_on_old_contract() { assert_eq!( inc_req, IncomingRequest::ChangePeersCompat(IncomingChangePeersCompat { - peer_account_id: new_peer_id.clone(), + peer_account_id: new_peer_id, peer_address: new_peer_address, added: true, contract: ChangePeersContract::XOR, - author: alice.clone(), + author: alice, tx_hash, at_height: 1, timepoint: Default::default(), @@ -570,7 +570,7 @@ fn should_parse_remove_peer_on_old_contract() { peer_address: new_peer_address, added: false, contract: ChangePeersContract::VAL, - author: alice.clone(), + author: alice, tx_hash, at_height: 1, timepoint: Default::default(), diff --git a/pallets/eth-bridge/src/types/substrate.rs b/pallets/eth-bridge/src/types/substrate.rs index 29485f0c24..f30019ca72 100644 --- a/pallets/eth-bridge/src/types/substrate.rs +++ b/pallets/eth-bridge/src/types/substrate.rs @@ -29,7 +29,7 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. use crate::types::{H256, U64}; -use alloc::string::String; +use alloc::string::{String, ToString}; use codec::{Decode, Encode}; use serde::Deserialize; #[cfg(test)] @@ -57,9 +57,9 @@ impl<'a> serde::Deserialize<'a> for OpaqueExtrinsic { D: serde::Deserializer<'a>, { let s: String = Deserialize::deserialize(de)?; - let r = common::utils::parse_hex_string(&s).ok_or(serde::de::Error::custom(format!( - "Expected hex string \"0x..\"" - )))?; + let r = common::utils::parse_hex_string(&s).ok_or(serde::de::Error::custom( + "Expected hex string \"0x..\"".to_string(), + ))?; Decode::decode(&mut &r[..]) .map_err(|e| serde::de::Error::custom(format!("Decode error: {}", e))) } diff --git a/pallets/eth-bridge/src/types/transaction_request.rs b/pallets/eth-bridge/src/types/transaction_request.rs index 9dcbbc9132..7dd5967ff0 100644 --- a/pallets/eth-bridge/src/types/transaction_request.rs +++ b/pallets/eth-bridge/src/types/transaction_request.rs @@ -140,7 +140,7 @@ mod tests { "value": "0x4c4b40", "data": "0x010203" }"#; - let deserialized: CallRequest = serde_json::from_str(&serialized).unwrap(); + let deserialized: CallRequest = serde_json::from_str(serialized).unwrap(); assert_eq!(deserialized.from, None); assert_eq!(deserialized.to, Some(EthAddress::from_low_u64_be(5))); @@ -193,7 +193,7 @@ mod tests { "block": 5 } }"#; - let deserialized: TransactionRequest = serde_json::from_str(&serialized).unwrap(); + let deserialized: TransactionRequest = serde_json::from_str(serialized).unwrap(); assert_eq!(deserialized.from, EthAddress::from_low_u64_be(5)); assert_eq!(deserialized.to, None); diff --git a/pallets/eth-bridge/src/util.rs b/pallets/eth-bridge/src/util.rs index 2ac23cec75..55eac42849 100644 --- a/pallets/eth-bridge/src/util.rs +++ b/pallets/eth-bridge/src/util.rs @@ -76,14 +76,14 @@ impl Decoder { self.tokens .pop() .and_then(|x| x.into_string()) - .ok_or_else(|| Error::::InvalidString.into()) + .ok_or(Error::::InvalidString) } pub fn next_bool(&mut self) -> Result> { self.tokens .pop() .and_then(|x| x.into_bool()) - .ok_or_else(|| Error::::InvalidBool.into()) + .ok_or(Error::::InvalidBool) } #[allow(unused)] @@ -93,7 +93,7 @@ impl Decoder { .and_then(|x| x.into_uint()) .filter(|x| x.as_u32() <= u8::MAX as u32) .map(|x| x.as_u32() as u8) - .ok_or_else(|| Error::::InvalidByte.into()) + .ok_or(Error::::InvalidByte) } pub fn next_address(&mut self) -> Result> { @@ -108,42 +108,39 @@ impl Decoder { #[allow(unused)] pub fn next_balance(&mut self) -> Result> { - Ok(Balance::from( - u128::try_from( - self.tokens - .pop() - .and_then(|x| x.into_uint()) - .ok_or(Error::::InvalidUint)?, - ) - .map_err(|_| Error::::InvalidBalance)?, - )) + u128::try_from( + self.tokens + .pop() + .and_then(|x| x.into_uint()) + .ok_or(Error::::InvalidUint)?, + ) + .map_err(|_| Error::::InvalidBalance) } pub fn next_amount(&mut self) -> Result> { - Ok(u128::try_from( + u128::try_from( self.tokens .pop() .and_then(|x| x.into_uint()) .ok_or(Error::::InvalidUint)?, ) - .map_err(|_| Error::::InvalidAmount)?) + .map_err(|_| Error::::InvalidAmount) } pub fn next_account_id(&mut self) -> Result> { - Ok(T::AccountId::decode( + T::AccountId::decode( &mut &self .tokens .pop() .and_then(|x| x.into_fixed_bytes()) .ok_or(Error::::InvalidAccountId)?[..], ) - .map_err(|_| Error::::InvalidAccountId)?) + .map_err(|_| Error::::InvalidAccountId) } #[allow(unused)] pub fn next_asset_id(&mut self) -> Result> { - Ok(T::AssetId::decode(&mut &self.next_h256()?.0[..]) - .map_err(|_| Error::::InvalidAssetId)?) + T::AssetId::decode(&mut &self.next_h256()?.0[..]).map_err(|_| Error::::InvalidAssetId) } pub fn parse_h256(token: Token) -> Option { @@ -156,7 +153,7 @@ impl Decoder { self.tokens .pop() .and_then(Self::parse_h256) - .ok_or_else(|| Error::::InvalidH256.into()) + .ok_or(Error::::InvalidH256) } #[allow(unused)] @@ -164,7 +161,7 @@ impl Decoder { self.tokens .pop() .and_then(|x| x.into_array()) - .ok_or_else(|| Error::::InvalidArray.into()) + .ok_or(Error::::InvalidArray) } #[allow(unused)] From cbc0da33b34aec1630a402b028a220d50e3db057 Mon Sep 17 00:00:00 2001 From: Nikita Smirnov Date: Mon, 23 Oct 2023 12:01:36 +0200 Subject: [PATCH 6/6] eth-bridge clippy fixes pt2 --- pallets/eth-bridge/src/lib.rs | 17 ++++---- pallets/eth-bridge/src/requests/mod.rs | 9 +---- pallets/eth-bridge/src/rpc.rs | 1 + .../eth-bridge/src/tests/incoming_transfer.rs | 40 +++++++++++-------- pallets/eth-bridge/src/tests/mock.rs | 2 +- pallets/eth-bridge/src/tests/mod.rs | 6 +++ pallets/eth-bridge/src/tests/ocw.rs | 10 +++-- pallets/eth-bridge/src/types/log.rs | 14 +++---- 8 files changed, 51 insertions(+), 48 deletions(-) diff --git a/pallets/eth-bridge/src/lib.rs b/pallets/eth-bridge/src/lib.rs index cf5b8bcdd5..61891f15cd 100644 --- a/pallets/eth-bridge/src/lib.rs +++ b/pallets/eth-bridge/src/lib.rs @@ -1226,20 +1226,17 @@ pub mod pallet { impl Error { pub fn should_retry(&self) -> bool { - match self { + matches!( + self, Self::HttpFetchingError - | Self::NoLocalAccountForSigning - | Self::FailedToSignMessage - | Self::JsonDeserializationError => true, - _ => false, - } + | Self::NoLocalAccountForSigning + | Self::FailedToSignMessage + | Self::JsonDeserializationError + ) } pub fn should_abort(&self) -> bool { - match self { - Self::FailedToSendSignedTransaction => false, - _ => true, - } + !matches!(self, Self::FailedToSendSignedTransaction) } } diff --git a/pallets/eth-bridge/src/requests/mod.rs b/pallets/eth-bridge/src/requests/mod.rs index 9a80971f52..ea60bb1993 100644 --- a/pallets/eth-bridge/src/requests/mod.rs +++ b/pallets/eth-bridge/src/requests/mod.rs @@ -816,18 +816,11 @@ impl OffchainRequest { } pub fn is_load_incoming(&self) -> bool { - // match self { - // OffchainRequest::LoadIncoming(..) => true, - // _ => false, - // } matches!(self, OffchainRequest::LoadIncoming(..)) } pub fn is_incoming(&self) -> bool { - match self { - OffchainRequest::Incoming(..) => true, - _ => false, - } + matches!(self, OffchainRequest::Incoming(..)) } pub fn should_be_skipped(&self) -> bool { diff --git a/pallets/eth-bridge/src/rpc.rs b/pallets/eth-bridge/src/rpc.rs index baff985ff2..461128f69d 100644 --- a/pallets/eth-bridge/src/rpc.rs +++ b/pallets/eth-bridge/src/rpc.rs @@ -219,6 +219,7 @@ impl Pallet { } /// Get registered assets and tokens. + #[allow(clippy::type_complexity)] pub fn get_registered_assets( network_id: Option, ) -> Result< diff --git a/pallets/eth-bridge/src/tests/incoming_transfer.rs b/pallets/eth-bridge/src/tests/incoming_transfer.rs index d1089eb3d2..3f1081963b 100644 --- a/pallets/eth-bridge/src/tests/incoming_transfer.rs +++ b/pallets/eth-bridge/src/tests/incoming_transfer.rs @@ -530,10 +530,12 @@ fn ocw_should_handle_incoming_request() { IncomingRequestKind::Transaction(IncomingTransactionRequestKind::Transfer), net_id )); - let mut log = Log::default(); - log.topics = vec![types::H256(hex!( - "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" - ))]; + let mut log = Log { + topics: vec![types::H256(hex!( + "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" + ))], + ..Default::default() + }; let data = ethabi::encode(&[ ethabi::Token::FixedBytes(alice.encode()), ethabi::Token::Uint(types::U256::from(100)), @@ -602,10 +604,12 @@ fn ocw_should_not_register_pending_incoming_request() { IncomingRequestKind::Transaction(IncomingTransactionRequestKind::Transfer), net_id )); - let mut log = Log::default(); - log.topics = vec![types::H256(hex!( - "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" - ))]; + let mut log = Log { + topics: vec![types::H256(hex!( + "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" + ))], + ..Default::default() + }; let data = ethabi::encode(&[ ethabi::Token::FixedBytes(alice.encode()), ethabi::Token::Uint(types::U256::from(100)), @@ -666,10 +670,12 @@ fn ocw_should_import_incoming_request() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - let mut log = Log::default(); - log.topics = vec![types::H256(hex!( - "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" - ))]; + let mut log = Log { + topics: vec![types::H256(hex!( + "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" + ))], + ..Default::default() + }; let data = ethabi::encode(&[ ethabi::Token::FixedBytes(alice.encode()), ethabi::Token::Uint(types::U256::from(100)), @@ -787,10 +793,12 @@ fn ocw_should_not_import_pending_incoming_request() { ext.execute_with(|| { let net_id = ETH_NETWORK_ID; let alice = get_account_id_from_seed::("Alice"); - let mut log = Log::default(); - log.topics = vec![types::H256(hex!( - "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" - ))]; + let mut log = Log { + topics: vec![types::H256(hex!( + "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" + ))], + ..Default::default() + }; let data = ethabi::encode(&[ ethabi::Token::FixedBytes(alice.encode()), ethabi::Token::Uint(types::U256::from(100)), diff --git a/pallets/eth-bridge/src/tests/mock.rs b/pallets/eth-bridge/src/tests/mock.rs index c03f553145..7ecf627fa5 100644 --- a/pallets/eth-bridge/src/tests/mock.rs +++ b/pallets/eth-bridge/src/tests/mock.rs @@ -918,7 +918,7 @@ impl ExtBuilder { .map(|x| (x.clone(), Balance::from(0u32))) .collect(); balances.extend(bridge_accounts.iter().map(|(acc, _)| (acc.clone(), 0))); - for (_net_id, ext_network) in &self.networks { + for ext_network in self.networks.values() { balances.extend(ext_network.ocw_keypairs.iter().map(|x| (x.1.clone(), 0))); } balances.sort_by_key(|x| x.0.clone()); diff --git a/pallets/eth-bridge/src/tests/mod.rs b/pallets/eth-bridge/src/tests/mod.rs index 6edf6da10d..3c24f25ad3 100644 --- a/pallets/eth-bridge/src/tests/mod.rs +++ b/pallets/eth-bridge/src/tests/mod.rs @@ -88,6 +88,7 @@ pub fn no_event() -> bool { frame_system::Pallet::::events().pop().is_none() } +#[allow(clippy::result_large_err)] pub fn approve_request( state: &State, request: OutgoingRequest, @@ -166,6 +167,7 @@ pub fn last_outgoing_request(net_id: u32) -> Option<(OutgoingRequest, H } } +#[allow(clippy::result_large_err)] pub fn approve_last_request( state: &State, net_id: u32, @@ -175,6 +177,7 @@ pub fn approve_last_request( Ok((outgoing_request, hash)) } +#[allow(clippy::result_large_err)] pub fn approve_next_request( state: &State, net_id: u32, @@ -188,6 +191,7 @@ pub fn approve_next_request( Ok((outgoing_request, hash)) } +#[allow(clippy::result_large_err)] pub fn request_incoming( account_id: AccountId, tx_hash: H256, @@ -213,6 +217,7 @@ pub fn request_incoming( Ok(hash) } +#[allow(clippy::result_large_err)] pub fn assert_incoming_request_done( state: &State, incoming_request: IncomingRequest, @@ -260,6 +265,7 @@ pub fn assert_incoming_request_done( Ok(()) } +#[allow(clippy::result_large_err)] pub fn assert_incoming_request_registration_failed( state: &State, incoming_request: IncomingRequest, diff --git a/pallets/eth-bridge/src/tests/ocw.rs b/pallets/eth-bridge/src/tests/ocw.rs index 6dcc18b252..4bbc506d74 100644 --- a/pallets/eth-bridge/src/tests/ocw.rs +++ b/pallets/eth-bridge/src/tests/ocw.rs @@ -308,10 +308,12 @@ fn should_resend_incoming_requests_from_failed_offchain_queue() { let alice = get_account_id_from_seed::("Alice"); Assets::mint_to(&XOR, &alice, &alice, 100).unwrap(); - let mut log = Log::default(); - log.topics = vec![types::H256(hex!( - "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" - ))]; + let mut log = Log { + topics: vec![types::H256(hex!( + "85c0fa492ded927d3acca961da52b0dda1debb06d8c27fe189315f06bb6e26c8" + ))], + ..Default::default() + }; let data = ethabi::encode(&[ ethabi::Token::FixedBytes(alice.encode()), ethabi::Token::Uint(types::U256::from(100)), diff --git a/pallets/eth-bridge/src/types/log.rs b/pallets/eth-bridge/src/types/log.rs index b8910e31db..94cd72a6ad 100644 --- a/pallets/eth-bridge/src/types/log.rs +++ b/pallets/eth-bridge/src/types/log.rs @@ -64,17 +64,13 @@ pub struct Log { impl Log { /// Returns true if the log has been removed. pub fn is_removed(&self) -> bool { - match self.removed { - Some(val_removed) => return val_removed, - None => (), + if let Some(val_removed) = self.removed { + return val_removed; } - match self.log_type { - Some(ref val_log_type) => { - if val_log_type == "removed" { - return true; - } + if let Some(ref val_log_type) = self.log_type { + if val_log_type == "removed" { + return true; } - None => (), } false }