Commit Graph

1011 Commits

Author SHA1 Message Date
Tamara
27cebdb3e1 Merge pull request #160 from propeller-heads/router/tnl/ENG-4420-no-fee-taking
feat: No more fee taking
2025-04-23 12:31:40 +01:00
TAMARA LIPOWSKI
d3ff9fd0e2 fix: Fix integration tests with transfer in method support
- For now, hardcode them to TRANSFER on the rust encoder side. This will be fixed in an upcoming PR.
- Remove the split swap simple route integration test - seemed overkill since simple routes are tested in many other integration tests, the original rust test named doesn't exist anymore, and simple routes should anyway be passing through the single endpoint.
2025-04-23 12:31:40 +01:00
dianacarvalho1
5fe2c2715c Merge pull request #143 from propeller-heads/router/dc/ENG-4411-refactor-callback-transient-storage
feat: Refactor callback to use transient storage
2025-04-23 12:31:40 +01:00
TAMARA LIPOWSKI
6f2e5ac10e feat: No more fee taking
- This required an extra transfer into the router at the end of the swap sequence, costing an unnecessary 40k gas or more for certain protocols.
2025-04-23 12:31:40 +01:00
TAMARA LIPOWSKI
e3ac394d27 feat: Proper USV3Executor transfer decoding + tests
- Properly decode, update tests with proper decoding
- Added test case for each transfer method
- Also fully tested permit2 transferFrom and it works perfectly.

NOTE:
UniswapV3 doesn't support NONE as a transfer method.

TODO:
- Fix integration tests once encoding is implemented.
2025-04-23 12:31:40 +01:00
Diana Carvalho
26ec30852d fix: Fixes after merge with feature branch
Update some tests calldata

Took 9 minutes
2025-04-23 12:31:40 +01:00
TAMARA LIPOWSKI
30557e7e54 refactor: create Permit2TestHelper
- To avoid duplicating permit2 setup code for TychoRouter and executor tests.
2025-04-23 12:31:40 +01:00
TAMARA LIPOWSKI
ca1d474f08 feat: Proper USV2Executor transfer decoding + tests
- Properly decode, update tests with proper decoding
- Added test case for each transfer method
- Also fully tested permit2 transferFrom and it works perfectly.

TODO:
- Fix integration tests once encoding is implemented.
2025-04-23 12:31:40 +01:00
TAMARA LIPOWSKI
8969186654 feat: allow to pass msg.sender to USV3 callback
- So that we can possibly do a transferFrom
- This should still be safe since the user can't control what is passed here
2025-04-23 12:31:40 +01:00
TAMARA LIPOWSKI
389009901e feat: ExecutorTransferMethods in UniswapV3Executor 2025-04-23 12:31:40 +01:00
TAMARA LIPOWSKI
147ba68392 feat: ExecutorTransferMethods helper contract
- Also sketch its use in USV2 (missing proper decoding)
2025-04-23 12:31:40 +01:00
Diana Carvalho
b391c0e2f3 Merge branch 'refs/heads/feature/gas-optimization' into router/dc/ENG-4411-refactor-callback-transient-storage
# Conflicts:
#	foundry/test/TychoRouter.t.sol
#	src/encoding/evm/strategy_encoder/strategy_encoders.rs

Took 5 minutes

Took 35 seconds
2025-04-23 12:31:38 +01:00
Diana Carvalho
fff8ef0d87 fix: Fix after merge with main
Mostly had to delete some tests (because they were moved) and fix others

Took 17 minutes

Took 8 seconds

Took 17 seconds
2025-04-23 12:31:15 +01:00
Diana Carvalho
35441456ac Merge branch 'refs/heads/main' into feature/gas-optimization
# Conflicts:
#	foundry/test/TychoRouter.t.sol
#	src/encoding/evm/strategy_encoder/strategy_encoders.rs
#	src/encoding/evm/utils.rs

Took 3 minutes

Took 35 seconds
2025-04-23 12:30:46 +01:00
dianacarvalho1
86e6ca54af Merge pull request #156 from propeller-heads/encoding/dc/ENG-4332-mutiplex-strategy
feat: Select strategy in TychoRouterEncoder depending on the solution
2025-04-23 12:30:13 +01:00
dianacarvalho1
ae4dfa5775 Merge pull request #155 from propeller-heads/encoding/dc/ENG-4332-mutiplex-strategy
feat: Refactor TychoEncoder into two: TychoRouterEncoder and TychoExecutorEncoder
2025-04-23 12:30:13 +01:00
Diana Carvalho
f5e712e0ff feat(tycho-router-encoder): Select strategy depending on the solution
- The tycho router address default is set at the EncoderBuilder level (not inside the strategies)
- Rename TychoCoreChain to TychoCommonChain
- Only take TychoCommonChain as an argument at the outermost level: EncoderBuilder. Everywhere else we use the execution Chain right away

--- don't change below this line ---
ENG-4332 Took 1 hour 10 minutes
2025-04-23 12:30:13 +01:00
Tamara
db89a99826 Merge branch 'main' into feature/gas-optimization 2025-04-23 12:30:13 +01:00
Diana Carvalho
6fd0ab54c1 docs: Improve doc
--- don't change below this line ---
ENG-4306 Took 4 minutes
2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
56d3eee618 fix: No more EVMStrategyEncoder
bad merge
2025-04-23 12:30:13 +01:00
Diana Carvalho
8b4b79b353 feat: Refactor TychoEncoder
We have a trait TychoEncoder and then two implementations: TychoRouterEncoder and TychoExecutorEncoder.
This way we go a level above with the decision if it is a direct execution or if it should use the tycho router.

- Created two builders: one for each tycho encoder
- Delete ExecutorStrategyEncoder and move code straight into the TychoExecutorEncoder
- Add validate_solution to trait TychoEncoder
- Move group_swaps.rs a level up
- Update tests and usage cases

Doing this we get rid of all that weird stuff we were doing before

--- don't change below this line ---
ENG-4306 Took 2 hours 6 minutes


Took 12 seconds
2025-04-23 12:30:13 +01:00
Tamara
899f0efeff Merge pull request #154 from propeller-heads/encoding/dc/4318-single-strategy-integration-test
feat: Add SingleSwap integration test
2025-04-23 12:30:13 +01:00
Tamara
1d298a371d Merge pull request #132 from propeller-heads/encoding/tnl/ENG-4318-sequential-strategy
feat: SequentialSwapStrategyEncoder
2025-04-23 12:30:13 +01:00
Diana Carvalho
df1c05ea00 feat: Add SingleSwap integration test and fix bug in method signatures
--- don't change below this line ---
ENG-4306 Took 27 minutes


Took 15 seconds
2025-04-23 12:30:13 +01:00
dianacarvalho1
012b9f1508 Merge pull request #130 from propeller-heads/encoding/tnl/4318-single-strategy
feat: SingleSwapStrategyEncoder
2025-04-23 12:30:13 +01:00
Diana Carvalho
6e7bf3c019 feat: Add SequentialSwap integration test with regular approvals
Improve docstrings

--- don't change below this line ---
ENG-4306 Took 20 minutes
2025-04-23 12:30:13 +01:00
Diana Carvalho
6430c99d76 feat: Delete EVMStrategyEncoder (this is now unnecessary)
Moved ple_encode into utils.rs

--- don't change below this line ---
ENG-4306 Took 5 minutes
2025-04-23 12:30:13 +01:00
Diana Carvalho
2f81b167d4 fix: Fix executor address in test and remove duplicated test
--- don't change below this line ---
ENG-4306 Took 12 minutes


Took 18 seconds
2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
f12bebcdfb test: Fix executor address in swap test 2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
e77a7bc3e1 test: Fix duplicate test 2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
fcedd39f30 fix: Remove router_address from Solution object
after merge
2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
c67c9acac4 test: Sequential swap integration test
- And other small fixes after merge
2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
11a05e4f18 feat: SingleSwapStrategyEncoder
- Had to take the implementation of the swap header encoding out of the main EVMStrategyEncoder trait, since it will now be difference for single and split swap strategies.
- Integration tests will be added in separate task/PR.


Took 7 seconds
2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
0d8150e22f feat: sequential swap solution validation
- Basically reuse all methods of split swap validation, minus those specific to splits.
2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
5d586c25e3 feat: SingleSwapStrategyEncoder
- Had to take the implementation of the swap header encoding out of the main EVMStrategyEncoder trait, since it will now be difference for single and split swap strategies.
- Integration tests will be added in separate task/PR.
2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
a5f07a25ef feat: SingleSwapStrategyEncoder
- Had to take the implementation of the swap header encoding out of the main EVMStrategyEncoder trait, since it will now be difference for single and split swap strategies.
- Integration tests will be added in separate task/PR.
2025-04-23 12:30:13 +01:00
TAMARA LIPOWSKI
3f6bc5643e fix: Integration tests after merge
Took 50 seconds
2025-04-23 12:30:06 +01:00
TAMARA LIPOWSKI
3d01158bbb chore: merge main
Took 3 minutes
2025-04-23 12:29:36 +01:00
Tamara
6c74c674f0 Merge pull request #120 from propeller-heads/router/tnl/ENG-4317-sequential-in
feat: Add sequential swap methods
2025-04-23 12:26:31 +01:00
TAMARA LIPOWSKI
8f2346330a fix: fix slither CI action
- Need to manually install foundry and compile the project, or else it attempts to install the latest foundry version, which fails due to GLIBC not being found
2025-04-23 12:26:31 +01:00
TAMARA LIPOWSKI
c4455dcabb refactor: Separate test files for split/sequential/single
- Add more test cases for sequential swap and single swap to match those of split swap (fee, slippage), to catch errors more easily if someone makes a small code change to either the single or sequential methods
- Excluded USV3 and USV4 tests on sequential and single swap, since these tests were more to test USV3 and USV4 executor functionality than the high level sswap methods - they should already be sufficiently tested.
- Remove `testSplitSwapSimple` and `testSplitSwapSingleUSV3` since this is already tested by several other high-level methods (see single USV3 and single USV4 tests). We should prioritize integration-testing public methods over private methods.
2025-04-23 12:26:31 +01:00
TAMARA LIPOWSKI
49e0c49828 chore: (single swap) remove unnecessary cycle check
- It's not possible to have a single cyclical swap.
2025-04-23 12:26:31 +01:00
TAMARA LIPOWSKI
1dad4afb6b feat: Decode single and sequential swaps in LibSwap
- The old way was useful when we just had split swaps. Unfortunately, we now have split, sequential, and single swaps, which don't always require token indices or split percentages, so we need to decode differently for each case.
2025-04-23 12:26:31 +01:00
TAMARA LIPOWSKI
64345663d0 feat: Single swap methods.
- Remove duplicate test case for single swp with permit2. This test came from the days when we could still have a 0 minimum amount.
2025-04-23 12:26:31 +01:00
TAMARA LIPOWSKI
3ae9d3ad67 feat: Add sequential swap methods
- Add some basic tests (will add more in next commits)
- Adapt sequential tests (which originally tested split swap)
- Adapt a forgotten single swap test

TODO:
- Fix encoding of single and sequential swaps to not expect the split sawp format every time (the split and the token indices are not necessary and consume unnecessary gas).
2025-04-23 12:26:31 +01:00
TAMARA LIPOWSKI
65178681e0 docs: Rename to splitSwap in helper method docs too
Took 4 minutes
2025-04-23 12:26:31 +01:00
TAMARA LIPOWSKI
7fc008a718 feat: Rename split swap interfaces
- In preparation for adding single and sequential swap methods.
2025-04-23 12:25:36 +01:00
semantic-release-bot
5e7c0721c5 chore(release): 0.81.0 [skip ci]
## [0.81.0](https://github.com/propeller-heads/tycho-execution/compare/0.80.0...0.81.0) (2025-04-18)

### Features

* update tycho-common version to 0.66.4 ([134c73e](134c73e82b))

### Bug Fixes

* add slither disable after slither actions update ([20573cb](20573cbaf3))
2025-04-18 12:52:51 +00:00
Louise Poole
e3f4dd04cf Merge pull request #167 from propeller-heads/lp/update-tycho-common
feat: update tycho-common version to 0.66.4
2025-04-18 14:51:01 +02:00
TAMARA LIPOWSKI
20573cbaf3 fix: add slither disable after slither actions update
- We have always been ok with risk here and ensured this won't happen for our use case, but slither  actions version was recently updated so this fails in CI.
2025-04-18 08:46:32 -04:00