hyperlane-xyz / hyperlane-monorepo

The home for Hyperlane core contracts, sdk packages, and other infrastructure
https://hyperlane.xyz
Other
304 stars 335 forks source link

[AGENTS] Set `from` address when performing `eth_estimateGas` calls #4585

Open paulbalaji opened 2 hours ago

paulbalaji commented 2 hours ago

Problem

Is your feature request related to a problem? Please describe.

When performing an eth_estimateGas, some chains estimate as if the call is made from the zero address, if no from address is specified. On newer chains, there may not be any funds on the zero address which means that when trying to perform message deliveries we think that there are not enough funds to deliver a message, despite the relayer itself having more than enough.

Additional context

Example failure:

cast estimate "0xd9cbf08cac905f78d961a72716ef8eed3ab7e5eb" "0xf7e83aee0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000000004ca000000000000000000000000221fa9cbafcd6c1c3d206571cf4427703e023ffa000009a661aa6495bbc3b1df87c495d64897d0204b6065296d7acfef59b67370e7c0cbaa3ac81348a202517e1fc4909562e1aed18737f28ca5e170751188b153571ad82a06911a522857ee8b414822667ff5c5f17955e9aa0d80dd1592a6ae6085ea20c239447f8efd8847862526e55ec3729285a4d664ddb93ca4d59927ddb32d2956d6950eb296c4a2fe536e81b1ae61f712e06fb64f7635fc9267bff400414ff31d20e58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193443509f197af2d2ae3074ddc6fd014ef3b6aae1be73b10737a3b66cfe9d5ca9b77887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19684c17e8f78fccf63c5124af5b6542d1d665567c75d9aa46324c6749f546ac644e1024b1e744ad4788772038f47b60fa79a73ee3f4dfaaed52ff788365a0905516cefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0f9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a531caaf6997c0f94f63617ba74d6c005c54301bc714f0f5e46e1f272ed7b26d583490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99cc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8beccda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d22733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a0b46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa0c65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e2f4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd95a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3774df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee652cdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618db8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d0838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32293237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7358448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a9000009a9169a76484eb6027a3c77c8c03b0a2d9f89b18e69500a9fdbc74d4790a238161126e7c670b686affe3f0b251282137b264f803a1c9cd0e7309903b9ef82b420f41b49ca7f2965624435db21798caaf6e5f46c1f2c0955abc8f2c0b735575fddee786ec62d90ec437246e38891930c97a3a210f4d9c804f723218ae5e5c2e1db13d11c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005303000009b50000aef3000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000013fb000000000000000000000000a2cf52064c921c11adcd83588cbea08cc3bff5d848656c6c6f2100000000000000000000000000" --rpc-url https://rpc.testnet.citrea.xyz

Error:
server returned an error response: error code -32603: Revm error: Not enough funds for L1 fee: 247500000000

Example success if from address is set to relayer address:

cast estimate "0xd9cbf08cac905f78d961a72716ef8eed3ab7e5eb" "0xf7e83aee0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000000004ca000000000000000000000000221fa9cbafcd6c1c3d206571cf4427703e023ffa000009a661aa6495bbc3b1df87c495d64897d0204b6065296d7acfef59b67370e7c0cbaa3ac81348a202517e1fc4909562e1aed18737f28ca5e170751188b153571ad82a06911a522857ee8b414822667ff5c5f17955e9aa0d80dd1592a6ae6085ea20c239447f8efd8847862526e55ec3729285a4d664ddb93ca4d59927ddb32d2956d6950eb296c4a2fe536e81b1ae61f712e06fb64f7635fc9267bff400414ff31d20e58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193443509f197af2d2ae3074ddc6fd014ef3b6aae1be73b10737a3b66cfe9d5ca9b77887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19684c17e8f78fccf63c5124af5b6542d1d665567c75d9aa46324c6749f546ac644e1024b1e744ad4788772038f47b60fa79a73ee3f4dfaaed52ff788365a0905516cefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0f9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a531caaf6997c0f94f63617ba74d6c005c54301bc714f0f5e46e1f272ed7b26d583490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99cc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8beccda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d22733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a0b46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa0c65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e2f4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd95a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3774df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee652cdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618db8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d0838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32293237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7358448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a9000009a9169a76484eb6027a3c77c8c03b0a2d9f89b18e69500a9fdbc74d4790a238161126e7c670b686affe3f0b251282137b264f803a1c9cd0e7309903b9ef82b420f41b49ca7f2965624435db21798caaf6e5f46c1f2c0955abc8f2c0b735575fddee786ec62d90ec437246e38891930c97a3a210f4d9c804f723218ae5e5c2e1db13d11c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005303000009b50000aef3000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000013fb000000000000000000000000a2cf52064c921c11adcd83588cbea08cc3bff5d848656c6c6f2100000000000000000000000000" --rpc-url https://rpc.testnet.citrea.xyz --from 0x16626CD24Fd1F228a031e48B77602Ae25f8930dB

75794

Solution

Describe the solution you'd like

Set the from address to the agent's address when performing any eth_estimateGas call.

tkporter commented 2 hours ago

Anywhere in the agent codebase where we do EVM gas estimates would benefit from this too (e.g. in the validator for announcements etc)