Skip to content

Commit

Permalink
Merge pull request #2001 from api3dao/eip150-gas-estimate
Browse files Browse the repository at this point in the history
Adds an extra to the tx estimate to account for EIP-150 reserved gas
  • Loading branch information
acenolaza committed Jun 25, 2024
2 parents 475156d + 36d4325 commit 9e26a16
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 9 deletions.
5 changes: 5 additions & 0 deletions .changeset/blue-starfishes-help.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@api3/airnode-node": patch
---

Adds extra gas to estimate to account for EIP-150
12 changes: 6 additions & 6 deletions packages/airnode-node/src/evm/fulfillments/api-calls.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -656,8 +656,8 @@ describe('submitApiCall', () => {
{
level: 'INFO',
message: `Gas limit is set to ${
73804 + 290001
} (AirnodeRrp: ${73804} + Fulfillment Call: ${290001}) for Request:${apiCall.id}.`,
73804 + 290001 + 5774
} (AirnodeRrp: ${73804} + Fulfillment Call: ${290001} + EIP150: ${5774}) for Request:${apiCall.id}.`,
},
{ level: 'INFO', message: `Submitting API call fulfillment for Request:${apiCall.id}...` },
]);
Expand Down Expand Up @@ -686,7 +686,7 @@ describe('submitApiCall', () => {
apiCall.fulfillFunctionId,
'0x448b8ad3a330cf8f269f487881b59efff721b3dfa8e61f7c8fd2480389459ed3',
'0xda6d5aa27f48aa951ba401c8a779645f7d1fa4a46a5e99eb7da04b4e059449a834ca1058c85dfe8117305265228f8cf7ae64c3ef3c4d1cc191f77807227dac461b',
{ ...txOpts, gasLimit: ethers.BigNumber.from(73804 + 290001) }
{ ...txOpts, gasLimit: ethers.BigNumber.from(73804 + 290001 + 5774) }
);
expect(failMock).not.toHaveBeenCalled();
}
Expand Down Expand Up @@ -735,8 +735,8 @@ describe('submitApiCall', () => {
{
level: 'INFO',
message: `Gas limit is set to ${
73804 + 290001
} (AirnodeRrp: ${73804} + Fulfillment Call: ${290001}) for Request:${apiCall.id}.`,
73804 + 290001 + 5774
} (AirnodeRrp: ${73804} + Fulfillment Call: ${290001} + EIP150: ${5774}) for Request:${apiCall.id}.`,
},
{ level: 'INFO', message: `Submitting API call fulfillment for Request:${apiCall.id}...` },
{
Expand Down Expand Up @@ -768,7 +768,7 @@ describe('submitApiCall', () => {
apiCall.fulfillFunctionId,
'0x448b8ad3a330cf8f269f487881b59efff721b3dfa8e61f7c8fd2480389459ed3',
'0xda6d5aa27f48aa951ba401c8a779645f7d1fa4a46a5e99eb7da04b4e059449a834ca1058c85dfe8117305265228f8cf7ae64c3ef3c4d1cc191f77807227dac461b',
{ ...txOpts, gasLimit: ethers.BigNumber.from(73804 + 290001) }
{ ...txOpts, gasLimit: ethers.BigNumber.from(73804 + 290001 + 5774) }
);
expect(failMock).not.toHaveBeenCalled();
}
Expand Down
11 changes: 8 additions & 3 deletions packages/airnode-node/src/evm/fulfillments/api-calls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -316,15 +316,20 @@ export async function estimateGasAndSubmitFulfill(
}

const [airnodeRrpGasCost, fulfillmentCallGasCost] = estimateGasData;
const totalCost = airnodeRrpGasCost.add(fulfillmentCallGasCost);
const subTotalCost = airnodeRrpGasCost.add(fulfillmentCallGasCost);
// https://github.com/ethereum/EIPs/issues/114
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-150.md
const eip150GasReserve = subTotalCost.div(63);
const totalGasCost = subTotalCost.add(eip150GasReserve);

// If gas estimation is success, submit fulfillment without making static test call
const gasLimitNoticeLog = logger.pend(
'INFO',
`Gas limit is set to ${totalCost} (AirnodeRrp: ${airnodeRrpGasCost} + Fulfillment Call: ${fulfillmentCallGasCost}) for Request:${request.id}.`
`Gas limit is set to ${totalGasCost} (AirnodeRrp: ${airnodeRrpGasCost} + Fulfillment Call: ${fulfillmentCallGasCost} + EIP150: ${eip150GasReserve}) for Request:${request.id}.`
);
const [submitLogs, submitErr, submitData] = await submitFulfill(airnodeRrp, request, {
...options,
gasTarget: { ...options.gasTarget, gasLimit: totalCost },
gasTarget: { ...options.gasTarget, gasLimit: totalGasCost },
});
return [[...estimateGasLogs, gasLimitNoticeLog, ...submitLogs], submitErr, submitData];
}
Expand Down

0 comments on commit 9e26a16

Please sign in to comment.