Skip to content

Commit

Permalink
fix: adapt passthrough router
Browse files Browse the repository at this point in the history
  • Loading branch information
mustermeiszer committed Jun 26, 2024
1 parent 4deb648 commit 1afd37b
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions runtime/common/src/evm/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -109,11 +110,16 @@ impl<T: pallet_aura::Config<AuthorityId = AuraId>> FindAuthor<H160> 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";

Expand Down

0 comments on commit 1afd37b

Please sign in to comment.