diff --git a/audit/auditLog.json b/audit/auditLog.json index aebd0899..79af86a4 100644 --- a/audit/auditLog.json +++ b/audit/auditLog.json @@ -62,6 +62,13 @@ "auditorGitHandle": "sujithsomraaj", "auditReportPath": "./audit/reports/2024.12.03_LiFiDexAggregator.pdf", "auditCommitHash": "8a34562c912b5b19c919bb95338655c944428af5" + }, + "audit20241206": { + "auditCompletedOn": "06.12.2024", + "auditedBy": "Sujith Somraaj (individual security researcher)", + "auditorGitHandle": "sujithsomraaj", + "auditReportPath": "./audit/reports/2024.12.06_AcrossFacetPackedV3(v1.2.0).pdf", + "auditCommitHash": "5f59b4957fe315ea2d7b5e9daa931785ccff488c" } }, "auditedContracts": { @@ -75,6 +82,14 @@ "audit20241007" ] }, + "AcrossFacetPackedV3": { + "1.0.0": [ + "audit20241007" + ], + "1.2.0": [ + "audit20241206" + ], + }, "EmergencyPauseFacet": { "1.0.0": [ "audit20240913" @@ -116,6 +131,9 @@ "ReceiverAcrossV3": { "1.0.0": [ "audit20241007" + ], + "1.0.1": [ + "audit20241206" ] }, "RelayFacet": { diff --git a/audit/reports/2024.12.06_AcrossFacetPackedV3(v1.2.0).pdf b/audit/reports/2024.12.06_AcrossFacetPackedV3(v1.2.0).pdf new file mode 100644 index 00000000..a77c1c4f Binary files /dev/null and b/audit/reports/2024.12.06_AcrossFacetPackedV3(v1.2.0).pdf differ diff --git a/deployments/_deployments_log_file.json b/deployments/_deployments_log_file.json index 0e75c2db..bf483405 100644 --- a/deployments/_deployments_log_file.json +++ b/deployments/_deployments_log_file.json @@ -24735,21 +24735,21 @@ "staging": { "1.0.0": [ { - "ADDRESS": "0xe2e5428F972d9C0a5Ba433e0c402752b472dB248", + "ADDRESS": "0xAd99305a4277B417d1711CB358Dcf124181Ec3C3", "OPTIMIZER_RUNS": "1000000", - "TIMESTAMP": "2024-06-14 09:37:49", + "TIMESTAMP": "2024-12-06 20:05:58", "CONSTRUCTOR_ARGS": "0x0000000000000000000000009295ee1d8c5b022be115a2ad3c30c72e34e7f0960000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619", "SALT": "", - "VERIFIED": "false" + "VERIFIED": "true" } ] }, "production": { "1.0.0": [ { - "ADDRESS": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7", + "ADDRESS": "0xAd99305a4277B417d1711CB358Dcf124181Ec3C3", "OPTIMIZER_RUNS": "1000000", - "TIMESTAMP": "2024-10-08 06:54:46", + "TIMESTAMP": "2024-12-06 21:32:42", "CONSTRUCTOR_ARGS": "0x0000000000000000000000009295ee1d8c5b022be115a2ad3c30c72e34e7f0960000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619", "SALT": "", "VERIFIED": "true" @@ -24911,12 +24911,12 @@ "production": { "1.0.0": [ { - "ADDRESS": "0xB5dD83183fD7CCF859b227CA83663a034d5B2f92", + "ADDRESS": "0xAd99305a4277B417d1711CB358Dcf124181Ec3C3", "OPTIMIZER_RUNS": "1000000", - "TIMESTAMP": "2024-12-02T07:45:31.618Z", + "TIMESTAMP": "2024-12-06 22:46:02", "CONSTRUCTOR_ARGS": "0x00000000000000000000000009aea4b2242abc8bb4bb78d537a67a245a7bec640000000000000000000000004200000000000000000000000000000000000006", "SALT": "", - "VERIFIED": true + "VERIFIED": "false" } ] } @@ -24960,6 +24960,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.0.1": [ + { + "ADDRESS": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 21:44:47", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f0000000000000000000000002dfadab8266483bed9fd9a292ce56596a2d1378d0000000000000000000000006f26bf09b1c792e3228e5467807a900a503c028100000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -24967,12 +24977,12 @@ "staging": { "1.0.0": [ { - "ADDRESS": "0x3877f47B560819E96BBD7e7700a02dfACe36D696", + "ADDRESS": "0xe4F3DEF14D61e47c696374453CD64d438FD277F8", "OPTIMIZER_RUNS": "1000000", - "TIMESTAMP": "2024-07-31 16:59:18", + "TIMESTAMP": "2024-12-06 12:41:24", "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f00000000000000000000000023f882ba2fa54a358d8599465eb471f58cc26751000000000000000000000000e35e9842fceaca96570b734083f4a58e8f7c5f2a00000000000000000000000000000000000000000000000000000000000186a0", - "SALT": "31072024", - "VERIFIED": "false" + "SALT": "", + "VERIFIED": "true" } ] }, @@ -24986,6 +24996,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.0.1": [ + { + "ADDRESS": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 22:19:05", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f0000000000000000000000002dfadab8266483bed9fd9a292ce56596a2d1378d000000000000000000000000e35e9842fceaca96570b734083f4a58e8f7c5f2a00000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25000,6 +25020,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.0.1": [ + { + "ADDRESS": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 23:02:55", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f0000000000000000000000002dfadab8266483bed9fd9a292ce56596a2d1378d0000000000000000000000005c7bcd6e7de5423a257d81b442095a1a6ced35c500000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25014,6 +25044,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.0.1": [ + { + "ADDRESS": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 22:19:11", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f0000000000000000000000007078d1de45c7d3e87f71d5da663db2a8ee1dfebe0000000000000000000000003bad7ad0728f9917d1bf08af5782dcbd516cdd9600000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25028,6 +25068,28 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.0.1": [ + { + "ADDRESS": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 22:19:14", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f0000000000000000000000002dfadab8266483bed9fd9a292ce56596a2d1378d0000000000000000000000009295ee1d8c5b022be115a2ad3c30c72e34e7f09600000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } + ] + }, + "staging": { + "1.0.0": [ + { + "ADDRESS": "0xe4F3DEF14D61e47c696374453CD64d438FD277F8", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 12:40:08", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f00000000000000000000000023f882ba2fa54a358d8599465eb471f58cc267510000000000000000000000009295ee1d8c5b022be115a2ad3c30c72e34e7f09600000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25042,6 +25104,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.0.1": [ + { + "ADDRESS": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 22:19:17", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f0000000000000000000000007078d1de45c7d3e87f71d5da663db2a8ee1dfebe0000000000000000000000002d509190ed0172ba588407d4c2df918f955cc6e100000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25056,6 +25128,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.0.1": [ + { + "ADDRESS": "0xE264aD3F63ccf1399AD704C730d9c9c3847E8177", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 22:19:15", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f0000000000000000000000002a202ed587f0bc7dfa80ea1dd943d8470492dd0f0000000000000000000000007e63a5f1a8f0b4d0934b2f2327daed3f6bb2ee7500000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25070,6 +25152,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.0.1": [ + { + "ADDRESS": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 22:21:17", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f0000000000000000000000007078d1de45c7d3e87f71d5da663db2a8ee1dfebe0000000000000000000000003bad7ad0728f9917d1bf08af5782dcbd516cdd9600000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25084,6 +25176,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.0.1": [ + { + "ADDRESS": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 22:19:15", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f0000000000000000000000004dac9d1769b9b304cb04741dcdeb2fc14abdf11000000000000000000000000009aea4b2242abc8bb4bb78d537a67a245a7bec6400000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25109,6 +25211,16 @@ "SALT": "", "VERIFIED": "false" } + ], + "1.0.1": [ + { + "ADDRESS": "0x68cb042aD93608e819b699427726e5c5E1A5F2dC", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-10 11:11:50", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f000000000000000000000000a9bfa49f26733271f4fd34a4b57bb7c563ae056a000000000000000000000000e0b015e54d54fc84a6cb9b666099c46ade9335ff00000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25121,7 +25233,17 @@ "TIMESTAMP": "2024-12-02T07:45:33.646Z", "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f000000000000000000000000d9318ffe1ebbfa71049a443e623be566067c9d6b00000000000000000000000009aea4b2242abc8bb4bb78d537a67a245a7bec6400000000000000000000000000000000000000000000000000000000000186a0", "SALT": "", - "VERIFIED": true + "VERIFIED": "true" + } + ], + "1.0.1": [ + { + "ADDRESS": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 22:44:33", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000156cebba59deb2cb23742f70dcb0a11cc775591f000000000000000000000000d9318ffe1ebbfa71049a443e623be566067c9d6b00000000000000000000000009aea4b2242abc8bb4bb78d537a67a245a7bec6400000000000000000000000000000000000000000000000000000000000186a0", + "SALT": "", + "VERIFIED": "true" } ] } @@ -25165,6 +25287,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.2.0": [ + { + "ADDRESS": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 21:32:48", + "CONSTRUCTOR_ARGS": "0x0000000000000000000000006f26bf09b1c792e3228e5467807a900a503c0281000000000000000000000000420000000000000000000000000000000000000600000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25179,6 +25311,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.2.0": [ + { + "ADDRESS": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-07 13:59:53", + "CONSTRUCTOR_ARGS": "0x0000000000000000000000005c7bcd6e7de5423a257d81b442095a1a6ced35c5000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25193,6 +25335,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.2.0": [ + { + "ADDRESS": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 21:32:49", + "CONSTRUCTOR_ARGS": "0x0000000000000000000000003bad7ad0728f9917d1bf08af5782dcbd516cdd96000000000000000000000000420000000000000000000000000000000000000600000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25207,6 +25359,28 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.2.0": [ + { + "ADDRESS": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-07 13:35:24", + "CONSTRUCTOR_ARGS": "0x0000000000000000000000009295ee1d8c5b022be115a2ad3c30c72e34e7f0960000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f61900000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } + ] + }, + "staging": { + "1.0.0": [ + { + "ADDRESS": "0x21767081Ff52CE5563A29f27149D01C7127775A2", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 12:34:11", + "CONSTRUCTOR_ARGS": "0x0000000000000000000000009295ee1d8c5b022be115a2ad3c30c72e34e7f0960000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619000000000000000000000000b9c0de368bece5e76b52545a8e377a4c118f597b", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25221,6 +25395,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.2.0": [ + { + "ADDRESS": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 21:32:55", + "CONSTRUCTOR_ARGS": "0x00000000000000000000000009aea4b2242abc8bb4bb78d537a67a245a7bec64000000000000000000000000420000000000000000000000000000000000000600000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25235,14 +25419,24 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.2.0": [ + { + "ADDRESS": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 21:32:49", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000e35e9842fceaca96570b734083f4a58e8f7c5f2a00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab100000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } ] }, "staging": { "1.0.0": [ { - "ADDRESS": "0x4352459F6BE1C7D1278F8c34Bb598b0feeB50f8b", + "ADDRESS": "0x21767081Ff52CE5563A29f27149D01C7127775A2", "OPTIMIZER_RUNS": "1000000", - "TIMESTAMP": "2024-10-03 07:44:55", + "TIMESTAMP": "2024-12-06 12:24:22", "CONSTRUCTOR_ARGS": "0x000000000000000000000000e35e9842fceaca96570b734083f4a58e8f7c5f2a00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000b9c0de368bece5e76b52545a8e377a4c118f597b", "SALT": "", "VERIFIED": "true" @@ -25261,6 +25455,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.2.0": [ + { + "ADDRESS": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 21:35:13", + "CONSTRUCTOR_ARGS": "0x0000000000000000000000003bad7ad0728f9917d1bf08af5782dcbd516cdd96000000000000000000000000530000000000000000000000000000000000000400000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25275,6 +25479,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.2.0": [ + { + "ADDRESS": "0x60b6710c04D44273F6F5C2F1c871Aa9e856bED12", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 21:32:55", + "CONSTRUCTOR_ARGS": "0x0000000000000000000000007e63a5f1a8f0b4d0934b2f2327daed3f6bb2ee75000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f00000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25289,6 +25503,16 @@ "SALT": "", "VERIFIED": "true" } + ], + "1.2.0": [ + { + "ADDRESS": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 21:30:23", + "CONSTRUCTOR_ARGS": "0x0000000000000000000000002d509190ed0172ba588407d4c2df918f955cc6e1000000000000000000000000430000000000000000000000000000000000000400000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25303,6 +25527,16 @@ "SALT": "", "VERIFIED": "false" } + ], + "1.2.0": [ + { + "ADDRESS": "0x45C83B209878601d21604301dfE25bD6D0BBC218", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-10 10:31:33", + "CONSTRUCTOR_ARGS": "0x000000000000000000000000e0b015e54d54fc84a6cb9b666099c46ade9335ff0000000000000000000000005aea5775959fbc2557cc8789bc1bf90a239d9a9100000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" + } ] } }, @@ -25315,7 +25549,17 @@ "TIMESTAMP": "2024-12-02T07:45:31.821Z", "CONSTRUCTOR_ARGS": "0x00000000000000000000000009aea4b2242abc8bb4bb78d537a67a245a7bec64000000000000000000000000420000000000000000000000000000000000000600000000000000000000000011f11121df7256c40339393b0fb045321022ce44", "SALT": "", - "VERIFIED": true + "VERIFIED": "true" + } + ], + "1.2.0": [ + { + "ADDRESS": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", + "OPTIMIZER_RUNS": "1000000", + "TIMESTAMP": "2024-12-06 22:49:43", + "CONSTRUCTOR_ARGS": "0x00000000000000000000000009aea4b2242abc8bb4bb78d537a67a245a7bec64000000000000000000000000420000000000000000000000000000000000000600000000000000000000000011f1022ca6adef6400e5677528a80d49a069c00c", + "SALT": "", + "VERIFIED": "true" } ] } diff --git a/deployments/arbitrum.diamond.json b/deployments/arbitrum.diamond.json index 19e5ccea..dd6af1d3 100644 --- a/deployments/arbitrum.diamond.json +++ b/deployments/arbitrum.diamond.json @@ -133,9 +133,9 @@ "Name": "StargateFacetV2", "Version": "1.0.1" }, - "0x20F3FFf5A89e988c4109A6e496a839480B1B558f": { + "0x21a786957c69424A4353Afe743242Bd9Db3cC07b": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7": { "Name": "AcrossFacetV3", @@ -158,7 +158,7 @@ "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", "Receiver": "0x050e198E36A73a1e32F15C3afC58C4506d82f657", "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A", "RelayerCelerIM": "0x6a8b11bF29C0546991DEcD6E0Db8cC7Fda22bA97", diff --git a/deployments/arbitrum.json b/deployments/arbitrum.json index 570c0c5d..444c77ef 100644 --- a/deployments/arbitrum.json +++ b/deployments/arbitrum.json @@ -51,8 +51,8 @@ "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9", "EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61", "AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", - "AcrossFacetPackedV3": "0x20F3FFf5A89e988c4109A6e496a839480B1B558f", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "AcrossFacetPackedV3": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", "GasZipFacet": "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849", "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3" } \ No newline at end of file diff --git a/deployments/arbitrum.staging.json b/deployments/arbitrum.staging.json index 8094fded..313f2ef2 100644 --- a/deployments/arbitrum.staging.json +++ b/deployments/arbitrum.staging.json @@ -48,7 +48,7 @@ "EmergencyPauseFacet": "0x17Bb203F42d8e404ac7E8dB6ff972B7E8473850b", "Permit2Proxy": "0x6FC01BC9Ff6Cdab694Ec8Ca41B21a2F04C8c37E5", "AcrossFacetV3": "0x6124C65B6264bE13f059b7C3A891a5b77DA8Bd95", - "ReceiverAcrossV3": "0x3877f47B560819E96BBD7e7700a02dfACe36D696", - "AcrossFacetPackedV3": "0x4352459F6BE1C7D1278F8c34Bb598b0feeB50f8b", + "ReceiverAcrossV3": "0xe4F3DEF14D61e47c696374453CD64d438FD277F8", + "AcrossFacetPackedV3": "0x21767081Ff52CE5563A29f27149D01C7127775A2", "RelayFacet": "0x3cf7dE0e31e13C93c8Aada774ADF1C7eD58157f5" } \ No newline at end of file diff --git a/deployments/base.diamond.json b/deployments/base.diamond.json index 88eb383a..4630dcc6 100644 --- a/deployments/base.diamond.json +++ b/deployments/base.diamond.json @@ -121,9 +121,9 @@ "Name": "StargateFacetV2", "Version": "1.0.1" }, - "0x20F3FFf5A89e988c4109A6e496a839480B1B558f": { + "0x21a786957c69424A4353Afe743242Bd9Db3cC07b": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, "0x00990C0FfBB7eAB014351652aFB65AaE00db43A4": { "Name": "", @@ -150,7 +150,7 @@ "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", "Receiver": "0xeC03B65CbDc5f8858b02F44EBa54C90664249fb1", "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A", "RelayerCelerIM": "", diff --git a/deployments/base.json b/deployments/base.json index 640f520a..e17b1677 100644 --- a/deployments/base.json +++ b/deployments/base.json @@ -40,8 +40,8 @@ "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61", "AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", - "AcrossFacetPackedV3": "0x20F3FFf5A89e988c4109A6e496a839480B1B558f", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "AcrossFacetPackedV3": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", "GasZipFacet": "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849", "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9" diff --git a/deployments/blast.diamond.json b/deployments/blast.diamond.json index dd301a90..cc83e951 100644 --- a/deployments/blast.diamond.json +++ b/deployments/blast.diamond.json @@ -69,13 +69,13 @@ "Name": "AcrossFacet", "Version": "2.0.0" }, - "0x20F3FFf5A89e988c4109A6e496a839480B1B558f": { + "0x21a786957c69424A4353Afe743242Bd9Db3cC07b": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849": { - "Name": "", - "Version": "" + "Name": "GasZipFacet", + "Version": "2.0.0" }, "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7": { "Name": "AcrossFacetV3", @@ -86,15 +86,15 @@ "ERC20Proxy": "0xA950Ac46b0b844c0564d18A54A9685e614B9086C", "Executor": "0x7078d1DE45C7D3e87f71D5DA663db2a8Ee1dfEbe", "FeeCollector": "0xF048e5816B0C7951AC179f656C5B86e5a79Bd7b5", + "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3", "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", "Receiver": "0x0561fFe9855541C02D17951c93405A4407Df74BC", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", "ReceiverStargateV2": "", "RelayerCelerIM": "", - "TokenWrapper": "0xF2ee649caB7a0edEdED7a27821B0aCDF77778aeD", - "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3" + "TokenWrapper": "0xF2ee649caB7a0edEdED7a27821B0aCDF77778aeD" } } } \ No newline at end of file diff --git a/deployments/blast.json b/deployments/blast.json index 692da772..33341afa 100644 --- a/deployments/blast.json +++ b/deployments/blast.json @@ -27,8 +27,8 @@ "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61", "AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", - "AcrossFacetPackedV3": "0x20F3FFf5A89e988c4109A6e496a839480B1B558f", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "AcrossFacetPackedV3": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", "GasZipFacet": "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849", "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9" diff --git a/deployments/linea.diamond.json b/deployments/linea.diamond.json index 3502dbf0..739f8377 100644 --- a/deployments/linea.diamond.json +++ b/deployments/linea.diamond.json @@ -109,9 +109,9 @@ "Name": "", "Version": "" }, - "0x922D1c381Cb5b0AFAAe9E7C86ed34FDE337766b0": { + "0x60b6710c04D44273F6F5C2F1c871Aa9e856bED12": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, "0xe07c030dDC7Fb9ca23b633b1028106DAA5fdbF96": { "Name": "EmergencyPauseFacet", @@ -134,11 +134,11 @@ "LiFiDEXAggregator": "", "LiFuelFeeCollector": "0x68B21d21509446Bf5449B6F5F8aBD4b3cfcbc3f8", "Permit2Proxy": "", + "ReceiverAcrossV3": "0xE264aD3F63ccf1399AD704C730d9c9c3847E8177", "Receiver": "0xdcBEcDE898c067cA58ABD01a7de51660bBD5A897", - "ReceiverAcrossV3": "0x4BB377A1A624bDeF72d352891dc5E64087345fe6", "ReceiverStargateV2": "0x6CA57d9846f9a1fd48368762b743a047eC4f81A6", "RelayerCelerIM": "", "TokenWrapper": "0xf6C9605c6E231C1547b7a6545d93e7233f97322a" } } -} +} \ No newline at end of file diff --git a/deployments/linea.json b/deployments/linea.json index 3943a163..071613f5 100644 --- a/deployments/linea.json +++ b/deployments/linea.json @@ -37,8 +37,8 @@ "LiFiDEXAggregator": "0xcaA342e4f781d63EF41E220D7622B97E66BAEcF3", "EmergencyPauseFacet": "0xe07c030dDC7Fb9ca23b633b1028106DAA5fdbF96", "AcrossFacetV3": "0x2531368BAca8c5E85031FC0a9a2f148b65da389A", - "ReceiverAcrossV3": "0x4BB377A1A624bDeF72d352891dc5E64087345fe6", - "AcrossFacetPackedV3": "0x922D1c381Cb5b0AFAAe9E7C86ed34FDE337766b0", + "ReceiverAcrossV3": "0xE264aD3F63ccf1399AD704C730d9c9c3847E8177", + "AcrossFacetPackedV3": "0x60b6710c04D44273F6F5C2F1c871Aa9e856bED12", "GasZipFacet": "0x75943d7305310635945736D00235d825181018f3", "GasZipPeriphery": "0x0ec6D2eEb94541C51620830D151995fCFf83Aa74" -} +} \ No newline at end of file diff --git a/deployments/mainnet.diamond.json b/deployments/mainnet.diamond.json index c8875fd4..221b8d7a 100644 --- a/deployments/mainnet.diamond.json +++ b/deployments/mainnet.diamond.json @@ -157,9 +157,9 @@ "Name": "StargateFacetV2", "Version": "1.0.1" }, - "0x20F3FFf5A89e988c4109A6e496a839480B1B558f": { + "0x21a786957c69424A4353Afe743242Bd9Db3cC07b": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, "0x00990C0FfBB7eAB014351652aFB65AaE00db43A4": { "Name": "", @@ -170,8 +170,8 @@ "Version": "1.0.0" }, "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849": { - "Name": "", - "Version": "" + "Name": "GasZipFacet", + "Version": "2.0.0" }, "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7": { "Name": "AcrossFacetV3", @@ -182,15 +182,15 @@ "ERC20Proxy": "0x5741A7FfE7c39Ca175546a54985fA79211290b51", "Executor": "0x2dfaDAB8266483beD9Fd9A292Ce56596a2D1378D", "FeeCollector": "0xbD6C7B0d2f68c2b7805d88388319cfB6EcB50eA9", + "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3", "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", "Receiver": "0x050e198E36A73a1e32F15C3afC58C4506d82f657", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A", "RelayerCelerIM": "0x6a8b11bF29C0546991DEcD6E0Db8cC7Fda22bA97", - "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d", - "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3" + "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d" } } } \ No newline at end of file diff --git a/deployments/mainnet.json b/deployments/mainnet.json index 6cdca679..3caf68b7 100644 --- a/deployments/mainnet.json +++ b/deployments/mainnet.json @@ -58,8 +58,8 @@ "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61", "AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", - "AcrossFacetPackedV3": "0x20F3FFf5A89e988c4109A6e496a839480B1B558f", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "AcrossFacetPackedV3": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", "GasZipFacet": "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849", "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9" diff --git a/deployments/mode.diamond.json b/deployments/mode.diamond.json index fe73413a..5e804f9e 100644 --- a/deployments/mode.diamond.json +++ b/deployments/mode.diamond.json @@ -69,9 +69,9 @@ "Name": "GenericSwapFacetV3", "Version": "1.0.0" }, - "0x20F3FFf5A89e988c4109A6e496a839480B1B558f": { + "0x21a786957c69424A4353Afe743242Bd9Db3cC07b": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7": { "Name": "AcrossFacetV3", @@ -82,23 +82,23 @@ "Version": "1.0.0" }, "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849": { - "Name": "", - "Version": "" + "Name": "GasZipFacet", + "Version": "2.0.0" } }, "Periphery": { "ERC20Proxy": "0xA950Ac46b0b844c0564d18A54A9685e614B9086C", "Executor": "0x7078d1DE45C7D3e87f71D5DA663db2a8Ee1dfEbe", "FeeCollector": "0xF048e5816B0C7951AC179f656C5B86e5a79Bd7b5", - "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", + "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3", + "LiFiDEXAggregator": "0x78bF01555bCF05e6B1d4dad017dBD0A105652DC9", "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C", "Permit2Proxy": "", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", "Receiver": "0x0561fFe9855541C02D17951c93405A4407Df74BC", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", "ReceiverStargateV2": "", "RelayerCelerIM": "", - "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d", - "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3" + "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d" } } } \ No newline at end of file diff --git a/deployments/mode.json b/deployments/mode.json index 59a8bdc0..7c7bd104 100644 --- a/deployments/mode.json +++ b/deployments/mode.json @@ -27,8 +27,8 @@ "LiFiDEXAggregator": "0x78bF01555bCF05e6B1d4dad017dBD0A105652DC9", "EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61", "AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", - "AcrossFacetPackedV3": "0x20F3FFf5A89e988c4109A6e496a839480B1B558f", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "AcrossFacetPackedV3": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", "GasZipFacet": "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849", "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3" } \ No newline at end of file diff --git a/deployments/optimism.diamond.json b/deployments/optimism.diamond.json index b6c6a3dd..ffd2da75 100644 --- a/deployments/optimism.diamond.json +++ b/deployments/optimism.diamond.json @@ -133,9 +133,9 @@ "Name": "StargateFacetV2", "Version": "1.0.1" }, - "0x20F3FFf5A89e988c4109A6e496a839480B1B558f": { + "0x21a786957c69424A4353Afe743242Bd9Db3cC07b": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, "0x00990C0FfBB7eAB014351652aFB65AaE00db43A4": { "Name": "", @@ -146,8 +146,8 @@ "Version": "1.0.0" }, "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849": { - "Name": "", - "Version": "" + "Name": "GasZipFacet", + "Version": "2.0.0" }, "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7": { "Name": "AcrossFacetV3", @@ -158,16 +158,15 @@ "ERC20Proxy": "0x5741A7FfE7c39Ca175546a54985fA79211290b51", "Executor": "0x2dfaDAB8266483beD9Fd9A292Ce56596a2D1378D", "FeeCollector": "0xbD6C7B0d2f68c2b7805d88388319cfB6EcB50eA9", + "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3", "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9", - "Receiver": "0x050e198E36A73a1e32F15C3afC58C4506d82f657", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", "Receiver": "0x050e198E36A73a1e32F15C3afC58C4506d82f657", "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A", "RelayerCelerIM": "0x6a8b11bF29C0546991DEcD6E0Db8cC7Fda22bA97", - "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d", - "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3" + "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d" } } } \ No newline at end of file diff --git a/deployments/optimism.json b/deployments/optimism.json index 1e158644..f425971b 100644 --- a/deployments/optimism.json +++ b/deployments/optimism.json @@ -50,8 +50,8 @@ "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9", "EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61", "AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", - "AcrossFacetPackedV3": "0x20F3FFf5A89e988c4109A6e496a839480B1B558f", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "AcrossFacetPackedV3": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", "GasZipFacet": "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849", "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3" } \ No newline at end of file diff --git a/deployments/polygon.diamond.json b/deployments/polygon.diamond.json index 44626fb1..34437ad5 100644 --- a/deployments/polygon.diamond.json +++ b/deployments/polygon.diamond.json @@ -133,11 +133,11 @@ "Name": "StargateFacetV2", "Version": "1.0.1" }, - "0x20F3FFf5A89e988c4109A6e496a839480B1B558f": { + "0x21a786957c69424A4353Afe743242Bd9Db3cC07b": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, - "0x00990C0FfBB7eAB014351652aFB65AaE00db43A4": { + "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7": { "Name": "", "Version": "" }, @@ -148,10 +148,6 @@ "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849": { "Name": "GasZipFacet", "Version": "2.0.0" - }, - "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7": { - "Name": "AcrossFacetV3", - "Version": "1.0.0" } }, "Periphery": { @@ -162,7 +158,7 @@ "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", "Receiver": "0x050e198E36A73a1e32F15C3afC58C4506d82f657", "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A", "RelayerCelerIM": "0x6a8b11bF29C0546991DEcD6E0Db8cC7Fda22bA97", diff --git a/deployments/polygon.json b/deployments/polygon.json index d9b402b6..cf826115 100644 --- a/deployments/polygon.json +++ b/deployments/polygon.json @@ -52,9 +52,9 @@ "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A", "LiFiDEXAggregator": "0x6140b987d6B51Fd75b66C3B07733Beb5167c42fc", "EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61", - "AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", - "AcrossFacetPackedV3": "0x20F3FFf5A89e988c4109A6e496a839480B1B558f", + "AcrossFacetV3": "0xAd99305a4277B417d1711CB358Dcf124181Ec3C3", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "AcrossFacetPackedV3": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", "GasZipFacet": "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849", "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3", "Permit2Proxy": "0x6307119078556Fc8aD77781DFC67df20d75FB4f9" diff --git a/deployments/polygon.staging.json b/deployments/polygon.staging.json index b5a516e9..7f01b447 100644 --- a/deployments/polygon.staging.json +++ b/deployments/polygon.staging.json @@ -46,7 +46,9 @@ "CelerCircleBridgeFacet": "0x371E073f6A09DCBEE1D2Ac56E940F878a0Ba9DAE", "HopFacetOptimized": "0xf82135385765f1324257ffF74489F16382EBBb8A", "SymbiosisFacet": "0x21571D628B0bCBeb954D5933A604eCac35bAF2c7", - "AcrossFacetV3": "0xe2e5428F972d9C0a5Ba433e0c402752b472dB248", + "AcrossFacetV3": "0xAd99305a4277B417d1711CB358Dcf124181Ec3C3", + "AcrossFacetPackedV3": "0x21767081Ff52CE5563A29f27149D01C7127775A2", + "ReceiverAcrossV3": "0xe4F3DEF14D61e47c696374453CD64d438FD277F8", "RelayFacet": "0x3cf7dE0e31e13C93c8Aada774ADF1C7eD58157f5", "Permit2Proxy": "0x6FC01BC9Ff6Cdab694Ec8Ca41B21a2F04C8c37E5" } \ No newline at end of file diff --git a/deployments/scroll.diamond.json b/deployments/scroll.diamond.json index 79f7c923..3fe6a978 100644 --- a/deployments/scroll.diamond.json +++ b/deployments/scroll.diamond.json @@ -81,9 +81,9 @@ "Name": "AcrossFacet", "Version": "2.0.0" }, - "0x20F3FFf5A89e988c4109A6e496a839480B1B558f": { + "0x21a786957c69424A4353Afe743242Bd9Db3cC07b": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, "0x00990C0FfBB7eAB014351652aFB65AaE00db43A4": { "Name": "", @@ -94,8 +94,8 @@ "Version": "1.0.0" }, "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849": { - "Name": "", - "Version": "" + "Name": "GasZipFacet", + "Version": "2.0.0" }, "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7": { "Name": "AcrossFacetV3", @@ -106,15 +106,15 @@ "ERC20Proxy": "0xA950Ac46b0b844c0564d18A54A9685e614B9086C", "Executor": "0x7078d1DE45C7D3e87f71D5DA663db2a8Ee1dfEbe", "FeeCollector": "0xF048e5816B0C7951AC179f656C5B86e5a79Bd7b5", + "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3", "LiFiDEXAggregator": "0x78bF01555bCF05e6B1d4dad017dBD0A105652DC9", "LiFuelFeeCollector": "0xc02FFcdD914DbA646704439c6090BAbaD521d04C", "Permit2Proxy": "", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", "Receiver": "0x0561fFe9855541C02D17951c93405A4407Df74BC", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", "ReceiverStargateV2": "0x1493e7B8d4DfADe0a178dAD9335470337A3a219A", "RelayerCelerIM": "", - "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d", - "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3" + "TokenWrapper": "0x5215E9fd223BC909083fbdB2860213873046e45d" } } } \ No newline at end of file diff --git a/deployments/scroll.json b/deployments/scroll.json index 137126da..bb4d3958 100644 --- a/deployments/scroll.json +++ b/deployments/scroll.json @@ -31,8 +31,8 @@ "LiFiDEXAggregator": "0x78bF01555bCF05e6B1d4dad017dBD0A105652DC9", "EmergencyPauseFacet": "0x6F2baA7cd5F156CA1B132F7FF11E0fa2aD775F61", "AcrossFacetV3": "0x6e00e0a7685Ca22c288d56D9E7924746B5043Ee7", - "ReceiverAcrossV3": "0xB9CEc304899037E661F49DdFa7f64943b5920072", - "AcrossFacetPackedV3": "0x20F3FFf5A89e988c4109A6e496a839480B1B558f", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", + "AcrossFacetPackedV3": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", "GasZipFacet": "0xF5c923a087fb3c554579e2DD10AB6E37E0f6F849", "GasZipPeriphery": "0x9a21E33F1a78b17DAd32010CeDB9Fd2F071C17d3" } \ No newline at end of file diff --git a/deployments/worldchain.diamond.json b/deployments/worldchain.diamond.json index dbce21a6..1b377b4e 100644 --- a/deployments/worldchain.diamond.json +++ b/deployments/worldchain.diamond.json @@ -54,8 +54,8 @@ "Version": "1.0.1" }, "0xB5dD83183fD7CCF859b227CA83663a034d5B2f92": { - "Name": "AcrossFacetV3", - "Version": "1.0.0" + "Name": "", + "Version": "" }, "0x90ADbFc03002aaA3d9FEdf2517D593CfD93e6c57": { "Name": "AcrossFacetPackedV3", diff --git a/deployments/worldchain.json b/deployments/worldchain.json index e1b23bab..8e0311b6 100644 --- a/deployments/worldchain.json +++ b/deployments/worldchain.json @@ -13,8 +13,8 @@ "StandardizedCallFacet": "0xe6C6A35684308f2DaadbeeA50B62CFEaAFaa407E", "LiFiDiamond": "0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE", "EmergencyPauseFacet": "0xF6Eff8df65Fc4a4c1528761Aa727b5471956A844", - "AcrossFacetV3": "0xB5dD83183fD7CCF859b227CA83663a034d5B2f92", - "AcrossFacetPackedV3": "0x90ADbFc03002aaA3d9FEdf2517D593CfD93e6c57", + "AcrossFacetV3": "0xAd99305a4277B417d1711CB358Dcf124181Ec3C3", + "AcrossFacetPackedV3": "0x21a786957c69424A4353Afe743242Bd9Db3cC07b", "ERC20Proxy": "0x98750e70Cf1313D9702f0f57D399DD0bA05d16E0", "Executor": "0xd9318fFE1EbbfA71049A443e623Be566067C9D6B", "FeeCollector": "0x50D5a8aCFAe13Dceb217E9a071F6c6Bd5bDB4155", @@ -22,7 +22,7 @@ "LiFuelFeeCollector": "0x8f023b4193a6b18C227B4a755f8e28B3D30Ef9a1", "TokenWrapper": "0x603a538477d44064eA5A5d8C345b4Ff6fca1142a", "LiFiDEXAggregator": "0x2321F1a63A683a1F3634Dbe1CbA0d657D5F56d54", - "ReceiverAcrossV3": "0xD263a23453CB9A77860ed6393A2B9a55AF70EFAb", + "ReceiverAcrossV3": "0xca6e6B692F568055adA0bF72A06D1EBbC938Fb23", "GasZipFacet": "0xb40044Bf27c2448e05e1f34ED83Ca4A3DfA54D19", "GasZipPeriphery": "0x76aE215b11797b32397d878e6f3E65081ff58b13" } \ No newline at end of file diff --git a/deployments/zksync.diamond.json b/deployments/zksync.diamond.json index ae9fc63b..7b911856 100644 --- a/deployments/zksync.diamond.json +++ b/deployments/zksync.diamond.json @@ -65,9 +65,9 @@ "Name": "AcrossFacetV3", "Version": "1.0.0" }, - "0x9243578F60a2A3821642481b5851578cE92d9a78": { + "0x45C83B209878601d21604301dfE25bD6D0BBC218": { "Name": "AcrossFacetPackedV3", - "Version": "1.0.0" + "Version": "1.2.0" }, "0xcF8c70683D7c0E2a094348896A46407646b94859": { "Name": "EmergencyPauseFacet", @@ -86,7 +86,7 @@ "LiFiDEXAggregator": "0x1F683faf1E2a770aa75f7B2e92117A5c11183E9C", "LiFuelFeeCollector": "0xB87C536E048Cfc082187E559fCFeFc3f1c89aEc7", "Permit2Proxy": "0x6275f6631c955DC5dA9fBe8Dc7f24a3A5919443A", - "ReceiverAcrossV3": "0xFa94c1A99799B3cA89DE6cbB3ccCDEcf1da62aFE", + "ReceiverAcrossV3": "0x68cb042aD93608e819b699427726e5c5E1A5F2dC", "Receiver": "0xdeDB2DAe4a9BC63910a722a3b7DC930C7E6f6421", "ReceiverStargateV2": "", "RelayerCelerIM": "0xFf9565e1C4f01C368444D2bE4B9ef36ce7E95541", diff --git a/deployments/zksync.json b/deployments/zksync.json index 750531be..77781aad 100644 --- a/deployments/zksync.json +++ b/deployments/zksync.json @@ -21,8 +21,8 @@ "CBridgeFacetPacked": "0xCe81D9bB9D9605FFF296CCF8Af6b6B38f02Cf15d", "LiFiDEXAggregator": "0x1F683faf1E2a770aa75f7B2e92117A5c11183E9C", "AcrossFacetV3": "0x2e47355B70D6935C6A69d5F67e0aFe437791138e", - "ReceiverAcrossV3": "0xFa94c1A99799B3cA89DE6cbB3ccCDEcf1da62aFE", - "AcrossFacetPackedV3": "0x9243578F60a2A3821642481b5851578cE92d9a78", + "ReceiverAcrossV3": "0x68cb042aD93608e819b699427726e5c5E1A5F2dC", + "AcrossFacetPackedV3": "0x45C83B209878601d21604301dfE25bD6D0BBC218", "GasZipFacet": "0x313c27Aad40c7e0A0b923b539F05617D8114566D", "GasZipPeriphery": "0x4000f76450d9d40558fd60F66863F583B7A5BCCb", "Permit2Proxy": "0x6275f6631c955DC5dA9fBe8Dc7f24a3A5919443A" diff --git a/src/Facets/AcrossFacetPackedV3.sol b/src/Facets/AcrossFacetPackedV3.sol index 99eabff9..618f3d5c 100644 --- a/src/Facets/AcrossFacetPackedV3.sol +++ b/src/Facets/AcrossFacetPackedV3.sol @@ -11,7 +11,7 @@ import { LibAsset, IERC20 } from "../Libraries/LibAsset.sol"; /// @title AcrossFacetPackedV3 /// @author LI.FI (https://li.fi) /// @notice Provides functionality for bridging through Across in a gas-optimized way -/// @custom:version 1.0.0 +/// @custom:version 1.2.0 contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { using SafeTransferLib for ERC20; @@ -37,6 +37,7 @@ contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { struct PackedParameters { bytes32 transactionId; address receiver; + address depositor; uint64 destinationChainId; address receivingAssetId; uint256 outputAmount; @@ -81,22 +82,34 @@ contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { } /// @notice Bridges native tokens via Across (packed implementation) - /// No params, all data will be extracted from manually encoded callData + /// @dev Calldata mapping: + /// [0:4] - function selector + /// [4:12] - transactionId + /// [12:32] - receiver + /// [32:52] - depositor + /// [52:56] - destinationChainId + /// [56:76] - receivingAssetId + /// [76:108] - outputAmount + /// [108:128] - exclusiveRelayer + /// [128:132] - quoteTimestamp + /// [132:136] - fillDeadline + /// [136:140] - exclusivityDeadline + /// [140:] - message function startBridgeTokensViaAcrossV3NativePacked() external payable { // call Across spoke pool to bridge assets spokePool.depositV3{ value: msg.value }( - msg.sender, // depositor + address(bytes20(msg.data[32:52])), // depositor address(bytes20(msg.data[12:32])), // recipient wrappedNative, // inputToken - address(bytes20(msg.data[36:56])), // outputToken + address(bytes20(msg.data[56:76])), // outputToken msg.value, // inputAmount - uint256(bytes32(msg.data[56:88])), // outputAmount - uint64(uint32(bytes4(msg.data[32:36]))), // destinationChainId - address(bytes20(msg.data[88:108])), // exclusiveRelayer - uint32(bytes4(msg.data[108:112])), // quoteTimestamp - uint32(bytes4(msg.data[112:116])), // fillDeadline - uint32(bytes4(msg.data[116:120])), // exclusivityDeadline - msg.data[120:msg.data.length] + uint256(bytes32(msg.data[76:108])), // outputAmount + uint64(uint32(bytes4(msg.data[52:56]))), // destinationChainId + address(bytes20(msg.data[108:128])), // exclusiveRelayer + uint32(bytes4(msg.data[128:132])), // quoteTimestamp + uint32(bytes4(msg.data[132:136])), // fillDeadline + uint32(bytes4(msg.data[136:140])), // exclusivityDeadline + msg.data[140:msg.data.length] ); emit LiFiAcrossTransfer(bytes8(msg.data[4:12])); @@ -109,7 +122,7 @@ contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { ) external payable { // call Across spoke pool to bridge assets spokePool.depositV3{ value: msg.value }( - msg.sender, // depositor + _parameters.depositor, // depositor _parameters.receiver, wrappedNative, // inputToken _parameters.receivingAssetId, // outputToken @@ -127,32 +140,44 @@ contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { } /// @notice Bridges ERC20 tokens via Across (packed implementation) - /// No params, all data will be extracted from manually encoded callData + /// @dev Calldata mapping: + /// [0:4] - function selector + /// [4:12] - transactionId + /// [12:32] - receiver + /// [32:52] - depositor + /// [52:72] - sendingAssetId + /// [72:88] - inputAmount + /// [88:92] - destinationChainId + /// [92:112] - receivingAssetId + /// [112:144] - outputAmount + /// [144:164] - exclusiveRelayer + /// [164:168] - quoteTimestamp + /// [168:172] - fillDeadline + /// [172:176] - exclusivityDeadline + /// [176:] - message function startBridgeTokensViaAcrossV3ERC20Packed() external { - address sendingAssetId = address(bytes20(msg.data[32:52])); - uint256 inputAmount = uint256(uint128(bytes16(msg.data[52:68]))); + address sendingAssetId = address(bytes20(msg.data[52:72])); + uint256 inputAmount = uint256(uint128(bytes16(msg.data[72:88]))); - // Deposit assets ERC20(sendingAssetId).safeTransferFrom( msg.sender, address(this), inputAmount ); - // call Across SpokePool spokePool.depositV3( - msg.sender, // depositor + address(bytes20(msg.data[32:52])), // depositor address(bytes20(msg.data[12:32])), // recipient sendingAssetId, // inputToken - address(bytes20(msg.data[72:92])), // outputToken + address(bytes20(msg.data[92:112])), // outputToken inputAmount, // inputAmount - uint256(bytes32(msg.data[92:124])), // outputAmount - uint64(uint32(bytes4(msg.data[68:72]))), // destinationChainId - address(bytes20(msg.data[124:144])), // exclusiveRelayer - uint32(bytes4(msg.data[144:148])), // quoteTimestamp - uint32(bytes4(msg.data[148:152])), // fillDeadline - uint32(bytes4(msg.data[152:156])), // exclusivityDeadline - msg.data[156:msg.data.length] + uint256(bytes32(msg.data[112:144])), // outputAmount + uint64(uint32(bytes4(msg.data[88:92]))), // destinationChainId + address(bytes20(msg.data[144:164])), // exclusiveRelayer + uint32(bytes4(msg.data[164:168])), // quoteTimestamp + uint32(bytes4(msg.data[168:172])), // fillDeadline + uint32(bytes4(msg.data[172:176])), // exclusivityDeadline + msg.data[176:msg.data.length] ); emit LiFiAcrossTransfer(bytes8(msg.data[4:12])); @@ -176,7 +201,7 @@ contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { // call Across SpokePool spokePool.depositV3( - msg.sender, // depositor + _parameters.depositor, // depositor _parameters.receiver, sendingAssetId, // inputToken _parameters.receivingAssetId, // outputToken @@ -212,6 +237,7 @@ contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { .selector, bytes8(_parameters.transactionId), bytes20(_parameters.receiver), + bytes20(_parameters.depositor), bytes4(uint32(_parameters.destinationChainId)), bytes20(_parameters.receivingAssetId), bytes32(_parameters.outputAmount), @@ -244,24 +270,33 @@ contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { "inputAmount value passed too big to fit in uint128" ); - return - bytes.concat( - AcrossFacetPackedV3 - .startBridgeTokensViaAcrossV3ERC20Packed - .selector, - bytes8(_parameters.transactionId), - bytes20(_parameters.receiver), - bytes20(sendingAssetId), - bytes16(uint128(inputAmount)), - bytes4(uint32(_parameters.destinationChainId)), - bytes20(_parameters.receivingAssetId), - bytes32(_parameters.outputAmount), - bytes20(_parameters.exclusiveRelayer), - bytes4(_parameters.quoteTimestamp), - bytes4(_parameters.fillDeadline), - bytes4(_parameters.exclusivityDeadline), - _parameters.message - ); + // Split the concatenation into parts to avoid "stack too deep" errors + bytes memory part1 = bytes.concat( + AcrossFacetPackedV3 + .startBridgeTokensViaAcrossV3ERC20Packed + .selector, + bytes8(_parameters.transactionId), + bytes20(_parameters.receiver), + bytes20(_parameters.depositor), + bytes20(sendingAssetId) + ); + + bytes memory part2 = bytes.concat( + bytes16(uint128(inputAmount)), + bytes4(uint32(_parameters.destinationChainId)), + bytes20(_parameters.receivingAssetId), + bytes32(_parameters.outputAmount) + ); + + bytes memory part3 = bytes.concat( + bytes20(_parameters.exclusiveRelayer), + bytes4(_parameters.quoteTimestamp), + bytes4(_parameters.fillDeadline), + bytes4(_parameters.exclusivityDeadline) + ); + + // Combine all parts with the message + return bytes.concat(part1, part2, part3, _parameters.message); } /// @notice Decodes calldata that is meant to be used for calling the native 'packed' function @@ -277,23 +312,24 @@ contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { ) { require( - data.length >= 120, - "invalid calldata (must have length >= 120)" + data.length >= 140, + "invalid calldata (must have length >= 140)" ); // extract bridgeData bridgeData.transactionId = bytes32(bytes8(data[4:12])); bridgeData.receiver = address(bytes20(data[12:32])); - bridgeData.destinationChainId = uint64(uint32(bytes4(data[32:36]))); + bridgeData.destinationChainId = uint64(uint32(bytes4(data[52:56]))); // extract acrossData - acrossData.receivingAssetId = address(bytes20(data[36:56])); - acrossData.outputAmount = uint256(bytes32(data[56:88])); - acrossData.exclusiveRelayer = address(bytes20(data[88:108])); - acrossData.quoteTimestamp = uint32(bytes4(data[108:112])); - acrossData.fillDeadline = uint32(bytes4(data[112:116])); - acrossData.exclusivityDeadline = uint32(bytes4(data[116:120])); - acrossData.message = data[120:]; + acrossData.refundAddress = address(bytes20(data[32:52])); // depositor + acrossData.receivingAssetId = address(bytes20(data[56:76])); + acrossData.outputAmount = uint256(bytes32(data[76:108])); + acrossData.exclusiveRelayer = address(bytes20(data[108:128])); + acrossData.quoteTimestamp = uint32(bytes4(data[128:132])); + acrossData.fillDeadline = uint32(bytes4(data[132:136])); + acrossData.exclusivityDeadline = uint32(bytes4(data[136:140])); + acrossData.message = data[140:]; return (bridgeData, acrossData); } @@ -311,25 +347,24 @@ contract AcrossFacetPackedV3 is ILiFi, TransferrableOwnership { ) { require( - data.length >= 156, - "invalid calldata (must have length > 156)" + data.length >= 176, + "invalid calldata (must have length >= 176)" ); - // extract bridgeData bridgeData.transactionId = bytes32(bytes8(data[4:12])); bridgeData.receiver = address(bytes20(data[12:32])); - bridgeData.sendingAssetId = address(bytes20(data[32:52])); - bridgeData.minAmount = uint256(uint128(bytes16(data[52:68]))); - bridgeData.destinationChainId = uint64(uint32(bytes4(data[68:72]))); - - // extract acrossData - acrossData.receivingAssetId = address(bytes20(data[72:92])); - acrossData.outputAmount = uint256(bytes32(data[92:124])); - acrossData.exclusiveRelayer = address(bytes20(data[124:144])); - acrossData.quoteTimestamp = uint32(bytes4(data[144:148])); - acrossData.fillDeadline = uint32(bytes4(data[148:152])); - acrossData.exclusivityDeadline = uint32(bytes4(data[152:156])); - acrossData.message = data[156:]; + acrossData.refundAddress = address(bytes20(data[32:52])); // depositor + bridgeData.sendingAssetId = address(bytes20(data[52:72])); + bridgeData.minAmount = uint256(uint128(bytes16(data[72:88]))); + bridgeData.destinationChainId = uint64(uint32(bytes4(data[88:92]))); + + acrossData.receivingAssetId = address(bytes20(data[92:112])); + acrossData.outputAmount = uint256(bytes32(data[112:144])); + acrossData.exclusiveRelayer = address(bytes20(data[144:164])); + acrossData.quoteTimestamp = uint32(bytes4(data[164:168])); + acrossData.fillDeadline = uint32(bytes4(data[168:172])); + acrossData.exclusivityDeadline = uint32(bytes4(data[172:176])); + acrossData.message = data[176:]; return (bridgeData, acrossData); } diff --git a/src/Periphery/ReceiverAcrossV3.sol b/src/Periphery/ReceiverAcrossV3.sol index b99565c3..42e3ef15 100644 --- a/src/Periphery/ReceiverAcrossV3.sol +++ b/src/Periphery/ReceiverAcrossV3.sol @@ -12,17 +12,13 @@ import { SafeTransferLib } from "solady/utils/SafeTransferLib.sol"; /// @title ReceiverAcrossV3 /// @author LI.FI (https://li.fi) /// @notice Arbitrary execution contract used for cross-chain swaps and message passing via AcrossV3 -/// @custom:version 1.0.0 +/// @custom:version 1.0.1 contract ReceiverAcrossV3 is ILiFi, TransferrableOwnership { using SafeTransferLib for address; - /// Error /// - error InsufficientGasLimit(); - /// Storage /// IExecutor public immutable executor; address public immutable spokepool; - uint256 public immutable recoverGas; /// Modifiers /// modifier onlySpokepool() { @@ -36,13 +32,11 @@ contract ReceiverAcrossV3 is ILiFi, TransferrableOwnership { constructor( address _owner, address _executor, - address _spokepool, - uint256 _recoverGas + address _spokepool ) TransferrableOwnership(_owner) { owner = _owner; executor = IExecutor(_executor); spokepool = _spokepool; - recoverGas = _recoverGas; } /// External Methods /// @@ -98,6 +92,7 @@ contract ReceiverAcrossV3 is ILiFi, TransferrableOwnership { /// Private Methods /// /// @notice Performs a swap before completing a cross-chain transaction + // @notice Since Across will always send wrappedNative to contract, we do not need a native handling here /// @param _transactionId the transaction id associated with the operation /// @param _swapData array of data needed for swaps /// @param assetId address of the token received from the source chain (not to be confused with StargateV2's assetIds which are uint16 values) @@ -110,34 +105,16 @@ contract ReceiverAcrossV3 is ILiFi, TransferrableOwnership { address payable receiver, uint256 amount ) private { - // since Across will always send wrappedNative to contract, we do not need a native handling here - uint256 cacheGasLeft = gasleft(); - - // We introduced this handling to prevent relayers from under-estimating our destination transactions and then - // running into out-of-gas errors which would cause the bridged tokens to be refunded to the receiver. This is - // an emergency behaviour but testing showed that this would happen very frequently. - // Reverting transactions that dont have enough gas helps to make sure that transactions will get correctly estimated - // by the relayers on source chain and thus improves the success rate of destination calls. - if (cacheGasLeft < recoverGas) { - // case A: not enough gas left to execute calls - // @dev: we removed the handling to send bridged funds to receiver in case of insufficient gas - // as it's better for AcrossV3 to revert these cases instead - revert InsufficientGasLimit(); - } - - // case 2b: enough gas left to execute calls assetId.safeApprove(address(executor), 0); assetId.safeApprove(address(executor), amount); try - executor.swapAndCompleteBridgeTokens{ - gas: cacheGasLeft - recoverGas - }(_transactionId, _swapData, assetId, receiver) + executor.swapAndCompleteBridgeTokens( + _transactionId, + _swapData, + assetId, + receiver + ) {} catch { - cacheGasLeft = gasleft(); - // if the only gas left here is the recoverGas then the swap must have failed due to out-of-gas error and in this - // case we want to revert (again, to force relayers to estimate our destination calls with sufficient gas limit) - if (cacheGasLeft <= recoverGas) revert InsufficientGasLimit(); - // send the bridged (and unswapped) funds to receiver address assetId.safeTransfer(receiver, amount); diff --git a/test/solidity/Facets/AcrossFacetPackedV3.t.sol b/test/solidity/Facets/AcrossFacetPackedV3.t.sol index c6ec0fc3..60f9ece3 100644 --- a/test/solidity/Facets/AcrossFacetPackedV3.t.sol +++ b/test/solidity/Facets/AcrossFacetPackedV3.t.sol @@ -127,7 +127,7 @@ contract AcrossFacetPackedV3Test is TestBase { uint32 quoteTimestamp = uint32(block.timestamp); validAcrossData = AcrossFacetV3.AcrossV3Data({ receiverAddress: USER_RECEIVER, - refundAddress: USER_REFUND, + refundAddress: USER_SENDER, // Set to match the depositor receivingAssetId: ADDRESS_USDC_POL, outputAmount: (defaultUSDCAmount * 9) / 10, exclusiveRelayer: address(0), @@ -147,7 +147,8 @@ contract AcrossFacetPackedV3Test is TestBase { quoteTimestamp: quoteTimestamp, fillDeadline: uint32(quoteTimestamp + 1000), exclusivityDeadline: 0, - message: "" + message: "", + depositor: USER_SENDER // Add depositor field }); vm.label(ACROSS_SPOKE_POOL, "SpokePool_PROX"); @@ -439,6 +440,7 @@ contract AcrossFacetPackedV3Test is TestBase { assertEq(original.outputAmount == decoded.outputAmount, true); assertEq(original.fillDeadline == decoded.fillDeadline, true); assertEq(original.quoteTimestamp == decoded.quoteTimestamp, true); + assertEq(original.refundAddress == decoded.refundAddress, true); // Add check for refundAddress/depositor assertEq( keccak256(abi.encode(original.message)) == keccak256(abi.encode(decoded.message)), diff --git a/test/solidity/Periphery/ReceiverAcrossV3.t.sol b/test/solidity/Periphery/ReceiverAcrossV3.t.sol index 36f35b21..d726c325 100644 --- a/test/solidity/Periphery/ReceiverAcrossV3.t.sol +++ b/test/solidity/Periphery/ReceiverAcrossV3.t.sol @@ -19,15 +19,11 @@ contract ReceiverAcrossV3Test is TestBase { bytes32 guid = bytes32("12345"); address receiverAddress = USER_RECEIVER; - uint256 public constant RECOVER_GAS_VALUE = 100000; address stargateRouter; Executor executor; ERC20Proxy erc20Proxy; event ExecutorSet(address indexed executor); - event RecoverGasSet(uint256 indexed recoverGas); - - error InsufficientGasLimit(); function setUp() public { customBlockNumberForForking = 20024274; @@ -38,8 +34,7 @@ contract ReceiverAcrossV3Test is TestBase { receiver = new ReceiverAcrossV3( address(this), address(executor), - SPOKEPOOL_MAINNET, - RECOVER_GAS_VALUE + SPOKEPOOL_MAINNET ); vm.label(address(receiver), "ReceiverAcrossV3"); vm.label(address(executor), "Executor"); @@ -50,13 +45,11 @@ contract ReceiverAcrossV3Test is TestBase { receiver = new ReceiverAcrossV3( address(this), address(executor), - SPOKEPOOL_MAINNET, - RECOVER_GAS_VALUE + SPOKEPOOL_MAINNET ); assertEq(address(receiver.executor()) == address(executor), true); assertEq(receiver.spokepool() == SPOKEPOOL_MAINNET, true); - assertEq(receiver.recoverGas() == RECOVER_GAS_VALUE, true); } function test_OwnerCanPullERC20Token() public { @@ -168,52 +161,6 @@ contract ReceiverAcrossV3Test is TestBase { assertTrue(dai.balanceOf(receiverAddress) == amountOutMin); } - function test_willRevertIfGasIsLessThanRecoverGas() public { - // mock-send bridged funds to receiver contract - deal(ADDRESS_USDC, address(receiver), defaultUSDCAmount); - - // encode payload with mock data like Stargate would according to: - (bytes memory payload, ) = _getValidAcrossV3Payload( - ADDRESS_USDC, - ADDRESS_DAI - ); - - // fake a sendCompose from USDC pool on ETH mainnet - vm.startPrank(SPOKEPOOL_MAINNET); - - vm.expectRevert(abi.encodeWithSelector(InsufficientGasLimit.selector)); - - receiver.handleV3AcrossMessage{ gas: RECOVER_GAS_VALUE }( - ADDRESS_USDC, - defaultUSDCAmount, - address(0), - payload - ); - } - - function test_willRevertIfDestCallRunsOutOfGas() public { - // mock-send bridged funds to receiver contract - deal(ADDRESS_USDC, address(receiver), defaultUSDCAmount); - - // encode payload with mock data like Stargate would according to: - (bytes memory payload, ) = _getValidAcrossV3Payload( - ADDRESS_USDC, - ADDRESS_DAI - ); - - // fake a sendCompose from USDC pool on ETH mainnet - vm.startPrank(SPOKEPOOL_MAINNET); - - vm.expectRevert(abi.encodeWithSelector(InsufficientGasLimit.selector)); - - receiver.handleV3AcrossMessage{ gas: RECOVER_GAS_VALUE + 150000 }( - ADDRESS_USDC, - defaultUSDCAmount, - address(0), - payload - ); - } - function test_willReturnFundsToUserIfDstCallFails() public { // mock-send bridged funds to receiver contract deal(ADDRESS_USDC, address(receiver), defaultUSDCAmount); @@ -248,7 +195,7 @@ contract ReceiverAcrossV3Test is TestBase { defaultUSDCAmount, block.timestamp ); - receiver.handleV3AcrossMessage{ gas: RECOVER_GAS_VALUE + 200000 }( + receiver.handleV3AcrossMessage( ADDRESS_USDC, defaultUSDCAmount, address(0),