From 4deb6481f44055c5f1baf5a5862f68ce5ab8257a Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Wed, 26 Jun 2024 14:53:39 +0200 Subject: [PATCH 01/10] feat: add passthrough to genesis --- node/src/chain_spec.rs | 6 +-- runtime/common/src/evm/mod.rs | 54 ++++++++++++++++++- .../integration-tests/src/envs/runtime_env.rs | 4 +- 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/node/src/chain_spec.rs b/node/src/chain_spec.rs index 9a7f3a5776..7b3ce15008 100644 --- a/node/src/chain_spec.rs +++ b/node/src/chain_spec.rs @@ -352,7 +352,7 @@ fn centrifuge_genesis( "chainId": Into::::into(chain_id), }, "evm": { - "accounts": runtime_common::evm::precompile::utils::precompile_account_genesis::(), + "accounts": runtime_common::evm::utils::account_genesis::(), }, "polkadotXcm": { "safeXcmVersion": Some(SAFE_XCM_VERSION), @@ -446,7 +446,7 @@ fn altair_genesis( "chainId": Into::::into(chain_id), }, "evm": { - "accounts": runtime_common::evm::precompile::utils::precompile_account_genesis::(), + "accounts": runtime_common::evm::utils::account_genesis::(), }, "polkadotXcm": { "safeXcmVersion": Some(SAFE_XCM_VERSION), @@ -589,7 +589,7 @@ fn development_genesis( "chainId": Into::::into(chain_id), }, "evm": { - "accounts": runtime_common::evm::precompile::utils::precompile_account_genesis::(), + "accounts": runtime_common::evm::utils::account_genesis::(), }, "polkadotXcm": { "safeXcmVersion": Some(SAFE_XCM_VERSION), diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index bf0c4044da..48bce7c6a3 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -13,7 +13,7 @@ use cfg_primitives::AuraId; use frame_support::{traits::FindAuthor, weights::constants::WEIGHT_REF_TIME_PER_SECOND}; use pallet_ethereum::{Transaction, TransactionAction}; -use sp_core::{crypto::ByteArray, H160}; +use sp_core::{crypto::ByteArray, Hasher, H160}; use sp_runtime::{ConsensusEngineId, Permill}; use sp_std::marker::PhantomData; @@ -107,3 +107,55 @@ impl> FindAuthor for FindAuth None } } + +/// Passthrough router deployed bytecode as of this state https://github.com/centrifuge/liquidity-pools/tree/d3da102e7bf656fd50feeb888e17f423317aeeb3 +const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 2374] = hex_literal::hex!("608060405234801561001057600080fd5b50600436106100be5760003560e01c80636d90d4ad11610076578063bf353dbb1161005b578063bf353dbb14610167578063d4e8be8314610195578063f8a8fd6d1461010657600080fd5b80636d90d4ad146101415780639c52a7f11461015457600080fd5b80632bb1ae7c116100a75780632bb1ae7c1461010857806342f1de141461011b57806365fae35e1461012e57600080fd5b8063116191b6146100c35780631c92115f146100f3575b600080fd5b6001546100d6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b610106610101366004610670565b6101a8565b005b61010661011636600461070a565b6101f1565b610106610129366004610670565b61022e565b61010661013c366004610768565b6102e4565b61010661014f366004610670565b61038d565b610106610162366004610768565b610475565b610187610175366004610768565b60006020819052908152604090205481565b6040519081526020016100ea565b6101066101a336600461078a565b610518565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e8686868686866040516101e1969594939291906107df565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e8282604051610222929190610828565b60405180910390a15050565b6001546040517fbf48bcb60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063bf48bcb69061027990859085906004016108ac565b600060405180830381600087803b15801561029357600080fd5b505af11580156102a7573d6000803e3d6000fd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e418686868686866040516101e1969594939291906107df565b336000908152602081905260409020546001146103485760405162461bcd60e51b815260206004820152601360248201527f417574682f6e6f742d617574686f72697a65640000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6040517f491606580000000000000000000000000000000000000000000000000000000081526108009081906349160658906103f9907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b906004016108c0565b600060405180830381600087803b15801561041357600080fd5b505af1158015610427573d6000803e3d6000fd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f498878787878787604051610464969594939291906107df565b60405180910390a150505050505050565b336000908152602081905260409020546001146104d45760405162461bcd60e51b815260206004820152601360248201527f417574682f6e6f742d617574686f72697a656400000000000000000000000000604482015260640161033f565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b817f67617465776179000000000000000000000000000000000000000000000000000361057757600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556105e5565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201527f72616d0000000000000000000000000000000000000000000000000000000000606482015260840161033f565b6040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b60008083601f84011261063957600080fd5b50813567ffffffffffffffff81111561065157600080fd5b60208301915083602082850101111561066957600080fd5b9250929050565b6000806000806000806060878903121561068957600080fd5b863567ffffffffffffffff808211156106a157600080fd5b6106ad8a838b01610627565b909850965060208901359150808211156106c657600080fd5b6106d28a838b01610627565b909650945060408901359150808211156106eb57600080fd5b506106f889828a01610627565b979a9699509497509295939492505050565b6000806020838503121561071d57600080fd5b823567ffffffffffffffff81111561073457600080fd5b61074085828601610627565b90969095509350505050565b80356001600160a01b038116811461076357600080fd5b919050565b60006020828403121561077a57600080fd5b6107838261074c565b9392505050565b6000806040838503121561079d57600080fd5b823591506107ad6020840161074c565b90509250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006107f360608301888a6107b6565b82810360208401526108068187896107b6565b9050828103604084015261081b8185876107b6565b9998505050505050505050565b60608152600d60608201527f4c502d45564d2d446f6d61696e00000000000000000000000000000000000000608082015260a06020820152601460a08201527f506173737468726f7567682d436f6e747261637400000000000000000000000060c082015260e0604082015260006108a460e0830184866107b6565b949350505050565b6020815260006108a46020830184866107b6565b8781526080602082015260006108da60808301888a6107b6565b82810360408401526108ed8187896107b6565b905082810360608401526109028185876107b6565b9a995050505050505050505056fea26469706673582212207ce758dfba92d157b717c539fc437afcb1625933fbd86226afd536c8ff95686b64736f6c63430008150033"); + +/// Input for the KeccakHasher to derive a random `H160` where the passthrough +/// router is always located at. Refers to address: +/// 0x33e7daf228e7613ba85ef6c3647dbceb0f011f7c +const PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT: &[u8] = + b"PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT"; + +#[test] +fn stable_passthrough_location() { + assert_eq!( + passthrough_router_location().as_bytes(), + hex_literal::hex!("33e7daf228e7613ba85ef6c3647dbceb0f011f7c") + ); +} + +pub fn passthrough_router_location() -> H160 { + H160::from(sp_core::H256::from(sp_core::KeccakHasher::hash( + PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT, + ))) +} + +pub fn passthrough_genesis() -> (H160, fp_evm::GenesisAccount) { + ( + passthrough_router_location(), + fp_evm::GenesisAccount { + nonce: Default::default(), + balance: Default::default(), + storage: Default::default(), + code: PASSTHROUGH_ROUTER_ACCOUNT_CODES.to_vec(), + }, + ) +} + +pub mod utils { + use std::collections::BTreeMap; + + use sp_core::H160; + + use crate::evm::precompile::H160Addresses; + + pub fn account_genesis() -> BTreeMap + { + let mut precompiles = + super::precompile::utils::precompile_account_genesis::(); + let (passthrough_addr, passthrough_genesis) = super::passthrough_genesis(); + precompiles.insert(passthrough_addr, passthrough_genesis); + precompiles + } +} diff --git a/runtime/integration-tests/src/envs/runtime_env.rs b/runtime/integration-tests/src/envs/runtime_env.rs index dc066afb86..88d05177d4 100644 --- a/runtime/integration-tests/src/envs/runtime_env.rs +++ b/runtime/integration-tests/src/envs/runtime_env.rs @@ -191,9 +191,7 @@ impl RuntimeEnv { ext.execute_with(|| { // Precompiles need to have code-set pallet_evm::GenesisConfig:: { - accounts: runtime_common::evm::precompile::utils::precompile_account_genesis::< - T::PrecompilesTypeExt, - >(), + accounts: runtime_common::evm::utils::account_genesis::(), _marker: PhantomData::default(), } .build(); From 1afd37b9a5e73d87ebbb13dd7e74c3abde995bcf Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Wed, 26 Jun 2024 20:39:50 +0200 Subject: [PATCH 02/10] fix: adapt passthrough router --- runtime/common/src/evm/mod.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index 48bce7c6a3..64e54cb1ee 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -13,6 +13,7 @@ use cfg_primitives::AuraId; use frame_support::{traits::FindAuthor, weights::constants::WEIGHT_REF_TIME_PER_SECOND}; use pallet_ethereum::{Transaction, TransactionAction}; +use parity_scale_codec::Encode; use sp_core::{crypto::ByteArray, Hasher, H160}; use sp_runtime::{ConsensusEngineId, Permill}; use sp_std::marker::PhantomData; @@ -109,11 +110,16 @@ impl> FindAuthor for FindAuth } /// Passthrough router deployed bytecode as of this state https://github.com/centrifuge/liquidity-pools/tree/d3da102e7bf656fd50feeb888e17f423317aeeb3 -const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 2374] = hex_literal::hex!("608060405234801561001057600080fd5b50600436106100be5760003560e01c80636d90d4ad11610076578063bf353dbb1161005b578063bf353dbb14610167578063d4e8be8314610195578063f8a8fd6d1461010657600080fd5b80636d90d4ad146101415780639c52a7f11461015457600080fd5b80632bb1ae7c116100a75780632bb1ae7c1461010857806342f1de141461011b57806365fae35e1461012e57600080fd5b8063116191b6146100c35780631c92115f146100f3575b600080fd5b6001546100d6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b610106610101366004610670565b6101a8565b005b61010661011636600461070a565b6101f1565b610106610129366004610670565b61022e565b61010661013c366004610768565b6102e4565b61010661014f366004610670565b61038d565b610106610162366004610768565b610475565b610187610175366004610768565b60006020819052908152604090205481565b6040519081526020016100ea565b6101066101a336600461078a565b610518565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e8686868686866040516101e1969594939291906107df565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e8282604051610222929190610828565b60405180910390a15050565b6001546040517fbf48bcb60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063bf48bcb69061027990859085906004016108ac565b600060405180830381600087803b15801561029357600080fd5b505af11580156102a7573d6000803e3d6000fd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e418686868686866040516101e1969594939291906107df565b336000908152602081905260409020546001146103485760405162461bcd60e51b815260206004820152601360248201527f417574682f6e6f742d617574686f72697a65640000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6040517f491606580000000000000000000000000000000000000000000000000000000081526108009081906349160658906103f9907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b906004016108c0565b600060405180830381600087803b15801561041357600080fd5b505af1158015610427573d6000803e3d6000fd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f498878787878787604051610464969594939291906107df565b60405180910390a150505050505050565b336000908152602081905260409020546001146104d45760405162461bcd60e51b815260206004820152601360248201527f417574682f6e6f742d617574686f72697a656400000000000000000000000000604482015260640161033f565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b817f67617465776179000000000000000000000000000000000000000000000000000361057757600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556105e5565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201527f72616d0000000000000000000000000000000000000000000000000000000000606482015260840161033f565b6040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b60008083601f84011261063957600080fd5b50813567ffffffffffffffff81111561065157600080fd5b60208301915083602082850101111561066957600080fd5b9250929050565b6000806000806000806060878903121561068957600080fd5b863567ffffffffffffffff808211156106a157600080fd5b6106ad8a838b01610627565b909850965060208901359150808211156106c657600080fd5b6106d28a838b01610627565b909650945060408901359150808211156106eb57600080fd5b506106f889828a01610627565b979a9699509497509295939492505050565b6000806020838503121561071d57600080fd5b823567ffffffffffffffff81111561073457600080fd5b61074085828601610627565b90969095509350505050565b80356001600160a01b038116811461076357600080fd5b919050565b60006020828403121561077a57600080fd5b6107838261074c565b9392505050565b6000806040838503121561079d57600080fd5b823591506107ad6020840161074c565b90509250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006107f360608301888a6107b6565b82810360208401526108068187896107b6565b9050828103604084015261081b8185876107b6565b9998505050505050505050565b60608152600d60608201527f4c502d45564d2d446f6d61696e00000000000000000000000000000000000000608082015260a06020820152601460a08201527f506173737468726f7567682d436f6e747261637400000000000000000000000060c082015260e0604082015260006108a460e0830184866107b6565b949350505050565b6020815260006108a46020830184866107b6565b8781526080602082015260006108da60808301888a6107b6565b82810360408401526108ed8187896107b6565b905082810360608401526109028185876107b6565b9a995050505050505050505056fea26469706673582212207ce758dfba92d157b717c539fc437afcb1625933fbd86226afd536c8ff95686b64736f6c63430008150033"); +/// +/// NOTE: If the above file changes, this code needs to be adapted. +/// +/// Blake256 hash of the deployed passthrough router contract code: +/// `0x76207899a9edcb467292be38d4ff7717ad2588e67e8d9d5ac74ea24ff3ff89e6` +const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 3510] = hex_literal::hex!("608060405234801561001057600080fd5b50600436106100df5760003560e01c806365fae35e1161008c578063b0fa844411610066578063b0fa8444146101b0578063bf353dbb146101b8578063d4e8be83146101e6578063f8a8fd6d146100f757600080fd5b806365fae35e146101775780636d90d4ad1461018a5780639c52a7f11461019d57600080fd5b80631c92115f116100bd5780631c92115f1461013e5780632bb1ae7c1461015157806342f1de141461016457600080fd5b8063097ac46e146100e4578063116191b6146100f95780631c6ffa4614610129575b600080fd5b6100f76100f23660046108a0565b6101f9565b005b60015461010c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013161036e565b60405161012091906108ec565b6100f761014c36600461093a565b6103fc565b6100f761015f3660046109d4565b610445565b6100f761017236600461093a565b610488565b6100f7610185366004610a32565b61053e565b6100f761019836600461093a565b6105d8565b6100f76101ab366004610a32565b6106c0565b610131610759565b6101d86101c6366004610a32565b60006020819052908152604090205481565b604051908152602001610120565b6100f76101f4366004610a54565b610766565b336000908152602081905260409020546001146102535760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b827f736f75726365436861696e0000000000000000000000000000000000000000000361028d576002610287828483610b1f565b5061032f565b827f736f757263654164647265737300000000000000000000000000000000000000036102c1576003610287828483610b1f565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201527f72616d0000000000000000000000000000000000000000000000000000000000606482015260840161024a565b827fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc68383604051610361929190610c09565b60405180910390a2505050565b6002805461037b90610a96565b80601f01602080910402602001604051908101604052809291908181526020018280546103a790610a96565b80156103f45780601f106103c9576101008083540402835291602001916103f4565b820191906000526020600020905b8154815290600101906020018083116103d757829003601f168201915b505050505081565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e86868686868660405161043596959493929190610c25565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e60026003848460405161047c9493929190610ceb565b60405180910390a15050565b6001546040517fbf48bcb60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063bf48bcb6906104d39085908590600401610c09565b600060405180830381600087803b1580156104ed57600080fd5b505af1158015610501573d6000803e3d6000fd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e4186868686868660405161043596959493929190610c25565b336000908152602081905260409020546001146105935760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6040517f49160658000000000000000000000000000000000000000000000000000000008152610800908190634916065890610644907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b90600401610d30565b600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f4988787878787876040516106af96959493929190610c25565b60405180910390a150505050505050565b336000908152602081905260409020546001146107155760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6003805461037b90610a96565b336000908152602081905260409020546001146107bb5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b817f6761746577617900000000000000000000000000000000000000000000000000036102c157600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b60008083601f84011261086957600080fd5b50813567ffffffffffffffff81111561088157600080fd5b60208301915083602082850101111561089957600080fd5b9250929050565b6000806000604084860312156108b557600080fd5b83359250602084013567ffffffffffffffff8111156108d357600080fd5b6108df86828701610857565b9497909650939450505050565b600060208083528351808285015260005b81811015610919578581018301518582016040015282016108fd565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806000806060878903121561095357600080fd5b863567ffffffffffffffff8082111561096b57600080fd5b6109778a838b01610857565b9098509650602089013591508082111561099057600080fd5b61099c8a838b01610857565b909650945060408901359150808211156109b557600080fd5b506109c289828a01610857565b979a9699509497509295939492505050565b600080602083850312156109e757600080fd5b823567ffffffffffffffff8111156109fe57600080fd5b610a0a85828601610857565b90969095509350505050565b80356001600160a01b0381168114610a2d57600080fd5b919050565b600060208284031215610a4457600080fd5b610a4d82610a16565b9392505050565b60008060408385031215610a6757600080fd5b82359150610a7760208401610a16565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610aaa57607f821691505b602082108103610aca57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b1a57600081815260208120601f850160051c81016020861015610af75750805b601f850160051c820191505b81811015610b1657828155600101610b03565b5050505b505050565b67ffffffffffffffff831115610b3757610b37610a80565b610b4b83610b458354610a96565b83610ad0565b6000601f841160018114610b7f5760008515610b675750838201355b600019600387901b1c1916600186901b178355610bd9565b600083815260209020601f19861690835b82811015610bb05786850135825560209485019460019092019101610b90565b5086821015610bcd5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610c1d602083018486610be0565b949350505050565b606081526000610c3960608301888a610be0565b8281036020840152610c4c818789610be0565b90508281036040840152610c61818587610be0565b9998505050505050505050565b60008154610c7b81610a96565b808552602060018381168015610c985760018114610cb257610ce0565b60ff1985168884015283151560051b880183019550610ce0565b866000528260002060005b85811015610cd85781548a8201860152908301908401610cbd565b890184019650505b505050505092915050565b606081526000610cfe6060830187610c6e565b8281036020840152610d108187610c6e565b90508281036040840152610d25818587610be0565b979650505050505050565b878152608060208201526000610d4a60808301888a610be0565b8281036040840152610d5d818789610be0565b90508281036060840152610d72818587610be0565b9a995050505050505050505056fea26469706673582212204434c18f08582415f05bfcbfd50dac169bc516ee1fbf1d1103cd2adc58763cdd64736f6c63430008150033"); /// Input for the KeccakHasher to derive a random `H160` where the passthrough /// router is always located at. Refers to address: -/// 0x33e7daf228e7613ba85ef6c3647dbceb0f011f7c +/// `0x33e7daf228e7613ba85ef6c3647dbceb0f011f7c` const PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT: &[u8] = b"PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT"; From b7bf2ac0b8797ee6dbbe059abc26018c4dfc788a Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Wed, 26 Jun 2024 22:00:49 +0200 Subject: [PATCH 03/10] fix: docs and hash --- runtime/common/src/evm/mod.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index 64e54cb1ee..5b8ee37dc9 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -11,8 +11,11 @@ // GNU General Public License for more details. use cfg_primitives::AuraId; -use frame_support::{traits::FindAuthor, weights::constants::WEIGHT_REF_TIME_PER_SECOND}; +use frame_support::{ + traits::FindAuthor, weights::constants::WEIGHT_REF_TIME_PER_SECOND, Blake2_256, StorageHasher, +}; use pallet_ethereum::{Transaction, TransactionAction}; +use pallet_identity::Data::BlakeTwo256; use parity_scale_codec::Encode; use sp_core::{crypto::ByteArray, Hasher, H160}; use sp_runtime::{ConsensusEngineId, Permill}; @@ -109,12 +112,13 @@ impl> FindAuthor for FindAuth } } -/// Passthrough router deployed bytecode as of this state https://github.com/centrifuge/liquidity-pools/tree/d3da102e7bf656fd50feeb888e17f423317aeeb3 +/// Passthrough router deployed bytecode as of this state https://github.com/centrifuge/liquidity-pools/blob/dc5e843159b6ef8d4b6d876e055b7432e57e1ff5/test/integration/PassthroughRouter.sol /// /// NOTE: If the above file changes, this code needs to be adapted. /// -/// Blake256 hash of the deployed passthrough router contract code: -/// `0x76207899a9edcb467292be38d4ff7717ad2588e67e8d9d5ac74ea24ff3ff89e6` +/// Blake256 hash of the deployed passthrough router contract code as +/// Encoded::encode(Vec): +/// `0x545a48d6f7f1a01cb2bd090a5272cd52c54eafea762071ec652c8ac94610146e` const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 3510] = hex_literal::hex!("608060405234801561001057600080fd5b50600436106100df5760003560e01c806365fae35e1161008c578063b0fa844411610066578063b0fa8444146101b0578063bf353dbb146101b8578063d4e8be83146101e6578063f8a8fd6d146100f757600080fd5b806365fae35e146101775780636d90d4ad1461018a5780639c52a7f11461019d57600080fd5b80631c92115f116100bd5780631c92115f1461013e5780632bb1ae7c1461015157806342f1de141461016457600080fd5b8063097ac46e146100e4578063116191b6146100f95780631c6ffa4614610129575b600080fd5b6100f76100f23660046108a0565b6101f9565b005b60015461010c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013161036e565b60405161012091906108ec565b6100f761014c36600461093a565b6103fc565b6100f761015f3660046109d4565b610445565b6100f761017236600461093a565b610488565b6100f7610185366004610a32565b61053e565b6100f761019836600461093a565b6105d8565b6100f76101ab366004610a32565b6106c0565b610131610759565b6101d86101c6366004610a32565b60006020819052908152604090205481565b604051908152602001610120565b6100f76101f4366004610a54565b610766565b336000908152602081905260409020546001146102535760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b827f736f75726365436861696e0000000000000000000000000000000000000000000361028d576002610287828483610b1f565b5061032f565b827f736f757263654164647265737300000000000000000000000000000000000000036102c1576003610287828483610b1f565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201527f72616d0000000000000000000000000000000000000000000000000000000000606482015260840161024a565b827fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc68383604051610361929190610c09565b60405180910390a2505050565b6002805461037b90610a96565b80601f01602080910402602001604051908101604052809291908181526020018280546103a790610a96565b80156103f45780601f106103c9576101008083540402835291602001916103f4565b820191906000526020600020905b8154815290600101906020018083116103d757829003601f168201915b505050505081565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e86868686868660405161043596959493929190610c25565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e60026003848460405161047c9493929190610ceb565b60405180910390a15050565b6001546040517fbf48bcb60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063bf48bcb6906104d39085908590600401610c09565b600060405180830381600087803b1580156104ed57600080fd5b505af1158015610501573d6000803e3d6000fd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e4186868686868660405161043596959493929190610c25565b336000908152602081905260409020546001146105935760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6040517f49160658000000000000000000000000000000000000000000000000000000008152610800908190634916065890610644907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b90600401610d30565b600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f4988787878787876040516106af96959493929190610c25565b60405180910390a150505050505050565b336000908152602081905260409020546001146107155760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6003805461037b90610a96565b336000908152602081905260409020546001146107bb5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b817f6761746577617900000000000000000000000000000000000000000000000000036102c157600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b60008083601f84011261086957600080fd5b50813567ffffffffffffffff81111561088157600080fd5b60208301915083602082850101111561089957600080fd5b9250929050565b6000806000604084860312156108b557600080fd5b83359250602084013567ffffffffffffffff8111156108d357600080fd5b6108df86828701610857565b9497909650939450505050565b600060208083528351808285015260005b81811015610919578581018301518582016040015282016108fd565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806000806060878903121561095357600080fd5b863567ffffffffffffffff8082111561096b57600080fd5b6109778a838b01610857565b9098509650602089013591508082111561099057600080fd5b61099c8a838b01610857565b909650945060408901359150808211156109b557600080fd5b506109c289828a01610857565b979a9699509497509295939492505050565b600080602083850312156109e757600080fd5b823567ffffffffffffffff8111156109fe57600080fd5b610a0a85828601610857565b90969095509350505050565b80356001600160a01b0381168114610a2d57600080fd5b919050565b600060208284031215610a4457600080fd5b610a4d82610a16565b9392505050565b60008060408385031215610a6757600080fd5b82359150610a7760208401610a16565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610aaa57607f821691505b602082108103610aca57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b1a57600081815260208120601f850160051c81016020861015610af75750805b601f850160051c820191505b81811015610b1657828155600101610b03565b5050505b505050565b67ffffffffffffffff831115610b3757610b37610a80565b610b4b83610b458354610a96565b83610ad0565b6000601f841160018114610b7f5760008515610b675750838201355b600019600387901b1c1916600186901b178355610bd9565b600083815260209020601f19861690835b82811015610bb05786850135825560209485019460019092019101610b90565b5086821015610bcd5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610c1d602083018486610be0565b949350505050565b606081526000610c3960608301888a610be0565b8281036020840152610c4c818789610be0565b90508281036040840152610c61818587610be0565b9998505050505050505050565b60008154610c7b81610a96565b808552602060018381168015610c985760018114610cb257610ce0565b60ff1985168884015283151560051b880183019550610ce0565b866000528260002060005b85811015610cd85781548a8201860152908301908401610cbd565b890184019650505b505050505092915050565b606081526000610cfe6060830187610c6e565b8281036020840152610d108187610c6e565b90508281036040840152610d25818587610be0565b979650505050505050565b878152608060208201526000610d4a60808301888a610be0565b8281036040840152610d5d818789610be0565b90508281036060840152610d72818587610be0565b9a995050505050505050505056fea26469706673582212204434c18f08582415f05bfcbfd50dac169bc516ee1fbf1d1103cd2adc58763cdd64736f6c63430008150033"); /// Input for the KeccakHasher to derive a random `H160` where the passthrough @@ -131,6 +135,11 @@ fn stable_passthrough_location() { ); } +#[test] +fn _test() { + panic!("0x{:?}", hex::encode(Blake2_256::hash(hex::decode("608060405234801561001057600080fd5b50600436106100df5760003560e01c806365fae35e1161008c578063b0fa844411610066578063b0fa8444146101b0578063bf353dbb146101b8578063d4e8be83146101e6578063f8a8fd6d146100f757600080fd5b806365fae35e146101775780636d90d4ad1461018a5780639c52a7f11461019d57600080fd5b80631c92115f116100bd5780631c92115f1461013e5780632bb1ae7c1461015157806342f1de141461016457600080fd5b8063097ac46e146100e4578063116191b6146100f95780631c6ffa4614610129575b600080fd5b6100f76100f23660046108a0565b6101f9565b005b60015461010c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013161036e565b60405161012091906108ec565b6100f761014c36600461093a565b6103fc565b6100f761015f3660046109d4565b610445565b6100f761017236600461093a565b610488565b6100f7610185366004610a32565b61053e565b6100f761019836600461093a565b6105d8565b6100f76101ab366004610a32565b6106c0565b610131610759565b6101d86101c6366004610a32565b60006020819052908152604090205481565b604051908152602001610120565b6100f76101f4366004610a54565b610766565b336000908152602081905260409020546001146102535760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b827f736f75726365436861696e0000000000000000000000000000000000000000000361028d576002610287828483610b1f565b5061032f565b827f736f757263654164647265737300000000000000000000000000000000000000036102c1576003610287828483610b1f565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201527f72616d0000000000000000000000000000000000000000000000000000000000606482015260840161024a565b827fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc68383604051610361929190610c09565b60405180910390a2505050565b6002805461037b90610a96565b80601f01602080910402602001604051908101604052809291908181526020018280546103a790610a96565b80156103f45780601f106103c9576101008083540402835291602001916103f4565b820191906000526020600020905b8154815290600101906020018083116103d757829003601f168201915b505050505081565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e86868686868660405161043596959493929190610c25565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e60026003848460405161047c9493929190610ceb565b60405180910390a15050565b6001546040517fbf48bcb60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063bf48bcb6906104d39085908590600401610c09565b600060405180830381600087803b1580156104ed57600080fd5b505af1158015610501573d6000803e3d6000fd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e4186868686868660405161043596959493929190610c25565b336000908152602081905260409020546001146105935760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6040517f49160658000000000000000000000000000000000000000000000000000000008152610800908190634916065890610644907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b90600401610d30565b600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f4988787878787876040516106af96959493929190610c25565b60405180910390a150505050505050565b336000908152602081905260409020546001146107155760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6003805461037b90610a96565b336000908152602081905260409020546001146107bb5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b817f6761746577617900000000000000000000000000000000000000000000000000036102c157600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b60008083601f84011261086957600080fd5b50813567ffffffffffffffff81111561088157600080fd5b60208301915083602082850101111561089957600080fd5b9250929050565b6000806000604084860312156108b557600080fd5b83359250602084013567ffffffffffffffff8111156108d357600080fd5b6108df86828701610857565b9497909650939450505050565b600060208083528351808285015260005b81811015610919578581018301518582016040015282016108fd565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806000806060878903121561095357600080fd5b863567ffffffffffffffff8082111561096b57600080fd5b6109778a838b01610857565b9098509650602089013591508082111561099057600080fd5b61099c8a838b01610857565b909650945060408901359150808211156109b557600080fd5b506109c289828a01610857565b979a9699509497509295939492505050565b600080602083850312156109e757600080fd5b823567ffffffffffffffff8111156109fe57600080fd5b610a0a85828601610857565b90969095509350505050565b80356001600160a01b0381168114610a2d57600080fd5b919050565b600060208284031215610a4457600080fd5b610a4d82610a16565b9392505050565b60008060408385031215610a6757600080fd5b82359150610a7760208401610a16565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610aaa57607f821691505b602082108103610aca57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b1a57600081815260208120601f850160051c81016020861015610af75750805b601f850160051c820191505b81811015610b1657828155600101610b03565b5050505b505050565b67ffffffffffffffff831115610b3757610b37610a80565b610b4b83610b458354610a96565b83610ad0565b6000601f841160018114610b7f5760008515610b675750838201355b600019600387901b1c1916600186901b178355610bd9565b600083815260209020601f19861690835b82811015610bb05786850135825560209485019460019092019101610b90565b5086821015610bcd5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610c1d602083018486610be0565b949350505050565b606081526000610c3960608301888a610be0565b8281036020840152610c4c818789610be0565b90508281036040840152610c61818587610be0565b9998505050505050505050565b60008154610c7b81610a96565b808552602060018381168015610c985760018114610cb257610ce0565b60ff1985168884015283151560051b880183019550610ce0565b866000528260002060005b85811015610cd85781548a8201860152908301908401610cbd565b890184019650505b505050505092915050565b606081526000610cfe6060830187610c6e565b8281036020840152610d108187610c6e565b90508281036040840152610d25818587610be0565b979650505050505050565b878152608060208201526000610d4a60808301888a610be0565b8281036040840152610d5d818789610be0565b90508281036060840152610d72818587610be0565b9a995050505050505050505056fea26469706673582212204434c18f08582415f05bfcbfd50dac169bc516ee1fbf1d1103cd2adc58763cdd64736f6c63430008150033").unwrap().encode().as_slice()))); +} + pub fn passthrough_router_location() -> H160 { H160::from(sp_core::H256::from(sp_core::KeccakHasher::hash( PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT, From e27a3649651c09266cc9126759c0a324bf414815 Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Wed, 26 Jun 2024 22:03:36 +0200 Subject: [PATCH 04/10] chore: rm unused test --- runtime/common/src/evm/mod.rs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index 5b8ee37dc9..2a7e003f0b 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -135,11 +135,6 @@ fn stable_passthrough_location() { ); } -#[test] -fn _test() { - panic!("0x{:?}", hex::encode(Blake2_256::hash(hex::decode("608060405234801561001057600080fd5b50600436106100df5760003560e01c806365fae35e1161008c578063b0fa844411610066578063b0fa8444146101b0578063bf353dbb146101b8578063d4e8be83146101e6578063f8a8fd6d146100f757600080fd5b806365fae35e146101775780636d90d4ad1461018a5780639c52a7f11461019d57600080fd5b80631c92115f116100bd5780631c92115f1461013e5780632bb1ae7c1461015157806342f1de141461016457600080fd5b8063097ac46e146100e4578063116191b6146100f95780631c6ffa4614610129575b600080fd5b6100f76100f23660046108a0565b6101f9565b005b60015461010c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013161036e565b60405161012091906108ec565b6100f761014c36600461093a565b6103fc565b6100f761015f3660046109d4565b610445565b6100f761017236600461093a565b610488565b6100f7610185366004610a32565b61053e565b6100f761019836600461093a565b6105d8565b6100f76101ab366004610a32565b6106c0565b610131610759565b6101d86101c6366004610a32565b60006020819052908152604090205481565b604051908152602001610120565b6100f76101f4366004610a54565b610766565b336000908152602081905260409020546001146102535760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b827f736f75726365436861696e0000000000000000000000000000000000000000000361028d576002610287828483610b1f565b5061032f565b827f736f757263654164647265737300000000000000000000000000000000000000036102c1576003610287828483610b1f565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201527f72616d0000000000000000000000000000000000000000000000000000000000606482015260840161024a565b827fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc68383604051610361929190610c09565b60405180910390a2505050565b6002805461037b90610a96565b80601f01602080910402602001604051908101604052809291908181526020018280546103a790610a96565b80156103f45780601f106103c9576101008083540402835291602001916103f4565b820191906000526020600020905b8154815290600101906020018083116103d757829003601f168201915b505050505081565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e86868686868660405161043596959493929190610c25565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e60026003848460405161047c9493929190610ceb565b60405180910390a15050565b6001546040517fbf48bcb60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063bf48bcb6906104d39085908590600401610c09565b600060405180830381600087803b1580156104ed57600080fd5b505af1158015610501573d6000803e3d6000fd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e4186868686868660405161043596959493929190610c25565b336000908152602081905260409020546001146105935760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6040517f49160658000000000000000000000000000000000000000000000000000000008152610800908190634916065890610644907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b90600401610d30565b600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f4988787878787876040516106af96959493929190610c25565b60405180910390a150505050505050565b336000908152602081905260409020546001146107155760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6003805461037b90610a96565b336000908152602081905260409020546001146107bb5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b817f6761746577617900000000000000000000000000000000000000000000000000036102c157600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b60008083601f84011261086957600080fd5b50813567ffffffffffffffff81111561088157600080fd5b60208301915083602082850101111561089957600080fd5b9250929050565b6000806000604084860312156108b557600080fd5b83359250602084013567ffffffffffffffff8111156108d357600080fd5b6108df86828701610857565b9497909650939450505050565b600060208083528351808285015260005b81811015610919578581018301518582016040015282016108fd565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806000806060878903121561095357600080fd5b863567ffffffffffffffff8082111561096b57600080fd5b6109778a838b01610857565b9098509650602089013591508082111561099057600080fd5b61099c8a838b01610857565b909650945060408901359150808211156109b557600080fd5b506109c289828a01610857565b979a9699509497509295939492505050565b600080602083850312156109e757600080fd5b823567ffffffffffffffff8111156109fe57600080fd5b610a0a85828601610857565b90969095509350505050565b80356001600160a01b0381168114610a2d57600080fd5b919050565b600060208284031215610a4457600080fd5b610a4d82610a16565b9392505050565b60008060408385031215610a6757600080fd5b82359150610a7760208401610a16565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610aaa57607f821691505b602082108103610aca57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b1a57600081815260208120601f850160051c81016020861015610af75750805b601f850160051c820191505b81811015610b1657828155600101610b03565b5050505b505050565b67ffffffffffffffff831115610b3757610b37610a80565b610b4b83610b458354610a96565b83610ad0565b6000601f841160018114610b7f5760008515610b675750838201355b600019600387901b1c1916600186901b178355610bd9565b600083815260209020601f19861690835b82811015610bb05786850135825560209485019460019092019101610b90565b5086821015610bcd5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610c1d602083018486610be0565b949350505050565b606081526000610c3960608301888a610be0565b8281036020840152610c4c818789610be0565b90508281036040840152610c61818587610be0565b9998505050505050505050565b60008154610c7b81610a96565b808552602060018381168015610c985760018114610cb257610ce0565b60ff1985168884015283151560051b880183019550610ce0565b866000528260002060005b85811015610cd85781548a8201860152908301908401610cbd565b890184019650505b505050505092915050565b606081526000610cfe6060830187610c6e565b8281036020840152610d108187610c6e565b90508281036040840152610d25818587610be0565b979650505050505050565b878152608060208201526000610d4a60808301888a610be0565b8281036040840152610d5d818789610be0565b90508281036060840152610d72818587610be0565b9a995050505050505050505056fea26469706673582212204434c18f08582415f05bfcbfd50dac169bc516ee1fbf1d1103cd2adc58763cdd64736f6c63430008150033").unwrap().encode().as_slice()))); -} - pub fn passthrough_router_location() -> H160 { H160::from(sp_core::H256::from(sp_core::KeccakHasher::hash( PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT, From 8811f602996a84009b7a5317f00eb08ab967f7bd Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Tue, 23 Jul 2024 17:30:59 +0200 Subject: [PATCH 05/10] feat: adatpt to latest version --- runtime/common/src/evm/mod.rs | 36 ++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index 2a7e003f0b..06f4fd716a 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -15,7 +15,6 @@ use frame_support::{ traits::FindAuthor, weights::constants::WEIGHT_REF_TIME_PER_SECOND, Blake2_256, StorageHasher, }; use pallet_ethereum::{Transaction, TransactionAction}; -use pallet_identity::Data::BlakeTwo256; use parity_scale_codec::Encode; use sp_core::{crypto::ByteArray, Hasher, H160}; use sp_runtime::{ConsensusEngineId, Permill}; @@ -112,14 +111,14 @@ impl> FindAuthor for FindAuth } } -/// Passthrough router deployed bytecode as of this state https://github.com/centrifuge/liquidity-pools/blob/dc5e843159b6ef8d4b6d876e055b7432e57e1ff5/test/integration/PassthroughRouter.sol +/// Passthrough router deployed bytecode as of this state https://github.com/centrifuge/liquidity-pools/blob/ee35da785f2af3303ef9f52c6ecefeb9671aa61b/test/integration/PassthroughAdapter.sol /// /// NOTE: If the above file changes, this code needs to be adapted. /// /// Blake256 hash of the deployed passthrough router contract code as /// Encoded::encode(Vec): /// `0x545a48d6f7f1a01cb2bd090a5272cd52c54eafea762071ec652c8ac94610146e` -const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 3510] = hex_literal::hex!("608060405234801561001057600080fd5b50600436106100df5760003560e01c806365fae35e1161008c578063b0fa844411610066578063b0fa8444146101b0578063bf353dbb146101b8578063d4e8be83146101e6578063f8a8fd6d146100f757600080fd5b806365fae35e146101775780636d90d4ad1461018a5780639c52a7f11461019d57600080fd5b80631c92115f116100bd5780631c92115f1461013e5780632bb1ae7c1461015157806342f1de141461016457600080fd5b8063097ac46e146100e4578063116191b6146100f95780631c6ffa4614610129575b600080fd5b6100f76100f23660046108a0565b6101f9565b005b60015461010c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013161036e565b60405161012091906108ec565b6100f761014c36600461093a565b6103fc565b6100f761015f3660046109d4565b610445565b6100f761017236600461093a565b610488565b6100f7610185366004610a32565b61053e565b6100f761019836600461093a565b6105d8565b6100f76101ab366004610a32565b6106c0565b610131610759565b6101d86101c6366004610a32565b60006020819052908152604090205481565b604051908152602001610120565b6100f76101f4366004610a54565b610766565b336000908152602081905260409020546001146102535760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b827f736f75726365436861696e0000000000000000000000000000000000000000000361028d576002610287828483610b1f565b5061032f565b827f736f757263654164647265737300000000000000000000000000000000000000036102c1576003610287828483610b1f565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201527f72616d0000000000000000000000000000000000000000000000000000000000606482015260840161024a565b827fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc68383604051610361929190610c09565b60405180910390a2505050565b6002805461037b90610a96565b80601f01602080910402602001604051908101604052809291908181526020018280546103a790610a96565b80156103f45780601f106103c9576101008083540402835291602001916103f4565b820191906000526020600020905b8154815290600101906020018083116103d757829003601f168201915b505050505081565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e86868686868660405161043596959493929190610c25565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e60026003848460405161047c9493929190610ceb565b60405180910390a15050565b6001546040517fbf48bcb60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063bf48bcb6906104d39085908590600401610c09565b600060405180830381600087803b1580156104ed57600080fd5b505af1158015610501573d6000803e3d6000fd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e4186868686868660405161043596959493929190610c25565b336000908152602081905260409020546001146105935760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6040517f49160658000000000000000000000000000000000000000000000000000000008152610800908190634916065890610644907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b90600401610d30565b600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f4988787878787876040516106af96959493929190610c25565b60405180910390a150505050505050565b336000908152602081905260409020546001146107155760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6003805461037b90610a96565b336000908152602081905260409020546001146107bb5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b604482015260640161024a565b817f6761746577617900000000000000000000000000000000000000000000000000036102c157600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b60008083601f84011261086957600080fd5b50813567ffffffffffffffff81111561088157600080fd5b60208301915083602082850101111561089957600080fd5b9250929050565b6000806000604084860312156108b557600080fd5b83359250602084013567ffffffffffffffff8111156108d357600080fd5b6108df86828701610857565b9497909650939450505050565b600060208083528351808285015260005b81811015610919578581018301518582016040015282016108fd565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806000806060878903121561095357600080fd5b863567ffffffffffffffff8082111561096b57600080fd5b6109778a838b01610857565b9098509650602089013591508082111561099057600080fd5b61099c8a838b01610857565b909650945060408901359150808211156109b557600080fd5b506109c289828a01610857565b979a9699509497509295939492505050565b600080602083850312156109e757600080fd5b823567ffffffffffffffff8111156109fe57600080fd5b610a0a85828601610857565b90969095509350505050565b80356001600160a01b0381168114610a2d57600080fd5b919050565b600060208284031215610a4457600080fd5b610a4d82610a16565b9392505050565b60008060408385031215610a6757600080fd5b82359150610a7760208401610a16565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610aaa57607f821691505b602082108103610aca57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b1a57600081815260208120601f850160051c81016020861015610af75750805b601f850160051c820191505b81811015610b1657828155600101610b03565b5050505b505050565b67ffffffffffffffff831115610b3757610b37610a80565b610b4b83610b458354610a96565b83610ad0565b6000601f841160018114610b7f5760008515610b675750838201355b600019600387901b1c1916600186901b178355610bd9565b600083815260209020601f19861690835b82811015610bb05786850135825560209485019460019092019101610b90565b5086821015610bcd5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610c1d602083018486610be0565b949350505050565b606081526000610c3960608301888a610be0565b8281036020840152610c4c818789610be0565b90508281036040840152610c61818587610be0565b9998505050505050505050565b60008154610c7b81610a96565b808552602060018381168015610c985760018114610cb257610ce0565b60ff1985168884015283151560051b880183019550610ce0565b866000528260002060005b85811015610cd85781548a8201860152908301908401610cbd565b890184019650505b505050505092915050565b606081526000610cfe6060830187610c6e565b8281036020840152610d108187610c6e565b90508281036040840152610d25818587610be0565b979650505050505050565b878152608060208201526000610d4a60808301888a610be0565b8281036040840152610d5d818789610be0565b90508281036060840152610d72818587610be0565b9a995050505050505050505056fea26469706673582212204434c18f08582415f05bfcbfd50dac169bc516ee1fbf1d1103cd2adc58763cdd64736f6c63430008150033"); +const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 3510] = hex_literal::hex!("608060405234801561000f575f80fd5b50600436106100da575f3560e01c806365fae35e11610088578063b0fa844411610063578063b0fa8444146101aa578063bf353dbb146101b2578063d4e8be83146101df578063f8a8fd6d146100f1575f80fd5b806365fae35e146101715780636d90d4ad146101845780639c52a7f114610197575f80fd5b80631c92115f116100b85780631c92115f146101385780632bb1ae7c1461014b57806342f1de141461015e575f80fd5b8063097ac46e146100de578063116191b6146100f35780631c6ffa4614610123575b5f80fd5b6100f16100ec3660046107f4565b6101f2565b005b600154610106906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61012b61032a565b60405161011a919061083c565b6100f1610146366004610871565b6103b6565b6100f1610159366004610910565b6103ff565b6100f161016c366004610871565b610442565b6100f161017f36600461096a565b6104da565b6100f1610192366004610871565b610572565b6100f16101a536600461096a565b61063c565b61012b6106d3565b6101d16101c036600461096a565b5f6020819052908152604090205481565b60405190815260200161011a565b6100f16101ed36600461098a565b6106e0565b335f9081526020819052604090205460011461024b5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b826a39b7bab931b2a1b430b4b760a91b0361027357600261026d828483610a4c565b506102eb565b826c736f757263654164647265737360981b0361029757600361026d828483610a4c565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201526272616d60e81b6064820152608401610242565b827fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc6838360405161031d929190610b2e565b60405180910390a2505050565b60028054610337906109c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610363906109c8565b80156103ae5780601f10610385576101008083540402835291602001916103ae565b820191905f5260205f20905b81548152906001019060200180831161039157829003601f168201915b505050505081565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e8686868686866040516103ef96959493929190610b49565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e6002600384846040516104369493929190610c10565b60405180910390a15050565b600154604051635fa45e5b60e11b81526001600160a01b039091169063bf48bcb6906104749085908590600401610b2e565b5f604051808303815f87803b15801561048b575f80fd5b505af115801561049d573d5f803e3d5ffd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e418686868686866040516103ef96959493929190610b49565b335f9081526020819052604090205460011461052e5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b6001600160a01b0381165f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b604051630922c0cb60e31b81526108009081906349160658906105c5907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b90600401610c54565b5f604051808303815f87803b1580156105dc575f80fd5b505af11580156105ee573d5f803e3d5ffd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f49887878787878760405161062b96959493929190610b49565b60405180910390a150505050505050565b335f908152602081905260409020546001146106905760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b6001600160a01b0381165f81815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60038054610337906109c8565b335f908152602081905260409020546001146107345760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b81666761746577617960c81b03610297576001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b5f8083601f8401126107bf575f80fd5b50813567ffffffffffffffff8111156107d6575f80fd5b6020830191508360208285010111156107ed575f80fd5b9250929050565b5f805f60408486031215610806575f80fd5b83359250602084013567ffffffffffffffff811115610823575f80fd5b61082f868287016107af565b9497909650939450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f805f8060608789031215610886575f80fd5b863567ffffffffffffffff81111561089c575f80fd5b6108a889828a016107af565b909750955050602087013567ffffffffffffffff8111156108c7575f80fd5b6108d389828a016107af565b909550935050604087013567ffffffffffffffff8111156108f2575f80fd5b6108fe89828a016107af565b979a9699509497509295939492505050565b5f8060208385031215610921575f80fd5b823567ffffffffffffffff811115610937575f80fd5b610943858286016107af565b90969095509350505050565b80356001600160a01b0381168114610965575f80fd5b919050565b5f6020828403121561097a575f80fd5b6109838261094f565b9392505050565b5f806040838503121561099b575f80fd5b823591506109ab6020840161094f565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806109dc57607f821691505b6020821081036109fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610a4757805f5260205f20601f840160051c81016020851015610a255750805b601f840160051c820191505b81811015610a44575f8155600101610a31565b50505b505050565b67ffffffffffffffff831115610a6457610a646109b4565b610a7883610a7283546109c8565b83610a00565b5f601f841160018114610aa9575f8515610a925750838201355b5f19600387901b1c1916600186901b178355610a44565b5f83815260208120601f198716915b82811015610ad85786850135825560209485019460019092019101610ab8565b5086821015610af4575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610b41602083018486610b06565b949350505050565b606081525f610b5c60608301888a610b06565b8281036020840152610b6f818789610b06565b90508281036040840152610b84818587610b06565b9998505050505050505050565b5f8154610b9d816109c8565b808552600182168015610bb75760018114610bd357610c07565b60ff1983166020870152602082151560051b8701019350610c07565b845f5260205f205f5b83811015610bfe5781546020828a010152600182019150602081019050610bdc565b87016020019450505b50505092915050565b606081525f610c226060830187610b91565b8281036020840152610c348187610b91565b90508281036040840152610c49818587610b06565b979650505050505050565b878152608060208201525f610c6d60808301888a610b06565b8281036040840152610c80818789610b06565b90508281036060840152610c95818587610b06565b9a995050505050505050505056fea264697066735822122005379d3f006b4eb9a474736ca830a0bb73d84168bf7a9f8a826e7706226dc16564736f6c634300081a0033"); /// Input for the KeccakHasher to derive a random `H160` where the passthrough /// router is always located at. Refers to address: @@ -127,14 +126,6 @@ const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 3510] = hex_literal::hex!("60806040 const PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT: &[u8] = b"PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT"; -#[test] -fn stable_passthrough_location() { - assert_eq!( - passthrough_router_location().as_bytes(), - hex_literal::hex!("33e7daf228e7613ba85ef6c3647dbceb0f011f7c") - ); -} - pub fn passthrough_router_location() -> H160 { H160::from(sp_core::H256::from(sp_core::KeccakHasher::hash( PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT, @@ -153,6 +144,29 @@ pub fn passthrough_genesis() -> (H160, fp_evm::GenesisAccount) { ) } +#[cfg(test)] +mod tests { + use sp_runtime::traits::{BlakeTwo256, Hash}; + + use super::*; + + #[test] + fn stable_passthrough_location() { + assert_eq!( + passthrough_router_location().as_bytes(), + hex_literal::hex!("33e7daf228e7613ba85ef6c3647dbceb0f011f7c") + ); + } + + #[test] + fn stable_passthrough_bytecode_hash() { + assert_eq!( + BlakeTwo256::hash_of(&PASSTHROUGH_ROUTER_ACCOUNT_CODES.to_vec()), + hex_literal::hex!("545a48d6f7f1a01cb2bd090a5272cd52c54eafea762071ec652c8ac94610146e") + ); + } +} + pub mod utils { use std::collections::BTreeMap; From ab2b1f462cbccb24e623f97d2ad8530dde2e9475 Mon Sep 17 00:00:00 2001 From: Frederik Gartenmeister Date: Wed, 24 Jul 2024 13:32:41 +0200 Subject: [PATCH 06/10] fix: array size --- runtime/common/src/evm/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index 06f4fd716a..bfda60945b 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -118,7 +118,7 @@ impl> FindAuthor for FindAuth /// Blake256 hash of the deployed passthrough router contract code as /// Encoded::encode(Vec): /// `0x545a48d6f7f1a01cb2bd090a5272cd52c54eafea762071ec652c8ac94610146e` -const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 3510] = hex_literal::hex!("608060405234801561000f575f80fd5b50600436106100da575f3560e01c806365fae35e11610088578063b0fa844411610063578063b0fa8444146101aa578063bf353dbb146101b2578063d4e8be83146101df578063f8a8fd6d146100f1575f80fd5b806365fae35e146101715780636d90d4ad146101845780639c52a7f114610197575f80fd5b80631c92115f116100b85780631c92115f146101385780632bb1ae7c1461014b57806342f1de141461015e575f80fd5b8063097ac46e146100de578063116191b6146100f35780631c6ffa4614610123575b5f80fd5b6100f16100ec3660046107f4565b6101f2565b005b600154610106906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61012b61032a565b60405161011a919061083c565b6100f1610146366004610871565b6103b6565b6100f1610159366004610910565b6103ff565b6100f161016c366004610871565b610442565b6100f161017f36600461096a565b6104da565b6100f1610192366004610871565b610572565b6100f16101a536600461096a565b61063c565b61012b6106d3565b6101d16101c036600461096a565b5f6020819052908152604090205481565b60405190815260200161011a565b6100f16101ed36600461098a565b6106e0565b335f9081526020819052604090205460011461024b5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b826a39b7bab931b2a1b430b4b760a91b0361027357600261026d828483610a4c565b506102eb565b826c736f757263654164647265737360981b0361029757600361026d828483610a4c565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201526272616d60e81b6064820152608401610242565b827fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc6838360405161031d929190610b2e565b60405180910390a2505050565b60028054610337906109c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610363906109c8565b80156103ae5780601f10610385576101008083540402835291602001916103ae565b820191905f5260205f20905b81548152906001019060200180831161039157829003601f168201915b505050505081565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e8686868686866040516103ef96959493929190610b49565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e6002600384846040516104369493929190610c10565b60405180910390a15050565b600154604051635fa45e5b60e11b81526001600160a01b039091169063bf48bcb6906104749085908590600401610b2e565b5f604051808303815f87803b15801561048b575f80fd5b505af115801561049d573d5f803e3d5ffd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e418686868686866040516103ef96959493929190610b49565b335f9081526020819052604090205460011461052e5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b6001600160a01b0381165f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b604051630922c0cb60e31b81526108009081906349160658906105c5907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b90600401610c54565b5f604051808303815f87803b1580156105dc575f80fd5b505af11580156105ee573d5f803e3d5ffd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f49887878787878760405161062b96959493929190610b49565b60405180910390a150505050505050565b335f908152602081905260409020546001146106905760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b6001600160a01b0381165f81815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60038054610337906109c8565b335f908152602081905260409020546001146107345760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b81666761746577617960c81b03610297576001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b5f8083601f8401126107bf575f80fd5b50813567ffffffffffffffff8111156107d6575f80fd5b6020830191508360208285010111156107ed575f80fd5b9250929050565b5f805f60408486031215610806575f80fd5b83359250602084013567ffffffffffffffff811115610823575f80fd5b61082f868287016107af565b9497909650939450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f805f8060608789031215610886575f80fd5b863567ffffffffffffffff81111561089c575f80fd5b6108a889828a016107af565b909750955050602087013567ffffffffffffffff8111156108c7575f80fd5b6108d389828a016107af565b909550935050604087013567ffffffffffffffff8111156108f2575f80fd5b6108fe89828a016107af565b979a9699509497509295939492505050565b5f8060208385031215610921575f80fd5b823567ffffffffffffffff811115610937575f80fd5b610943858286016107af565b90969095509350505050565b80356001600160a01b0381168114610965575f80fd5b919050565b5f6020828403121561097a575f80fd5b6109838261094f565b9392505050565b5f806040838503121561099b575f80fd5b823591506109ab6020840161094f565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806109dc57607f821691505b6020821081036109fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610a4757805f5260205f20601f840160051c81016020851015610a255750805b601f840160051c820191505b81811015610a44575f8155600101610a31565b50505b505050565b67ffffffffffffffff831115610a6457610a646109b4565b610a7883610a7283546109c8565b83610a00565b5f601f841160018114610aa9575f8515610a925750838201355b5f19600387901b1c1916600186901b178355610a44565b5f83815260208120601f198716915b82811015610ad85786850135825560209485019460019092019101610ab8565b5086821015610af4575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610b41602083018486610b06565b949350505050565b606081525f610b5c60608301888a610b06565b8281036020840152610b6f818789610b06565b90508281036040840152610b84818587610b06565b9998505050505050505050565b5f8154610b9d816109c8565b808552600182168015610bb75760018114610bd357610c07565b60ff1983166020870152602082151560051b8701019350610c07565b845f5260205f205f5b83811015610bfe5781546020828a010152600182019150602081019050610bdc565b87016020019450505b50505092915050565b606081525f610c226060830187610b91565b8281036020840152610c348187610b91565b90508281036040840152610c49818587610b06565b979650505050505050565b878152608060208201525f610c6d60808301888a610b06565b8281036040840152610c80818789610b06565b90508281036060840152610c95818587610b06565b9a995050505050505050505056fea264697066735822122005379d3f006b4eb9a474736ca830a0bb73d84168bf7a9f8a826e7706226dc16564736f6c634300081a0033"); +const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 3289] = hex_literal::hex!("608060405234801561000f575f80fd5b50600436106100da575f3560e01c806365fae35e11610088578063b0fa844411610063578063b0fa8444146101aa578063bf353dbb146101b2578063d4e8be83146101df578063f8a8fd6d146100f1575f80fd5b806365fae35e146101715780636d90d4ad146101845780639c52a7f114610197575f80fd5b80631c92115f116100b85780631c92115f146101385780632bb1ae7c1461014b57806342f1de141461015e575f80fd5b8063097ac46e146100de578063116191b6146100f35780631c6ffa4614610123575b5f80fd5b6100f16100ec3660046107f4565b6101f2565b005b600154610106906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61012b61032a565b60405161011a919061083c565b6100f1610146366004610871565b6103b6565b6100f1610159366004610910565b6103ff565b6100f161016c366004610871565b610442565b6100f161017f36600461096a565b6104da565b6100f1610192366004610871565b610572565b6100f16101a536600461096a565b61063c565b61012b6106d3565b6101d16101c036600461096a565b5f6020819052908152604090205481565b60405190815260200161011a565b6100f16101ed36600461098a565b6106e0565b335f9081526020819052604090205460011461024b5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b826a39b7bab931b2a1b430b4b760a91b0361027357600261026d828483610a4c565b506102eb565b826c736f757263654164647265737360981b0361029757600361026d828483610a4c565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201526272616d60e81b6064820152608401610242565b827fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc6838360405161031d929190610b2e565b60405180910390a2505050565b60028054610337906109c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610363906109c8565b80156103ae5780601f10610385576101008083540402835291602001916103ae565b820191905f5260205f20905b81548152906001019060200180831161039157829003601f168201915b505050505081565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e8686868686866040516103ef96959493929190610b49565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e6002600384846040516104369493929190610c10565b60405180910390a15050565b600154604051635fa45e5b60e11b81526001600160a01b039091169063bf48bcb6906104749085908590600401610b2e565b5f604051808303815f87803b15801561048b575f80fd5b505af115801561049d573d5f803e3d5ffd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e418686868686866040516103ef96959493929190610b49565b335f9081526020819052604090205460011461052e5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b6001600160a01b0381165f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b604051630922c0cb60e31b81526108009081906349160658906105c5907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b90600401610c54565b5f604051808303815f87803b1580156105dc575f80fd5b505af11580156105ee573d5f803e3d5ffd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f49887878787878760405161062b96959493929190610b49565b60405180910390a150505050505050565b335f908152602081905260409020546001146106905760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b6001600160a01b0381165f81815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60038054610337906109c8565b335f908152602081905260409020546001146107345760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b81666761746577617960c81b03610297576001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b5f8083601f8401126107bf575f80fd5b50813567ffffffffffffffff8111156107d6575f80fd5b6020830191508360208285010111156107ed575f80fd5b9250929050565b5f805f60408486031215610806575f80fd5b83359250602084013567ffffffffffffffff811115610823575f80fd5b61082f868287016107af565b9497909650939450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f805f8060608789031215610886575f80fd5b863567ffffffffffffffff81111561089c575f80fd5b6108a889828a016107af565b909750955050602087013567ffffffffffffffff8111156108c7575f80fd5b6108d389828a016107af565b909550935050604087013567ffffffffffffffff8111156108f2575f80fd5b6108fe89828a016107af565b979a9699509497509295939492505050565b5f8060208385031215610921575f80fd5b823567ffffffffffffffff811115610937575f80fd5b610943858286016107af565b90969095509350505050565b80356001600160a01b0381168114610965575f80fd5b919050565b5f6020828403121561097a575f80fd5b6109838261094f565b9392505050565b5f806040838503121561099b575f80fd5b823591506109ab6020840161094f565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806109dc57607f821691505b6020821081036109fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610a4757805f5260205f20601f840160051c81016020851015610a255750805b601f840160051c820191505b81811015610a44575f8155600101610a31565b50505b505050565b67ffffffffffffffff831115610a6457610a646109b4565b610a7883610a7283546109c8565b83610a00565b5f601f841160018114610aa9575f8515610a925750838201355b5f19600387901b1c1916600186901b178355610a44565b5f83815260208120601f198716915b82811015610ad85786850135825560209485019460019092019101610ab8565b5086821015610af4575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610b41602083018486610b06565b949350505050565b606081525f610b5c60608301888a610b06565b8281036020840152610b6f818789610b06565b90508281036040840152610b84818587610b06565b9998505050505050505050565b5f8154610b9d816109c8565b808552600182168015610bb75760018114610bd357610c07565b60ff1983166020870152602082151560051b8701019350610c07565b845f5260205f205f5b83811015610bfe5781546020828a010152600182019150602081019050610bdc565b87016020019450505b50505092915050565b606081525f610c226060830187610b91565b8281036020840152610c348187610b91565b90508281036040840152610c49818587610b06565b979650505050505050565b878152608060208201525f610c6d60808301888a610b06565b8281036040840152610c80818789610b06565b90508281036060840152610c95818587610b06565b9a995050505050505050505056fea264697066735822122005379d3f006b4eb9a474736ca830a0bb73d84168bf7a9f8a826e7706226dc16564736f6c634300081a0033"); /// Input for the KeccakHasher to derive a random `H160` where the passthrough /// router is always located at. Refers to address: From 6a03f9f3c549037bbd5478ef6e36989821a4c84d Mon Sep 17 00:00:00 2001 From: William Freudenberger Date: Wed, 24 Jul 2024 22:11:36 +0200 Subject: [PATCH 07/10] fix: clippy + fmt --- runtime/common/src/evm/mod.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index bfda60945b..a4544daaf6 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -11,11 +11,8 @@ // GNU General Public License for more details. use cfg_primitives::AuraId; -use frame_support::{ - traits::FindAuthor, weights::constants::WEIGHT_REF_TIME_PER_SECOND, Blake2_256, StorageHasher, -}; +use frame_support::{traits::FindAuthor, weights::constants::WEIGHT_REF_TIME_PER_SECOND}; use pallet_ethereum::{Transaction, TransactionAction}; -use parity_scale_codec::Encode; use sp_core::{crypto::ByteArray, Hasher, H160}; use sp_runtime::{ConsensusEngineId, Permill}; use sp_std::marker::PhantomData; @@ -127,9 +124,9 @@ const PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT: &[u8] = b"PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT"; pub fn passthrough_router_location() -> H160 { - H160::from(sp_core::H256::from(sp_core::KeccakHasher::hash( + H160::from(sp_core::KeccakHasher::hash( PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT, - ))) + )) } pub fn passthrough_genesis() -> (H160, fp_evm::GenesisAccount) { From 949bdff2fbd5340560262d6f9343e780cc354573 Mon Sep 17 00:00:00 2001 From: William Freudenberger Date: Thu, 25 Jul 2024 11:36:07 +0200 Subject: [PATCH 08/10] fix: update blake hash --- runtime/common/src/evm/mod.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index a4544daaf6..e72a29ca1b 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -108,13 +108,14 @@ impl> FindAuthor for FindAuth } } -/// Passthrough router deployed bytecode as of this state https://github.com/centrifuge/liquidity-pools/blob/ee35da785f2af3303ef9f52c6ecefeb9671aa61b/test/integration/PassthroughAdapter.sol +/// Passthrough router deployed bytecode as of this state +/// https://github.com/centrifuge/liquidity-pools/blob/6f62bb3a89f5f61a33d14965ea8ae725b4cc16d3/test/integration/PassthroughAdapter.sol /// /// NOTE: If the above file changes, this code needs to be adapted. /// /// Blake256 hash of the deployed passthrough router contract code as /// Encoded::encode(Vec): -/// `0x545a48d6f7f1a01cb2bd090a5272cd52c54eafea762071ec652c8ac94610146e` +/// `0x31173f15567854cfc3702aa6b639bf0dedf74638e745a3e90fa00f1619d8b94c` const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 3289] = hex_literal::hex!("608060405234801561000f575f80fd5b50600436106100da575f3560e01c806365fae35e11610088578063b0fa844411610063578063b0fa8444146101aa578063bf353dbb146101b2578063d4e8be83146101df578063f8a8fd6d146100f1575f80fd5b806365fae35e146101715780636d90d4ad146101845780639c52a7f114610197575f80fd5b80631c92115f116100b85780631c92115f146101385780632bb1ae7c1461014b57806342f1de141461015e575f80fd5b8063097ac46e146100de578063116191b6146100f35780631c6ffa4614610123575b5f80fd5b6100f16100ec3660046107f4565b6101f2565b005b600154610106906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61012b61032a565b60405161011a919061083c565b6100f1610146366004610871565b6103b6565b6100f1610159366004610910565b6103ff565b6100f161016c366004610871565b610442565b6100f161017f36600461096a565b6104da565b6100f1610192366004610871565b610572565b6100f16101a536600461096a565b61063c565b61012b6106d3565b6101d16101c036600461096a565b5f6020819052908152604090205481565b60405190815260200161011a565b6100f16101ed36600461098a565b6106e0565b335f9081526020819052604090205460011461024b5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b826a39b7bab931b2a1b430b4b760a91b0361027357600261026d828483610a4c565b506102eb565b826c736f757263654164647265737360981b0361029757600361026d828483610a4c565b60405162461bcd60e51b815260206004820152602360248201527f4c6f63616c526f757465722f66696c652d756e7265636f676e697a65642d706160448201526272616d60e81b6064820152608401610242565b827fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc6838360405161031d929190610b2e565b60405180910390a2505050565b60028054610337906109c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610363906109c8565b80156103ae5780601f10610385576101008083540402835291602001916103ae565b820191905f5260205f20905b81548152906001019060200180831161039157829003601f168201915b505050505081565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e8686868686866040516103ef96959493929190610b49565b60405180910390a1505050505050565b7ffabee705da75429b35b4ca6585fef97dc7a96c1aaeca74c480eeefe2f140c27e6002600384846040516104369493929190610c10565b60405180910390a15050565b600154604051635fa45e5b60e11b81526001600160a01b039091169063bf48bcb6906104749085908590600401610b2e565b5f604051808303815f87803b15801561048b575f80fd5b505af115801561049d573d5f803e3d5ffd5b505050507f0352e36764157a0a91a3565aca47fd498d8a1eff81976b83ff9b179a8ad61e418686868686866040516103ef96959493929190610b49565b335f9081526020819052604090205460011461052e5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b6001600160a01b0381165f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b604051630922c0cb60e31b81526108009081906349160658906105c5907f8505b897b40f92d6c56f2c1cd87ce4ab0da8b445d7453a51231ff9874ad45e26908b908b908b908b908b908b90600401610c54565b5f604051808303815f87803b1580156105dc575f80fd5b505af11580156105ee573d5f803e3d5ffd5b505050507f80bd9fe4a5709d9803f037c9c5601c8a67ea987a0f35a2767de92bdb0363f49887878787878760405161062b96959493929190610b49565b60405180910390a150505050505050565b335f908152602081905260409020546001146106905760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b6001600160a01b0381165f81815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60038054610337906109c8565b335f908152602081905260409020546001146107345760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b6044820152606401610242565b81666761746577617960c81b03610297576001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200160405180910390a25050565b5f8083601f8401126107bf575f80fd5b50813567ffffffffffffffff8111156107d6575f80fd5b6020830191508360208285010111156107ed575f80fd5b9250929050565b5f805f60408486031215610806575f80fd5b83359250602084013567ffffffffffffffff811115610823575f80fd5b61082f868287016107af565b9497909650939450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f805f8060608789031215610886575f80fd5b863567ffffffffffffffff81111561089c575f80fd5b6108a889828a016107af565b909750955050602087013567ffffffffffffffff8111156108c7575f80fd5b6108d389828a016107af565b909550935050604087013567ffffffffffffffff8111156108f2575f80fd5b6108fe89828a016107af565b979a9699509497509295939492505050565b5f8060208385031215610921575f80fd5b823567ffffffffffffffff811115610937575f80fd5b610943858286016107af565b90969095509350505050565b80356001600160a01b0381168114610965575f80fd5b919050565b5f6020828403121561097a575f80fd5b6109838261094f565b9392505050565b5f806040838503121561099b575f80fd5b823591506109ab6020840161094f565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806109dc57607f821691505b6020821081036109fa57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610a4757805f5260205f20601f840160051c81016020851015610a255750805b601f840160051c820191505b81811015610a44575f8155600101610a31565b50505b505050565b67ffffffffffffffff831115610a6457610a646109b4565b610a7883610a7283546109c8565b83610a00565b5f601f841160018114610aa9575f8515610a925750838201355b5f19600387901b1c1916600186901b178355610a44565b5f83815260208120601f198716915b82811015610ad85786850135825560209485019460019092019101610ab8565b5086821015610af4575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610b41602083018486610b06565b949350505050565b606081525f610b5c60608301888a610b06565b8281036020840152610b6f818789610b06565b90508281036040840152610b84818587610b06565b9998505050505050505050565b5f8154610b9d816109c8565b808552600182168015610bb75760018114610bd357610c07565b60ff1983166020870152602082151560051b8701019350610c07565b845f5260205f205f5b83811015610bfe5781546020828a010152600182019150602081019050610bdc565b87016020019450505b50505092915050565b606081525f610c226060830187610b91565b8281036020840152610c348187610b91565b90508281036040840152610c49818587610b06565b979650505050505050565b878152608060208201525f610c6d60808301888a610b06565b8281036040840152610c80818789610b06565b90508281036060840152610c95818587610b06565b9a995050505050505050505056fea264697066735822122005379d3f006b4eb9a474736ca830a0bb73d84168bf7a9f8a826e7706226dc16564736f6c634300081a0033"); /// Input for the KeccakHasher to derive a random `H160` where the passthrough @@ -159,7 +160,8 @@ mod tests { fn stable_passthrough_bytecode_hash() { assert_eq!( BlakeTwo256::hash_of(&PASSTHROUGH_ROUTER_ACCOUNT_CODES.to_vec()), - hex_literal::hex!("545a48d6f7f1a01cb2bd090a5272cd52c54eafea762071ec652c8ac94610146e") + hex_literal::hex!("31173f15567854cfc3702aa6b639bf0dedf74638e745a3e90fa00f1619d8b94c") + .into() ); } } From 7451360ed86dbf2d2ed225a0059fae0fa421c3bf Mon Sep 17 00:00:00 2001 From: William Freudenberger Date: Thu, 25 Jul 2024 13:47:01 +0200 Subject: [PATCH 09/10] fix: compilation --- runtime/common/Cargo.toml | 7 ------- runtime/common/src/evm/mod.rs | 10 ++++++---- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index f48a96c906..90c138f9e4 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -133,7 +133,6 @@ default = ["std"] std = [ "parity-scale-codec/std", "log/std", - # Substrate related "frame-support/std", "frame-system/std", @@ -161,7 +160,6 @@ std = [ "sp-api/std", "sp-arithmetic/std", "sp-core/std", - "sp-core/std", "sp-io/std", "sp-runtime/std", "sp-std/std", @@ -169,14 +167,12 @@ std = [ "xcm-primitives/std", "staging-xcm-builder/std", "staging-xcm/std", - # Locals "cfg-primitives/std", "cfg-traits/std", "cfg-types/std", "cfg-utils/std", "cfg-mocks/std", - # Pallet exporting list "axelar-gateway-precompile/std", "chainbridge/std", @@ -255,14 +251,12 @@ runtime-benchmarks = [ "staging-xcm-builder/runtime-benchmarks", "polkadot-parachain-primitives/runtime-benchmarks", "cumulus-primitives-core/runtime-benchmarks", - # Locals "cfg-primitives/runtime-benchmarks", "cfg-traits/runtime-benchmarks", "cfg-types/runtime-benchmarks", "cfg-utils/runtime-benchmarks", "cfg-mocks/runtime-benchmarks", - # Pallet exporting list "axelar-gateway-precompile/runtime-benchmarks", "chainbridge/runtime-benchmarks", @@ -329,7 +323,6 @@ try-runtime = [ "cfg-mocks/try-runtime", "frame-support/try-runtime", "frame-system/try-runtime", - # Pallet exporting list "axelar-gateway-precompile/try-runtime", "chainbridge/try-runtime", diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index e72a29ca1b..ac9e43daae 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -13,7 +13,7 @@ use cfg_primitives::AuraId; use frame_support::{traits::FindAuthor, weights::constants::WEIGHT_REF_TIME_PER_SECOND}; use pallet_ethereum::{Transaction, TransactionAction}; -use sp_core::{crypto::ByteArray, Hasher, H160}; +use sp_core::{crypto::ByteArray, Hasher, KeccakHasher, H160}; use sp_runtime::{ConsensusEngineId, Permill}; use sp_std::marker::PhantomData; @@ -124,12 +124,14 @@ const PASSTHROUGH_ROUTER_ACCOUNT_CODES: [u8; 3289] = hex_literal::hex!("60806040 const PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT: &[u8] = b"PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT"; +#[cfg(feature = "std")] pub fn passthrough_router_location() -> H160 { - H160::from(sp_core::KeccakHasher::hash( + H160::from(KeccakHasher::hash( PASSTHROUGH_ROUTER_ACCOUNT_CODES_ACCOUNT_LOCATION_SALT, )) } +#[cfg(feature = "std")] pub fn passthrough_genesis() -> (H160, fp_evm::GenesisAccount) { ( passthrough_router_location(), @@ -167,12 +169,12 @@ mod tests { } pub mod utils { - use std::collections::BTreeMap; - use sp_core::H160; + use sp_std::collections::btree_map::BTreeMap; use crate::evm::precompile::H160Addresses; + #[cfg(feature = "std")] pub fn account_genesis() -> BTreeMap { let mut precompiles = From 837006fef2cbd51a12b411add60d3ae68122ddfb Mon Sep 17 00:00:00 2001 From: William Freudenberger Date: Thu, 25 Jul 2024 15:00:47 +0200 Subject: [PATCH 10/10] fix: std import KeccakHasher --- runtime/common/src/evm/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runtime/common/src/evm/mod.rs b/runtime/common/src/evm/mod.rs index ac9e43daae..e782bba10c 100644 --- a/runtime/common/src/evm/mod.rs +++ b/runtime/common/src/evm/mod.rs @@ -13,7 +13,9 @@ use cfg_primitives::AuraId; use frame_support::{traits::FindAuthor, weights::constants::WEIGHT_REF_TIME_PER_SECOND}; use pallet_ethereum::{Transaction, TransactionAction}; -use sp_core::{crypto::ByteArray, Hasher, KeccakHasher, H160}; +#[cfg(feature = "std")] +use sp_core::KeccakHasher; +use sp_core::{crypto::ByteArray, Hasher, H160}; use sp_runtime::{ConsensusEngineId, Permill}; use sp_std::marker::PhantomData;