Commit Graph

240 Commits

Author SHA1 Message Date
Diana Carvalho
c963f3b2f6 fix: Use forceApprove instead of regular Approve
This is necessary for USDT (it was failing)

--- don't change below this line ---
ENG-4307 Took 29 minutes
2025-04-10 15:44:02 +01:00
Diana Carvalho
fb35a5305a feat: Support returning values from the callback
Rollback some of the Ekubo's Executor changes to a previous version to use the generic callback logic using transient storage

Took 1 hour 25 minutes


Took 13 seconds
2025-04-10 09:52:19 +01:00
Diana Carvalho
f91b101a94 fix: Prevent multiple callbacks
After a callback is performed, the executor address transient storage is set to 0 so that multiple callbacks can't be performed for the same swap

--- don't change below this line ---
ENG-4411 Took 22 minutes
2025-04-09 13:39:12 +01:00
Diana Carvalho
deb10b82de feat: Refactor callback for pancakeV3 and Ekubo to use transient storage
--- don't change below this line ---
ENG-4411 Took 1 hour 5 minutes

Took 1 minute
2025-04-09 13:07:02 +01:00
Diana Carvalho
af449562b0 feat: Refactor callback to use transient storage
With this, we don't need the univ3 specific method in the router contract. This should be flexible enough for most protocols that integrate

TODO: is this safe enough??

--- don't change below this line ---
ENG-4411 Took 1 hour 52 minutes

Took 4 minutes

Took 5 minutes
2025-04-09 13:05:53 +01:00
Diana Carvalho
913d677ffb feat: Support Curve ETH
Curve pools use a different address from ETH (native token)

- Pass Chain into the SwapEncoderBuilder and SwapEncoder
- Add native_token_curve_address and native_token_address to CurveSwapEncoder
- Added integration test for this curve case

--- don't change below this line ---
ENG-4306 Took 1 hour 4 minutes


Took 11 seconds
2025-04-08 09:30:29 +01:00
Diana Carvalho
9f2184258a feat: Refactor Curve Executor not to use the router
We don't need to use all the functionalities of the Curve Router, only the swap type 1 (exchange). By bypassing the router we can save gas on 2 token transfers and with smaller calldata
A nice side effect is that the executor is much more readable and understandable now

--- don't change below this line ---
ENG-4305 Took 2 hours 25 minutes


Took 12 seconds
2025-04-03 18:18:16 +01:00
Diana Carvalho
f468a7831a fix: Improve curve executor tests and docstrings
--- don't change below this line ---
ENG-4305 Took 34 minutes


Took 8 seconds
2025-04-03 18:17:45 +01:00
royvardhan
9e2a9f5329 fix: resolve pr comments
Took 2 seconds
2025-04-03 18:17:45 +01:00
royvardhan
07d6323316 chore: fmt 2025-04-03 18:17:45 +01:00
royvardhan
826eca4a80 refactor: move swap params from interface to executor, add needsApproval 2025-04-03 18:17:45 +01:00
royvardhan
3054ca042b chore: rename ethAddress to nativeToken, update tests 2025-04-03 18:17:45 +01:00
royvardhan
05ea2c7734 chore: cleanup 2025-04-03 18:17:45 +01:00
royvardhan
c3d36ae25f test: add curve swap tests with pools from indexer 2025-04-03 18:17:45 +01:00
royvardhan
93bdc86dc6 feat: allow executor to do native swaps, add diff pool type tests
Took 4 seconds
2025-04-03 18:17:45 +01:00
royvardhan
7cde5130d6 feat: add curve executor with router tests
Took 36 minutes


Took 2 minutes
2025-04-03 18:17:45 +01:00
TAMARA LIPOWSKI
9012d7b4d1 feat: deploy Ekubo gas optimizations
new executor and new router (since the executor is hardcoded for now).
2025-04-03 12:51:23 +02:00
die-herdplatte
5540503a59 forge fmt 2025-04-03 00:42:10 +07:00
die-herdplatte
4e34f45bf4 Remove balanceOf checks in EkuboExecutor & remove ICallback impl 2025-04-03 00:36:38 +07:00
TAMARA LIPOWSKI
e3d25fcd5e feat: Update ekubo router address
- Both during encoding and hardcoded in the TychoRouter.
2025-04-02 00:10:21 +02:00
die-herdplatte
9256bf8742 Remove Ekubo executor support for partial swaps
Partial swaps would likely run out-of-gas anyway and removing the support saves a bit more gas
2025-04-01 14:00:48 +07:00
TAMARA LIPOWSKI
75516122e1 fix: support payCallback method for Ekubo
- depending on the pool, either lock or payCallback may be called.
2025-03-31 21:01:36 +02:00
TAMARA LIPOWSKI
c0068d456b fix: Finalize ekubo executor address 2025-03-31 17:49:47 +02:00
TAMARA LIPOWSKI
c678f40057 fix: Take address for EkuboExecutor init
- To match the other executor inits and to not leak information about ICore into the deployment script.
- Also fix fork block of tests. This had been temporarily changed to test the Ekubo executor. For some reason, vm.rollFork is not working in this case. Skip the Ekubo integration test for now (we know it runs with the correct block, where the pool we call is actually already deployed)
2025-03-31 17:49:47 +02:00
TAMARA LIPOWSKI
b3078f9c7b feat: Support Ekubo callback in TychoRouter
- add integration test
- cannot directly call _handleCallback from the locked method of the tycho router because of bytes memory to bytes callback conversion
- Rename to EkuboPoolKey because of conflict with USV4 pool key

- Bonus: fix bug where input token to swap method must be ERC20 (we should also support ETH)
2025-03-31 17:49:45 +02:00
Tamara
414a9609ec Merge branch 'main' into router/tnl/ENG-4409-pancake-v3-callback 2025-03-31 17:44:27 +02:00
die-herdplatte
68a9198e9c forge fmt 2025-03-29 10:32:22 +01:00
die-herdplatte
95e1bf1290 Fix wrong argument order 2025-03-29 10:29:21 +01:00
die-herdplatte
9fc99caf74 forge fmt 2025-03-26 16:57:43 +01:00
die-herdplatte
3e2e9308d4 Fix slither lints 2025-03-26 16:48:17 +01:00
die-herdplatte
261e2b2091 Merge remote-tracking branch 'upstream/main' into ekubo 2025-03-26 08:25:37 +01:00
TAMARA LIPOWSKI
c361e1515d refactor: remove duplicate code
The callback verification was already implemented in _verifyPairAddress.
2025-03-25 17:50:25 +01:00
TAMARA LIPOWSKI
d582543057 feat: Pancakeswap V3 support 2025-03-25 17:50:25 +01:00
TAMARA LIPOWSKI
2a4ee88cad feat: Support Pancakeswap v3 on ethereum
- Needed to take pool code init hash as input param for executors
- Added tests for ethereum. Will test base on-chain.
- Important note: Pancakeswap uses their deployer instead of their factory (this is a different address) for target verification.
2025-03-20 12:40:03 -04:00
die-herdplatte
05d6286921 Merge remote-tracking branch 'origin/main' into ekubo 2025-03-20 09:59:19 +01:00
die-herdplatte
3c982c5824 Ekubo integration 2025-03-20 09:58:40 +01:00
TAMARA LIPOWSKI
0a8a34be03 feat: Support sushiswap v2 and pancakeswap v2 on ethereum
- Needed to take pool code init hash as input param for executors
- Added tests for ethereum. Will test base on-chain.
2025-03-19 14:27:34 -04:00
TAMARA LIPOWSKI
a75dfd02ab docs: Fix swap without permit2 doc
- We changed this to use a transferFrom
2025-03-16 00:18:37 -04:00
royvardhan
3a6e933ce9 test: fix test_split_input_cyclic_swap and testCyclicSplitSwapIntegration 2025-03-12 00:49:42 +05:30
royvardhan
79d6c020fa misc: fix _swapChecked for cyclic swap, update encoder swap path validation, add cyclic sequesntial swap integration test 2025-03-12 00:49:42 +05:30
royvardhan
91f36fe328 fix: amountConsumed check in _swapChecked for cyclic swap 2025-03-10 23:32:30 +05:30
royvardhan
bb10efc0cc docs: update docs at _swap and testSplitOutputCyclicSwap 2025-03-10 18:12:58 +05:30
royvardhan
4d67df4096 feat: add cyclicSwapAmountOut tracker in _swap, add split cylic tests 2025-03-10 18:12:58 +05:30
royvardhan
57acbd58c5 fix: remove amountIn addition to amountOut in _swap for cyclic swaps, add testCyclicSwapWithTwoPools test to verify 2025-03-10 18:12:58 +05:30
TAMARA LIPOWSKI
b74d4c9e25 chore: remove unnecessary min amount check, doc fix 2025-03-06 10:37:37 -05:00
Diana Carvalho
5c28d77f1d feat: Check min amount out is not zero
Update tests

--- don't change below this line ---
ENG-4286 Took 57 minutes


Took 20 seconds
2025-03-05 17:53:51 +00:00
Harsh Vardhan Roy
2086484898 docs: remove unnecessary comment from swap
Co-authored-by: Tamara <tamara@datarevenue.com>
2025-03-05 22:23:16 +05:30
royvardhan
f853739a3d feat: add transferFrom in swap and move core swap logic inside _swapChecked 2025-03-05 22:23:16 +05:30
royvardhan
a3bffd4f75 fix: add amountIn in error TychoRouter__AmountInDiffersFromConsumed 2025-03-05 00:45:22 +05:30
royvardhan
6f421eb374 fix: inequality check for amountConsumed and amountIn 2025-03-05 00:35:51 +05:30