From d757ecc9e98b334349420598cbdbaaf26b024a20 Mon Sep 17 00:00:00 2001 From: LHerskind Date: Tue, 10 Jan 2023 11:49:20 +0000 Subject: [PATCH 1/2] fix: handle case on devnet where basefee is 0 --- src/aztec/DataProvider.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aztec/DataProvider.sol b/src/aztec/DataProvider.sol index 8e0c079ff..262a08655 100644 --- a/src/aztec/DataProvider.sol +++ b/src/aztec/DataProvider.sol @@ -226,7 +226,7 @@ contract DataProvider is Ownable { uint256 criteria = abi.decode(returnData, (uint256)); uint256 ethSub = SUBSIDY.getAccumulatedSubsidyAmount(vars.bridgeAddress, criteria); - return (criteria, ethSub, ethSub / block.basefee); + return (criteria, ethSub, block.basefee == 0 ? 0 : ethSub / block.basefee); } function _aztecAsset(uint256 _assetId) internal view returns (AztecTypes.AztecAsset memory) { From 4e7631ce3f441fb724f415470bd1b7035dbbed28 Mon Sep 17 00:00:00 2001 From: LHerskind Date: Tue, 10 Jan 2023 11:59:37 +0000 Subject: [PATCH 2/2] fix: cleanup + add a test --- src/aztec/DataProvider.sol | 3 ++- src/test/aztec/dataprovider/DataProvider.t.sol | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/aztec/DataProvider.sol b/src/aztec/DataProvider.sol index 262a08655..2e96e6012 100644 --- a/src/aztec/DataProvider.sol +++ b/src/aztec/DataProvider.sol @@ -225,8 +225,9 @@ contract DataProvider is Ownable { uint256 criteria = abi.decode(returnData, (uint256)); uint256 ethSub = SUBSIDY.getAccumulatedSubsidyAmount(vars.bridgeAddress, criteria); + uint256 gasCovered = block.basefee == 0 ? 0 : ethSub / block.basefee; - return (criteria, ethSub, block.basefee == 0 ? 0 : ethSub / block.basefee); + return (criteria, ethSub, gasCovered); } function _aztecAsset(uint256 _assetId) internal view returns (AztecTypes.AztecAsset memory) { diff --git a/src/test/aztec/dataprovider/DataProvider.t.sol b/src/test/aztec/dataprovider/DataProvider.t.sol index 07ddc8464..6d3407dea 100644 --- a/src/test/aztec/dataprovider/DataProvider.t.sol +++ b/src/test/aztec/dataprovider/DataProvider.t.sol @@ -238,4 +238,20 @@ contract DataProviderTest is BridgeTestBase { assertGe(subsidy, gasUnits * block.basefee, "Invalid gas units accrued"); assertEq(gasUnits, subsidy / block.basefee, "Invalid gas units accrued"); } + + function testZeroBaseFee() public { + AztecTypes.AztecAsset memory eth = ROLLUP_ENCODER.getRealAztecAsset(address(0)); + AztecTypes.AztecAsset memory virtualAsset = + AztecTypes.AztecAsset({id: 0, erc20Address: address(0), assetType: AztecTypes.AztecAssetType.VIRTUAL}); + + uint256 bridgeCallData = ROLLUP_ENCODER.encodeBridgeCallData(7, virtualAsset, eth, virtualAsset, eth, 0); + + vm.fee(0); + + (uint256 criteria, uint256 subsidy, uint256 gasUnits) = provider.getAccumulatedSubsidyAmount(bridgeCallData); + assertEq(criteria, 0, "Wrong criteria"); + assertEq(subsidy, 0, "No subsidy accrued"); + assertEq(subsidy, 0, "Invalid gas units accrued"); + assertEq(gasUnits, 0, "Invalid gas units accrued"); + } }