Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
id: build

- name: Run Forge tests
run: forge test --isolate -vvv
run: FOUNDRY_GAS_LIMIT=9223372036854775807 forge test --isolate -vvv
id: test
env:
FORGE_SNAPSHOT_CHECK: true
4 changes: 2 additions & 2 deletions script/deploy/DeployAuctionStateLens.s.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {IContinuousClearingAuction} from '../../../src/interfaces/IContinuousClearingAuction.sol';
import {AuctionStateLens} from '../../../src/lens/AuctionStateLens.sol';
import {IContinuousClearingAuction} from '../../src/interfaces/IContinuousClearingAuction.sol';
import {AuctionStateLens} from '../../src/lens/AuctionStateLens.sol';
import 'forge-std/Script.sol';
import 'forge-std/console2.sol';

Expand Down
10 changes: 7 additions & 3 deletions test/Auction.dos.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ contract AuctionDosTest is AuctionBaseTest {

// This test is quite slow so only fuzz 100 times. We hardcode most of the params for simplicity anyways
/// forge-config: default.isolate = true
/// forge-config: default.gas_limit = 18446744073709551615
/// forge-config: default.gas_limit = 9223372036854775807
/// forge-config: ci.isolate = true
/// forge-config: ci.gas_limit = 18446744073709551615
/// forge-config: ci.gas_limit = 9223372036854775807
/// forge-config: default.fuzz.runs = 100
/// forge-config: ci.fuzz.runs = 100
function test_forceIterateOverTicks_preventsDoS(FuzzDeploymentParams memory _deploymentParams)
Expand All @@ -46,6 +46,7 @@ contract AuctionDosTest is AuctionBaseTest {
_deploymentParams.auctionParams.endBlock = uint64(_deploymentParams.auctionParams.startBlock + 1e7);
_deploymentParams.auctionParams.claimBlock = uint64(_deploymentParams.auctionParams.endBlock + 1);
_deploymentParams.auctionParams.auctionStepsData = AuctionStepsBuilder.init().addStep(1, 1e7);
_deploymentParams.auctionParams.validationHook = address(0);

auction = new ContinuousClearingAuction(
address(token), _deploymentParams.totalSupply, _deploymentParams.auctionParams
Expand Down Expand Up @@ -75,7 +76,7 @@ contract AuctionDosTest is AuctionBaseTest {
uint128 bidAmount = uint128(FixedPointMathLib.fullMulDivUp(auction.totalSupply(), maxPrice, FixedPoint96.Q96));

// Move the auction up to the highest tick
auction.submitBid{value: bidAmount, gas: FUSAKA_TX_GAS_LIMIT}(maxPrice, bidAmount, alice, prevPrice, bytes(''));
auction.submitBid{value: bidAmount}(maxPrice, bidAmount, alice, prevPrice, bytes(''));

vm.roll(block.number + 1);
// This should revert due to OOG
Expand All @@ -88,6 +89,9 @@ contract AuctionDosTest is AuctionBaseTest {
emit ITickStorage.NextActiveTickUpdated(untilTickPrice);
auction.forceIterateOverTicks{gas: FUSAKA_TX_GAS_LIMIT}(untilTickPrice);

emit log_named_uint('gasleft', gasleft());
require(gasleft() > FUSAKA_TX_GAS_LIMIT, 'Gas left is not greater than FUSAKA_TX_GAS_LIMIT');

// Now you should be able to checkpoint
auction.checkpoint{gas: FUSAKA_TX_GAS_LIMIT}();
}
Expand Down