Astar
Astar copied to clipboard
Ethereum - incorrect gas estimation for certain input
Overview
It has been observed that gas estimation will return incorrect value when provided with certain inputs.
Once transaction is submitted with the estimated value, it will fail with OutOfGas
error.
Details
- smart contract interface can be found here
- contract is deployed on
Astar Network
, on address0xc6bf0C5C78686f1D0E2E54b97D6de6e2cEFAe9fD
- at least 1 ASTR should be provided as value with the call
The function of interest is the following one:
/// Minted vNative assets such as vASTR, vGLMR, vMOVR
function mintVNativeAsset(
address receiver,
string memory remark
) external payable;
The received address isn't important, but depending on the string remark
value, the gas estimate will be correct or incorrect.
It's worth mentioning that remark
is only emitted as part of an event, and put inside another subcall's blob (precompile call to XCM transact), and has no effect on logic execution.
When Hello is used as remark
value, the gas estimate will be around 167k.
When Hell is used, the gas estimate will be around 180k.
For some reason, adding an 'o' will cause the estimate to drop significantly.
And if call is submitted, as mentioned before, it will fail with OutOfGas
error.
The following example can be replicated on any Astar node (current version is astar-80
) by using eth.gasEstimate
call.
One example of the data for the call:
-
Hello -
0x62c64fe10000000000000000000000004597c97a43dfbb4a398e2b16aa9ce61f90d801dd0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000548656c6c6f000000000000000000000000000000000000000000000000000000
-
Hell -
0x62c64fe10000000000000000000000004597c97a43dfbb4a398e2b16aa9ce61f90d801dd0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000448656c6c00000000000000000000000000000000000000000000000000000000