From 6959670bb62453d2fd3547b95ad6d1a7639e3852 Mon Sep 17 00:00:00 2001 From: Ilya Petrusenko Date: Mon, 9 Sep 2024 12:35:39 +0200 Subject: [PATCH 1/3] add Maverick2 --- contracts/Maverick2.sol | 50 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 contracts/Maverick2.sol diff --git a/contracts/Maverick2.sol b/contracts/Maverick2.sol new file mode 100644 index 0000000..d8b863b --- /dev/null +++ b/contracts/Maverick2.sol @@ -0,0 +1,50 @@ +pragma solidity >=0.8.2 <0.9.0; + +interface Pool { + struct TickState { + uint128 reserveA; + uint128 reserveB; + uint128 totalSupply; + uint32[4] binIdsByTick; + } + struct State { + uint128 reserveA; + uint128 reserveB; + int64 lastTwaD8; + int64 lastLogPriceD8; + uint40 lastTimestamp; + int32 activeTick; + bool isLocked; + uint32 binCounter; + uint8 protocolFeeRatioD3; + } + + function getTick(int32 tick) external view returns (TickState memory _tick); + function getState() external view returns (State memory); +} + +contract Maverick2TickHelper { + function abs(int32 x) private pure returns (int32) { + return x >= 0 ? x : -x; + } + + struct Tick { + uint128 reserveA; + uint128 reserveB; + } + + function get(Pool pool, int32 xx) public view returns(Pool.State memory state, Tick[] memory reserves) { + state = pool.getState(); + int32 lower = abs(state.activeTick - xx); + int32 upper = abs(state.activeTick + xx); + int32 max = upper > lower ? upper : lower; + uint32 len = uint32(max*2+1); + reserves = new Tick[](len); + for (uint32 i = 0; i < len; i++) { + Pool.TickState memory tick = pool.getTick(int32(i)-max); + reserves[i].reserveA = tick.reserveA; + reserves[i].reserveB = tick.reserveB; + } + } +} + From ceb8907b0f83765173dc3dd6453394594c4efdb7 Mon Sep 17 00:00:00 2001 From: Ilya Petrusenko Date: Mon, 9 Sep 2024 13:35:00 +0200 Subject: [PATCH 2/3] fixed limits --- contracts/Maverick2.sol | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/contracts/Maverick2.sol b/contracts/Maverick2.sol index d8b863b..23e5d63 100644 --- a/contracts/Maverick2.sol +++ b/contracts/Maverick2.sol @@ -24,27 +24,19 @@ interface Pool { } contract Maverick2TickHelper { - function abs(int32 x) private pure returns (int32) { - return x >= 0 ? x : -x; - } - struct Tick { uint128 reserveA; uint128 reserveB; } - function get(Pool pool, int32 xx) public view returns(Pool.State memory state, Tick[] memory reserves) { + function get(Pool pool, int32 limit) public view returns(Pool.State memory state, Tick[] memory reserves) { state = pool.getState(); - int32 lower = abs(state.activeTick - xx); - int32 upper = abs(state.activeTick + xx); - int32 max = upper > lower ? upper : lower; - uint32 len = uint32(max*2+1); + uint32 len = uint32(limit*2+1); reserves = new Tick[](len); for (uint32 i = 0; i < len; i++) { - Pool.TickState memory tick = pool.getTick(int32(i)-max); + Pool.TickState memory tick = pool.getTick(state.activeTick-limit+int32(i)); reserves[i].reserveA = tick.reserveA; reserves[i].reserveB = tick.reserveB; } } } - From 574a9656dca5064de517f99c421cac74d55b651b Mon Sep 17 00:00:00 2001 From: Mikhail Melnik Date: Mon, 9 Sep 2024 15:32:00 +0300 Subject: [PATCH 3/3] add spdx --- contracts/Maverick2.sol | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts/Maverick2.sol b/contracts/Maverick2.sol index 23e5d63..144f671 100644 --- a/contracts/Maverick2.sol +++ b/contracts/Maverick2.sol @@ -1,4 +1,6 @@ -pragma solidity >=0.8.2 <0.9.0; +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.23; interface Pool { struct TickState {