Skip to content

Commit 300bf8c

Browse files
committed
Update various examples, BaseHook, Quoter and tests
1 parent ba45e0f commit 300bf8c

13 files changed

+48
-77
lines changed

contracts/BaseHook.sol

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,7 @@ abstract contract BaseHook is IHooks {
4949
Hooks.validateHookPermissions(_this, getHookPermissions());
5050
}
5151

52-
function lockAcquired(address, /*sender*/ bytes calldata data)
53-
external
54-
virtual
55-
poolManagerOnly
56-
returns (bytes memory)
57-
{
52+
function lockAcquired(bytes calldata data) external virtual poolManagerOnly returns (bytes memory) {
5853
(bool success, bytes memory returnData) = address(this).call(data);
5954
if (success) return returnData;
6055
if (returnData.length == 0) revert LockFailure();

contracts/hooks/examples/FullRange.sol

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,7 @@ contract FullRange is BaseHook, ILockCallback {
9898
beforeSwap: true,
9999
afterSwap: false,
100100
beforeDonate: false,
101-
afterDonate: false,
102-
noOp: false,
103-
accessLock: false
101+
afterDonate: false
104102
});
105103
}
106104

@@ -251,9 +249,7 @@ contract FullRange is BaseHook, ILockCallback {
251249
internal
252250
returns (BalanceDelta delta)
253251
{
254-
delta = abi.decode(
255-
poolManager.lock(address(this), abi.encode(CallbackData(msg.sender, key, params))), (BalanceDelta)
256-
);
252+
delta = abi.decode(poolManager.lock(abi.encode(CallbackData(msg.sender, key, params))), (BalanceDelta));
257253
}
258254

259255
function _settleDeltas(address sender, PoolKey memory key, BalanceDelta delta) internal {
@@ -301,14 +297,12 @@ contract FullRange is BaseHook, ILockCallback {
301297
pool.hasAccruedFees = false;
302298
}
303299

304-
function lockAcquired(address sender, bytes calldata rawData)
300+
function lockAcquired(bytes calldata rawData)
305301
external
306302
override(ILockCallback, BaseHook)
307303
poolManagerOnly
308304
returns (bytes memory)
309305
{
310-
// Now that manager can be called by EOAs with a lock target, it's necessary for lockAcquired to check the original sender if it wants to trust the data passed through.
311-
if (sender != address(this)) revert SenderMustBeHook();
312306
CallbackData memory data = abi.decode(rawData, (CallbackData));
313307
BalanceDelta delta;
314308

contracts/hooks/examples/GeomeanOracle.sol

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@ contract GeomeanOracle is BaseHook {
7171
beforeSwap: true,
7272
afterSwap: false,
7373
beforeDonate: false,
74-
afterDonate: false,
75-
noOp: false,
76-
accessLock: false
74+
afterDonate: false
7775
});
7876
}
7977

contracts/hooks/examples/LimitOrder.sol

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,7 @@ contract LimitOrder is BaseHook {
8484
beforeSwap: false,
8585
afterSwap: true,
8686
beforeDonate: false,
87-
afterDonate: false,
88-
noOp: false,
89-
accessLock: false
87+
afterDonate: false
9088
});
9189
}
9290

@@ -160,7 +158,6 @@ contract LimitOrder is BaseHook {
160158

161159
(uint256 amount0, uint256 amount1) = abi.decode(
162160
poolManager.lock(
163-
address(this),
164161
abi.encodeCall(this.lockAcquiredFill, (key, lower, -int256(uint256(epochInfo.liquidityTotal))))
165162
),
166163
(uint256, uint256)
@@ -224,7 +221,6 @@ contract LimitOrder is BaseHook {
224221
if (liquidity == 0) revert ZeroLiquidity();
225222

226223
poolManager.lock(
227-
address(this),
228224
abi.encodeCall(this.lockAcquiredPlace, (key, tickLower, zeroForOne, int256(uint256(liquidity)), msg.sender))
229225
);
230226

@@ -306,7 +302,6 @@ contract LimitOrder is BaseHook {
306302
uint256 amount1Fee;
307303
(amount0, amount1, amount0Fee, amount1Fee) = abi.decode(
308304
poolManager.lock(
309-
address(this),
310305
abi.encodeCall(
311306
this.lockAcquiredKill,
312307
(key, tickLower, -int256(uint256(liquidity)), to, liquidity == epochInfo.liquidityTotal)
@@ -388,7 +383,6 @@ contract LimitOrder is BaseHook {
388383
epochInfo.liquidityTotal = liquidityTotal - liquidity;
389384

390385
poolManager.lock(
391-
address(this),
392386
abi.encodeCall(this.lockAcquiredWithdraw, (epochInfo.currency0, epochInfo.currency1, amount0, amount1, to))
393387
);
394388

contracts/hooks/examples/TWAMM.sol

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@ contract TWAMM is BaseHook, ITWAMM {
7171
beforeSwap: true,
7272
afterSwap: false,
7373
beforeDonate: false,
74-
afterDonate: false,
75-
noOp: false,
76-
accessLock: false
74+
afterDonate: false
7775
});
7876
}
7977

@@ -144,9 +142,7 @@ contract TWAMM is BaseHook, ITWAMM {
144142
);
145143

146144
if (sqrtPriceLimitX96 != 0 && sqrtPriceLimitX96 != sqrtPriceX96) {
147-
poolManager.lock(
148-
address(this), abi.encode(key, IPoolManager.SwapParams(zeroForOne, type(int256).max, sqrtPriceLimitX96))
149-
);
145+
poolManager.lock(abi.encode(key, IPoolManager.SwapParams(zeroForOne, type(int256).max, sqrtPriceLimitX96)));
150146
}
151147
}
152148

contracts/hooks/examples/VolatilityOracle.sol

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ contract VolatilityOracle is BaseHook, IDynamicFeeManager {
4141
beforeSwap: false,
4242
afterSwap: false,
4343
beforeDonate: false,
44-
afterDonate: false,
45-
noOp: false,
46-
accessLock: false
44+
afterDonate: false
4745
});
4846
}
4947

contracts/lens/Quoter.sol

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ contract Quoter is IQuoter, ILockCallback {
6262
override
6363
returns (int128[] memory deltaAmounts, uint160 sqrtPriceX96After, uint32 initializedTicksLoaded)
6464
{
65-
try manager.lock(address(this), abi.encodeWithSelector(this._quoteExactInputSingle.selector, params)) {}
65+
try manager.lock(abi.encodeWithSelector(this._quoteExactInputSingle.selector, params)) {}
6666
catch (bytes memory reason) {
6767
return _handleRevertSingle(reason);
6868
}
@@ -77,7 +77,7 @@ contract Quoter is IQuoter, ILockCallback {
7777
uint32[] memory initializedTicksLoadedList
7878
)
7979
{
80-
try manager.lock(address(this), abi.encodeWithSelector(this._quoteExactInput.selector, params)) {}
80+
try manager.lock(abi.encodeWithSelector(this._quoteExactInput.selector, params)) {}
8181
catch (bytes memory reason) {
8282
return _handleRevert(reason);
8383
}
@@ -89,7 +89,7 @@ contract Quoter is IQuoter, ILockCallback {
8989
override
9090
returns (int128[] memory deltaAmounts, uint160 sqrtPriceX96After, uint32 initializedTicksLoaded)
9191
{
92-
try manager.lock(address(this), abi.encodeWithSelector(this._quoteExactOutputSingle.selector, params)) {}
92+
try manager.lock(abi.encodeWithSelector(this._quoteExactOutputSingle.selector, params)) {}
9393
catch (bytes memory reason) {
9494
if (params.sqrtPriceLimitX96 == 0) delete amountOutCached;
9595
return _handleRevertSingle(reason);
@@ -106,20 +106,17 @@ contract Quoter is IQuoter, ILockCallback {
106106
uint32[] memory initializedTicksLoadedList
107107
)
108108
{
109-
try manager.lock(address(this), abi.encodeWithSelector(this._quoteExactOutput.selector, params)) {}
109+
try manager.lock(abi.encodeWithSelector(this._quoteExactOutput.selector, params)) {}
110110
catch (bytes memory reason) {
111111
return _handleRevert(reason);
112112
}
113113
}
114114

115115
/// @inheritdoc ILockCallback
116-
function lockAcquired(address lockCaller, bytes calldata data) external returns (bytes memory) {
116+
function lockAcquired(bytes calldata data) external returns (bytes memory) {
117117
if (msg.sender != address(manager)) {
118118
revert InvalidLockAcquiredSender();
119119
}
120-
if (lockCaller != address(this)) {
121-
revert InvalidLockCaller();
122-
}
123120

124121
(bool success, bytes memory returnData) = address(this).call(data);
125122
if (success) return returnData;

test/FullRange.t.sol

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
127127
emit Initialize(id, testKey.currency0, testKey.currency1, testKey.fee, testKey.tickSpacing, testKey.hooks);
128128

129129
snapStart("FullRangeInitialize");
130-
initializeRouter.initialize(testKey, SQRT_RATIO_1_1, ZERO_BYTES);
130+
manager.initialize(testKey, SQRT_RATIO_1_1, ZERO_BYTES);
131131
snapEnd();
132132

133133
(, address liquidityToken) = fullRange.poolInfo(id);
@@ -139,11 +139,11 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
139139
PoolKey memory wrongKey = PoolKey(key.currency0, key.currency1, 0, TICK_SPACING + 1, fullRange);
140140

141141
vm.expectRevert(FullRange.TickSpacingNotDefault.selector);
142-
initializeRouter.initialize(wrongKey, SQRT_RATIO_1_1, ZERO_BYTES);
142+
manager.initialize(wrongKey, SQRT_RATIO_1_1, ZERO_BYTES);
143143
}
144144

145145
function testFullRange_addLiquidity_InitialAddSucceeds() public {
146-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
146+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
147147

148148
uint256 prevBalance0 = key.currency0.balanceOf(address(this));
149149
uint256 prevBalance1 = key.currency1.balanceOf(address(this));
@@ -169,7 +169,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
169169
}
170170

171171
function testFullRange_addLiquidity_InitialAddFuzz(uint256 amount) public {
172-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
172+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
173173
if (amount < LOCKED_LIQUIDITY) {
174174
vm.expectRevert(FullRange.LiquidityDoesntMeetMinimum.selector);
175175
fullRange.addLiquidity(
@@ -244,7 +244,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
244244
}
245245

246246
function testFullRange_addLiquidity_SwapThenAddSucceeds() public {
247-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
247+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
248248

249249
uint256 prevBalance0 = key.currency0.balanceOf(address(this));
250250
uint256 prevBalance1 = key.currency1.balanceOf(address(this));
@@ -298,7 +298,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
298298
}
299299

300300
function testFullRange_addLiquidity_FailsIfTooMuchSlippage() public {
301-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
301+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
302302

303303
fullRange.addLiquidity(
304304
FullRange.AddLiquidityParams(
@@ -323,7 +323,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
323323

324324
function testFullRange_swap_TwoSwaps() public {
325325
PoolKey memory testKey = key;
326-
initializeRouter.initialize(testKey, SQRT_RATIO_1_1, ZERO_BYTES);
326+
manager.initialize(testKey, SQRT_RATIO_1_1, ZERO_BYTES);
327327

328328
fullRange.addLiquidity(
329329
FullRange.AddLiquidityParams(
@@ -352,8 +352,8 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
352352
}
353353

354354
function testFullRange_swap_TwoPools() public {
355-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
356-
initializeRouter.initialize(key2, SQRT_RATIO_1_1, ZERO_BYTES);
355+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
356+
manager.initialize(key2, SQRT_RATIO_1_1, ZERO_BYTES);
357357

358358
fullRange.addLiquidity(
359359
FullRange.AddLiquidityParams(
@@ -408,7 +408,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
408408
}
409409

410410
function testFullRange_removeLiquidity_InitialRemoveFuzz(uint256 amount) public {
411-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
411+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
412412

413413
fullRange.addLiquidity(
414414
FullRange.AddLiquidityParams(
@@ -456,7 +456,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
456456
}
457457

458458
function testFullRange_removeLiquidity_FailsIfNoLiquidity() public {
459-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
459+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
460460

461461
(, address liquidityToken) = fullRange.poolInfo(id);
462462
UniswapV4ERC20(liquidityToken).approve(address(fullRange), type(uint256).max);
@@ -468,7 +468,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
468468
}
469469

470470
function testFullRange_removeLiquidity_SucceedsWithPartial() public {
471-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
471+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
472472

473473
uint256 prevBalance0 = key.currency0.balanceOfSelf();
474474
uint256 prevBalance1 = key.currency1.balanceOfSelf();
@@ -503,7 +503,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
503503
}
504504

505505
function testFullRange_removeLiquidity_DiffRatios() public {
506-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
506+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
507507

508508
uint256 prevBalance0 = key.currency0.balanceOf(address(this));
509509
uint256 prevBalance1 = key.currency1.balanceOf(address(this));
@@ -571,7 +571,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
571571
}
572572

573573
function testFullRange_removeLiquidity_RemoveAllFuzz(uint256 amount) public {
574-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
574+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
575575
(, address liquidityToken) = fullRange.poolInfo(id);
576576

577577
if (amount <= LOCKED_LIQUIDITY) {
@@ -626,7 +626,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
626626
vm.prank(address(2));
627627
token1.approve(address(fullRange), type(uint256).max);
628628

629-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
629+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
630630
(, address liquidityToken) = fullRange.poolInfo(id);
631631

632632
// Test contract adds liquidity
@@ -704,7 +704,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
704704
}
705705

706706
function testFullRange_removeLiquidity_SwapRemoveAllFuzz(uint256 amount) public {
707-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
707+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
708708
(, address liquidityToken) = fullRange.poolInfo(id);
709709

710710
if (amount <= LOCKED_LIQUIDITY) {
@@ -753,7 +753,7 @@ contract TestFullRange is Test, Deployers, GasSnapshot {
753753
}
754754

755755
function testFullRange_BeforeModifyPositionFailsWithWrongMsgSender() public {
756-
initializeRouter.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
756+
manager.initialize(key, SQRT_RATIO_1_1, ZERO_BYTES);
757757

758758
vm.expectRevert(FullRange.SenderMustBeHook.selector);
759759
modifyLiquidityRouter.modifyLiquidity(

0 commit comments

Comments
 (0)