Skip to content

Commit

Permalink
Merge branch 'main' of github.com:whetstoneresearch/doppler-smart-con…
Browse files Browse the repository at this point in the history
…tracts into natspec
  • Loading branch information
kinrezC committed Oct 24, 2024
2 parents e9fcc44 + 8158fe5 commit 870af0a
Show file tree
Hide file tree
Showing 12 changed files with 756 additions and 630 deletions.
31 changes: 27 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,18 +42,41 @@ jobs:
forge test -vvv --via-ir
id: test0

- name: Run forge tests isToken0 (true) fee (300) protocolFee (0)
- name: Run forge tests isToken0 (true) fee (30) protocolFee (0)
run: |
export IS_TOKEN_0=TRUE
export FEE=300
export FEE=30
forge test -vvv --via-ir
id: test1

- name: Run forge tests isToken0 (true) fee (300) protocolFee (50)
- name: Run forge tests isToken0 (true) fee (30) protocolFee (50)
run: |
export IS_TOKEN_0=TRUE
export FEE=300
export FEE=30
export PROTOCOL_FEE=50
forge test -vvv --via-ir
id: test2

- name: Run forge tests with usingEth (true)
run: |
export USING_ETH=TRUE
export FEE=0
export PROTOCOL_FEE=0
forge test -vvv --via-ir
id: test3

- name: Run forge tests with usingEth (true) fee (30) protocolFee (0)
run: |
export USING_ETH=TRUE
export FEE=30
export PROTOCOL_FEE=0
forge test -vvv --via-ir
id: test4

- name: Run forge tests with usingEth (true) fee (30) protocolFee (50)
run: |
export USING_ETH=TRUE
export FEE=30
export PROTOCOL_FEE=50
forge test -vvv --via-ir
id: test5
29 changes: 10 additions & 19 deletions src/Doppler.sol
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ contract Doppler is BaseHook {
bool immutable isToken0; // whether token0 is the token being sold (true) or token1 (false)
uint256 immutable numPDSlugs; // number of price discovery slugs

receive() external payable {}

constructor(
IPoolManager _poolManager,
PoolKey memory _poolKey,
Expand All @@ -96,11 +98,6 @@ contract Doppler is BaseHook {
if (_startingTick != _endingTick) {
if (_isToken0 && _startingTick <= _endingTick) revert InvalidTickRange();
if (!_isToken0 && _startingTick >= _endingTick) revert InvalidTickRange();

int24 totalTickDelta = _isToken0 ? _startingTick - _endingTick : _endingTick - _startingTick;
int256 totalEpochs = int256((_endingTime - _startingTime) / _epochLength);
// DA worst case is starting tick - ending tick
if (_gamma * totalEpochs != totalTickDelta) revert InvalidGamma();
}
// Enforce maximum tick spacing
if (_poolKey.tickSpacing > MAX_TICK_SPACING) revert InvalidTickSpacing();
Expand Down Expand Up @@ -223,8 +220,6 @@ contract Doppler is BaseHook {
for (uint256 i; i < numPDSlugs + 1; ++i) {
delete positions[bytes32(uint256(2 + i))];
}
} else {
revert InvalidSwapAfterMaturitySufficientProceeds();
}
}

Expand Down Expand Up @@ -796,8 +791,8 @@ contract Doppler is BaseHook {
(BalanceDelta positionDeltas, BalanceDelta feesAccrued) = poolManager.modifyLiquidity(
key,
IPoolManager.ModifyLiquidityParams({
tickLower: lastEpochPositions[i].tickLower,
tickUpper: lastEpochPositions[i].tickUpper,
tickLower: isToken0 ? lastEpochPositions[i].tickLower : lastEpochPositions[i].tickUpper,
tickUpper: isToken0 ? lastEpochPositions[i].tickUpper : lastEpochPositions[i].tickLower,
liquidityDelta: -int128(lastEpochPositions[i].liquidity),
salt: bytes32(uint256(lastEpochPositions[i].salt))
}),
Expand Down Expand Up @@ -837,12 +832,8 @@ contract Doppler is BaseHook {
poolManager.modifyLiquidity(
key,
IPoolManager.ModifyLiquidityParams({
tickLower: newPositions[i].tickLower < newPositions[i].tickUpper
? newPositions[i].tickLower
: newPositions[i].tickUpper,
tickUpper: newPositions[i].tickUpper > newPositions[i].tickLower
? newPositions[i].tickUpper
: newPositions[i].tickLower,
tickLower: isToken0 ? newPositions[i].tickLower : newPositions[i].tickUpper,
tickUpper: isToken0 ? newPositions[i].tickUpper : newPositions[i].tickLower,
liquidityDelta: int128(newPositions[i].liquidity),
salt: bytes32(uint256(newPositions[i].salt))
}),
Expand Down Expand Up @@ -901,8 +892,8 @@ contract Doppler is BaseHook {
(BalanceDelta callerDelta,) = poolManager.modifyLiquidity(
key,
IPoolManager.ModifyLiquidityParams({
tickLower: upperSlug.tickLower,
tickUpper: upperSlug.tickUpper,
tickLower: isToken0 ? upperSlug.tickLower : upperSlug.tickUpper,
tickUpper: isToken0 ? upperSlug.tickUpper : upperSlug.tickLower,
liquidityDelta: int128(upperSlug.liquidity),
salt: UPPER_SLUG_SALT
}),
Expand All @@ -917,8 +908,8 @@ contract Doppler is BaseHook {
(BalanceDelta callerDelta,) = poolManager.modifyLiquidity(
key,
IPoolManager.ModifyLiquidityParams({
tickLower: priceDiscoverySlugs[i].tickLower,
tickUpper: priceDiscoverySlugs[i].tickUpper,
tickLower: isToken0 ? priceDiscoverySlugs[i].tickLower : priceDiscoverySlugs[i].tickUpper,
tickUpper: isToken0 ? priceDiscoverySlugs[i].tickUpper : priceDiscoverySlugs[i].tickLower,
liquidityDelta: int128(priceDiscoverySlugs[i].liquidity),
salt: bytes32(uint256(3 + i))
}),
Expand Down
Loading

0 comments on commit 870af0a

Please sign in to comment.