diff --git a/CCTPRelayer/.env.example b/CCTPRelayer/.env.example new file mode 100644 index 0000000..facb224 --- /dev/null +++ b/CCTPRelayer/.env.example @@ -0,0 +1,12 @@ +RPC_MAINNET="" +RPC_AVALANCHE="" +RPC_OP="" +RPC_ARBITRUM="" +RPC_BASE="" +RPC_POLYGON="" +RPC_TESTNET="" +RPC_AVALANCHE_TESTNET="" +RPC_OP_TESTNET="" +RPC_ARBITRUM_TESTNET="" +RPC_BASE_TESTNET="" +RPC_POLYGON_TESTNET="" \ No newline at end of file diff --git a/CCTPRelayer/script/Config.sol b/CCTPRelayer/script/Config.sol index 66129be..75608cd 100644 --- a/CCTPRelayer/script/Config.sol +++ b/CCTPRelayer/script/Config.sol @@ -45,25 +45,25 @@ uint256 constant CHAIN_BASE_SEPOLIA = 84532; uint256 constant CHAIN_POLYGON_MUMBAI = 80001; // USDC -address constant USDC_SEPOLIA = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; -address constant USDC_AVALANCHE_FUJI = 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E; -address constant USDC_OP_SEPOLIA = 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85; -address constant USDC_ARBITRUM_SEPOLIA = 0xaf88d065e77c8cC2239327C5EDb3A432268e5831; -address constant USDC_BASE_SEPOLIA = 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913; -address constant USDC_POLYGON_MUMBAI = 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359; +address constant USDC_SEPOLIA = 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238; +address constant USDC_AVALANCHE_FUJI = 0x5425890298aed601595a70AB815c96711a31Bc65; +address constant USDC_OP_SEPOLIA = 0x5fd84259d66Cd46123540766Be93DFE6D43130D7; +address constant USDC_ARBITRUM_SEPOLIA = 0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d; +address constant USDC_BASE_SEPOLIA = 0x036CbD53842c5426634e7929541eC2318f3dCF7e; +address constant USDC_POLYGON_MUMBAI = 0x9999f7Fea5938fD3b1E26A12c3f2fb024e194f97; // TokenMessenger -address constant MESSENGER_SEPOLIA = 0xBd3fa81B58Ba92a82136038B25aDec7066af3155; -address constant MESSENGER_AVALANCHE_FUJI = 0x6B25532e1060CE10cc3B0A99e5683b91BFDe6982; -address constant MESSENGER_OP_SEPOLIA = 0x2B4069517957735bE00ceE0fadAE88a26365528f; -address constant MESSENGER_ARBITRUM_SEPOLIA = 0x19330d10D9Cc8751218eaf51E8885D058642E08A; -address constant MESSENGER_BASE_SEPOLIA = 0x1682Ae6375C4E4A97e4B583BC394c861A46D8962; +address constant MESSENGER_SEPOLIA = 0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5; +address constant MESSENGER_AVALANCHE_FUJI = 0xeb08f243E5d3FCFF26A9E38Ae5520A669f4019d0; +address constant MESSENGER_OP_SEPOLIA = 0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5; +address constant MESSENGER_ARBITRUM_SEPOLIA = 0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5; +address constant MESSENGER_BASE_SEPOLIA = 0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5; address constant MESSENGER_POLYGON_MUMBAI = 0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5; // MessageTransmitter -address constant TRANSMITTER_SEPOLIA = 0x0a992d191DEeC32aFe36203Ad87D7d289a738F81; -address constant TRANSMITTER_AVALANCHE_FUJI = 0x8186359aF5F57FbB40c6b14A588d2A59C0C29880; -address constant TRANSMITTER_OP_SEPOLIA = 0x4D41f22c5a0e5c74090899E5a8Fb597a8842b3e8; -address constant TRANSMITTER_ARBITRUM_SEPOLIA = 0xC30362313FBBA5cf9163F0bb16a0e01f01A896ca; -address constant TRANSMITTER_BASE_SEPOLIA = 0xAD09780d193884d503182aD4588450C416D6F9D4; -address constant TRANSMITTER_POLYGON_MUMBAI = 0xF3be9355363857F3e001be68856A2f96b4C39Ba9; +address constant TRANSMITTER_SEPOLIA = 0x7865fAfC2db2093669d92c0F33AeEF291086BEFD; +address constant TRANSMITTER_AVALANCHE_FUJI = 0xa9fB1b3009DCb79E2fe346c16a604B8Fa8aE0a79; +address constant TRANSMITTER_OP_SEPOLIA = 0x7865fAfC2db2093669d92c0F33AeEF291086BEFD; +address constant TRANSMITTER_ARBITRUM_SEPOLIA = 0xaCF1ceeF35caAc005e15888dDb8A3515C41B4872; +address constant TRANSMITTER_BASE_SEPOLIA = 0x7865fAfC2db2093669d92c0F33AeEF291086BEFD; +address constant TRANSMITTER_POLYGON_MUMBAI = 0xe09A679F56207EF33F5b9d8fb4499Ec00792eA73; diff --git a/CCTPRelayer/test/CCTPRelayer.t.sol b/CCTPRelayer/test/CCTPRelayer.t.sol index fdd9c31..ab3f965 100644 --- a/CCTPRelayer/test/CCTPRelayer.t.sol +++ b/CCTPRelayer/test/CCTPRelayer.t.sol @@ -30,47 +30,89 @@ contract CCTPRelayerTest is Test { mapping(uint256 => IMessageTransmitter) public transmitters; function setUp() public { - uint256 id = vm.createSelectFork(vm.envString("RPC_MAINNET"), 19421470); + uint256 id = vm.createSelectFork(vm.envString("RPC_MAINNET")); usdcs[id] = IERC20(USDC_MAINNET); messengers[id] = ITokenMessenger(MESSENGER_MAINNET); transmitters[id] = IMessageTransmitter(TRANSMITTER_MAINNET); _deploy(id); forks.push(id); - id = vm.createSelectFork(vm.envString("RPC_AVALANCHE"), 42820450); + id = vm.createSelectFork(vm.envString("RPC_AVALANCHE")); usdcs[id] = IERC20(USDC_AVALANCHE); messengers[id] = ITokenMessenger(MESSENGER_AVALANCHE); transmitters[id] = IMessageTransmitter(TRANSMITTER_AVALANCHE); _deploy(id); forks.push(id); - id = vm.createSelectFork(vm.envString("RPC_OP"), 117339078); + id = vm.createSelectFork(vm.envString("RPC_OP")); usdcs[id] = IERC20(USDC_OP); messengers[id] = ITokenMessenger(MESSENGER_OP); transmitters[id] = IMessageTransmitter(TRANSMITTER_OP); _deploy(id); forks.push(id); - id = vm.createSelectFork(vm.envString("RPC_ARBITRUM"), 189738155); + id = vm.createSelectFork(vm.envString("RPC_ARBITRUM")); usdcs[id] = IERC20(USDC_ARBITRUM); messengers[id] = ITokenMessenger(MESSENGER_ARBITRUM); transmitters[id] = IMessageTransmitter(TRANSMITTER_ARBITRUM); _deploy(id); forks.push(id); - id = vm.createSelectFork(vm.envString("RPC_BASE"), 11743812); + id = vm.createSelectFork(vm.envString("RPC_BASE")); usdcs[id] = IERC20(USDC_BASE); messengers[id] = ITokenMessenger(MESSENGER_BASE); transmitters[id] = IMessageTransmitter(TRANSMITTER_BASE); _deploy(id); forks.push(id); - id = vm.createSelectFork(vm.envString("RPC_POLYGON"), 54583257); + id = vm.createSelectFork(vm.envString("RPC_POLYGON")); usdcs[id] = IERC20(USDC_POLYGON); messengers[id] = ITokenMessenger(MESSENGER_POLYGON); transmitters[id] = IMessageTransmitter(TRANSMITTER_POLYGON); _deploy(id); forks.push(id); + + id = vm.createSelectFork(vm.envString("RPC_TESTNET")); + usdcs[id] = IERC20(USDC_SEPOLIA); + messengers[id] = ITokenMessenger(MESSENGER_SEPOLIA); + transmitters[id] = IMessageTransmitter(TRANSMITTER_SEPOLIA); + _deploy(id); + forks.push(id); + + id = vm.createSelectFork(vm.envString("RPC_AVALANCHE_TESTNET")); + usdcs[id] = IERC20(USDC_AVALANCHE_FUJI); + messengers[id] = ITokenMessenger(MESSENGER_AVALANCHE_FUJI); + transmitters[id] = IMessageTransmitter(TRANSMITTER_AVALANCHE_FUJI); + _deploy(id); + forks.push(id); + + id = vm.createSelectFork(vm.envString("RPC_OP_TESTNET")); + usdcs[id] = IERC20(USDC_OP_SEPOLIA); + messengers[id] = ITokenMessenger(MESSENGER_OP_SEPOLIA); + transmitters[id] = IMessageTransmitter(TRANSMITTER_OP_SEPOLIA); + _deploy(id); + forks.push(id); + + id = vm.createSelectFork(vm.envString("RPC_ARBITRUM_TESTNET")); + usdcs[id] = IERC20(USDC_ARBITRUM_SEPOLIA); + messengers[id] = ITokenMessenger(MESSENGER_ARBITRUM_SEPOLIA); + transmitters[id] = IMessageTransmitter(TRANSMITTER_ARBITRUM_SEPOLIA); + _deploy(id); + forks.push(id); + + id = vm.createSelectFork(vm.envString("RPC_BASE_TESTNET")); + usdcs[id] = IERC20(USDC_BASE_SEPOLIA); + messengers[id] = ITokenMessenger(MESSENGER_BASE_SEPOLIA); + transmitters[id] = IMessageTransmitter(TRANSMITTER_BASE_SEPOLIA); + _deploy(id); + forks.push(id); + + id = vm.createSelectFork(vm.envString("RPC_POLYGON_TESTNET")); + usdcs[id] = IERC20(USDC_POLYGON_MUMBAI); + messengers[id] = ITokenMessenger(MESSENGER_POLYGON_MUMBAI); + transmitters[id] = IMessageTransmitter(TRANSMITTER_POLYGON_MUMBAI); + _deploy(id); + forks.push(id); } function test_Fuzz_makePaymentForRelay(uint64 nonce, uint256 amount) public { @@ -86,11 +128,17 @@ contract CCTPRelayerTest is Test { function test_requestCCTPTransfer() public { uint256 length = forks.length; - uint32[6] memory domains = [uint32(0), 1, 2, 3, 6, 7]; + uint32[6] memory domains = [uint32(7), 6, 3, 2, 1, 0]; for (uint256 i; i < length; ++i) { + uint32 domain; + if (i < 6) { + domain = domains[i]; + } else { + domain = domains[i - 6]; + } _switchFork(forks[i]); - _requestCCTPTransfer(domains[5 - i]); + _requestCCTPTransfer(domain); } }