Hi,
I am using the Javascript ethers library for my application.
I sent a transfer transaction:
await this.httpProvider.send(“eth_sendTransaction”, [populatedTx]);
But I am receiving an error response:
Error: Failed to relay call. Results:
Relaying errors (1):
https://mainnet-binance.servim.io/gsn1 => local view call to ‘relayCall()’ reverted: view call to ‘relayCall’ reverted in client: invalid externalGasLimit externalGasLimit=62450116 initialGasLeft=49970714 perbyte=12117
Hello @DanielCatalani
Please join our Discord server - this forum is no longer maintained.
Regarding the error, it is hard to tell exactly what happened from the error message alone, but perbyte
is the estimation of how much gas each calldata byte
has consumed. The value of 12117
is way off, as this is supposed to be between 4
and 16
in the original EVM. I have not been following the Binance chain, so this may have changed there, but the fact that there are relayed transactions means that the issue is different.
Thank you for your response @forshtat.
I further found out this issue is coming from line 154 to 161 of the “RelayHub.sol” file,
of the “verifyGasAndDataLimits” method.
“”"
uint256 dataGasCost = calldataGasCost(msg.data.length);
uint256 externalCallDataCost = externalGasLimit - initialGasLeft - config.externalCallDataCostOverhead;
uint256 txDataCostPerByte = externalCallDataCost/msg.data.length;
require(txDataCostPerByte <= G_NONZERO, “invalid externalGasLimit”
.concat(" externalGasLimit=“, externalGasLimit)
.concat(” initialGasLeft=“, initialGasLeft)
.concat( " perbyte=”, txDataCostPerByte)
);
“”"
So possibly this error may be coming from the RelayHub contract rather than the Paymaster.
Concerning this comment:
"“The value of 12117
is way off, as this is supposed to be between 4
and 16
in the original EVM”
This constant “G_NONZERO” holds a value of 16.
My question is if there is still support for the BSC network in the OpenGSN, Because I found out in the new 3.x.x-beta networks there was no RelayHub contract in the BSC mainnet.