You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ideally, this would ensure that if anything goes wrong, out of gas, the exception raised, incorrectly configured contract, return bombs, you name it, it would be caught and execution can continue. This would greatly simplify relayer design and relaying assumptions.
However, that is not the case. Solidity has an open issue on the topic: ethereum/solidity#13869 and it also contains a list of cases where Solidity doesn't catch an error.
One solution would be to change the implementation to:
But abi.decode can fail if the application doesn't return the expected format which is "[location, length, bytes]". In theory, it is possible to check that the returndata is longer than 64 bytes + length but this adds complexity and gas cost. It also won't protect against return bombs.
The text was updated successfully, but these errors were encountered:
Currently, when delivering a message to a destination application, the delivery is placed through a try-catch statement. It looks roughly like this:
Ideally, this would ensure that if anything goes wrong, out of gas, the exception raised, incorrectly configured contract, return bombs, you name it, it would be caught and execution can continue. This would greatly simplify relayer design and relaying assumptions.
However, that is not the case. Solidity has an open issue on the topic: ethereum/solidity#13869 and it also contains a list of cases where Solidity doesn't catch an error.
One solution would be to change the implementation to:
But
abi.decode
can fail if the application doesn't return the expected format which is "[location, length, bytes]". In theory, it is possible to check that the returndata is longer than 64 bytes + length but this adds complexity and gas cost. It also won't protect against return bombs.The text was updated successfully, but these errors were encountered: