I am trying to understand the revert opcode and how it works . I understood that it will stop the execution of current context and return 0 to the calling context. It seems it also takes in 2 arguments according to evm.codes. Can someone help me understand what the two arguments does?
1 Answer
offset
is the starting position of the desired return data in memory and size
is the size of the desired return data in memory. Offset
and size
are used to designate where the return data starts (offset) and ends (offset + size) in memory.
See: https://medium.com/@jtriley15/yul-vs-solidity-contract-comparison-2b6d9e9dc833
-
Thank you will check the article but I have a doubt. Why do we need to return a particular data from the memory? If it comes to revert then it is because there is some error in the smart contract and we have to return 0 only right? I know my question here is bit silly but would love to understand if there are any specific cases where returning data from the memory is useful? Commented Nov 6, 2022 at 7:10
-
if there is an error, 0 is returned on the stack and the returned data is served as an error message to the caller, and doing so, it will not consume all the remaining gas. See: eips.ethereum.org/EIPS/eip-140 Commented Nov 6, 2022 at 17:36