Commit Graph

354 Commits

Author SHA1 Message Date
royvardhan
789416b2cd feat: add usv4 swap encoder with single swap test 2025-02-18 20:58:00 +05:30
TAMARA LIPOWSKI
8f1e372c90 refactor: PR comments (moving things around/docs)...
- Move the validator into its own file, for organization purposes.
- Add missing elements to `SplitSwapStrategyEncoder` docstring
2025-02-17 23:57:01 -05:00
TAMARA LIPOWSKI
44aabf1761 feat: Merge USV4 strategy back into split strategy
- Since the group_swaps method is now generalized, there is no need to have an entirely separate method here.
2025-02-17 23:44:58 -05:00
TAMARA LIPOWSKI
47b61802ee feat: Generalize group_swaps method
- This can now be used for any groupable protocols - not just USV4.
2025-02-17 17:23:29 -05:00
TAMARA LIPOWSKI
957bf898f2 fix: Do not group split swaps
As far as we know, Uniswap V4 has no support for optimizing split swaps - only sequential swaps. We must make sure we don't accidentally group split swaps too - as this will likely revert due to mismatched input and output values.
2025-02-17 16:50:59 -05:00
TAMARA LIPOWSKI
e94154bc2d fix: Do not count intermediary tokens in indices
To achieve this, a small refactor was necessary with the introduction of a SwapGroup object, and a separate method to create a vec of these objects. This then separates all logic related to combining protocol data nicely and cleanly into its own method with its own tests.

TODO:
- Deal with split swaps and add test for split swap scenario
- Clean up all existing PR comments
2025-02-14 18:48:39 -05:00
TAMARA LIPOWSKI
556af0253d test: Add test for USV4 sequential swap 2025-02-14 00:51:06 -05:00
TAMARA LIPOWSKI
b452372714 refactor: deduplicate validation for Split & USV4 strategy
We use the same validation for both SplitSwapStrategy and UniswapV4Strategy - so, instead, put the validation into a Validator trait that gets initialized in both swap strategies in order to avoid duplication.
2025-02-13 15:30:09 -05:00
TAMARA LIPOWSKI
f32210bb1f feat: (WIP) UniswapV4 encoding
- To keep any knowledge of USV4 separate from regular splits, I've made a new USV4 encoding strategy that will be used only if we detect sequential USV4 swaps.
- For single USV4 swaps without necessary optimizations, the regular split swap strategy can be used
- No need to change the swap struct interface to take multiple swaps - this concatenation can be done at the swap strategy level.

TODO:
- test
- deduplicate code from split strategy
- UniswapV4SwapEncoder
2025-02-13 14:51:08 -05:00
TAMARA LIPOWSKI
1c565deb57 refactor: (Solution) replace check_amount with checked_amount
- This is to have consistency with checked_token
2025-02-11 11:25:58 -05:00
Diana Carvalho
dd7ecac324 feat: Add selector to Transaction
Return selector in the StrategyEncoder. This is needed for the ExecutorStrategyEncoder

--- don't change below this line ---
ENG-4088 Took 12 minutes


Took 13 seconds
2025-02-11 12:20:47 +00:00
Diana Carvalho
a234ff701f feat: Remove router_address from TychoEncoder
Make the router address mandatory for the Solution attribute instead

--- don't change below this line ---
ENG-4088 Took 30 minutes
2025-02-07 14:58:09 +00:00
Diana Carvalho
d7f20aa74f fix: Don't have a DEFAULT_CONFIG_PATH in bin
This is unnecessary since we already have the executor address loaded at build time

--- don't change below this line ---
ENG-4088 Took 8 minutes


Took 7 seconds
2025-02-07 12:27:24 +00:00
Diana Carvalho
cad9f394cd feat: The execution structs should receiver tycho_core Chain
and convert it later to an execution model Chain

--- don't change below this line ---
ENG-4088 Took 8 minutes
2025-02-07 12:16:46 +00:00
Diana Carvalho
0c9050cf79 fix: Uniswap v3 pool fee is big endian, not little endian
--- don't change below this line ---
ENG-4088 Took 18 minutes


Took 17 seconds
2025-02-07 12:16:46 +00:00
Diana Carvalho
bef4740a1d fix: After rebase fixes
--- don't change below this line ---
ENG-4088 Took 2 minutes
2025-02-07 12:16:46 +00:00
Diana Carvalho
164d062ad9 fix(univ3): The fee keyword is just "fee" and not "pool_fee"
--- don't change below this line ---
ENG-4088 Took 1 minute
2025-02-07 12:16:46 +00:00
Diana Carvalho
d4af59d4dc feat: Use block_in_place instead of block_on
This is necessary when we run tycho-execution in an environment that already has a runtime.
Make sure that if no runtime exists, like in the testing scenario inside tycho-execution, we save the new runtime in an attribute of permit2. If we don't do this, then the runtime just dies and our handle points to nothing at all and all tests fail

--- don't change below this line ---
ENG-4088 Took 17 minutes

Took 5 seconds
2025-02-07 12:16:46 +00:00
Diana Carvalho
12f85ccc0a feat: Get current runtime if there is any
instead of creating a new one every time

--- don't change below this line ---
ENG-4088 Took 18 minutes

Took 6 seconds
2025-02-07 12:16:46 +00:00
Diana Carvalho
f5232f403e feat: Read default executors at compile time into a json
This way we don't have issues with paths and trying to read files that are at other locations after compile time

--- don't change below this line ---
ENG-4088 Took 44 seconds

Took 52 seconds
2025-02-07 12:16:46 +00:00
Diana Carvalho
c791c93cb5 feat: Add uniswap v3 to swap encoders list
--- don't change below this line ---
ENG-4088 Took 10 minutes
2025-02-07 12:16:46 +00:00
Diana Carvalho
dee8542b45 chore: Improve error message when reading executors file
--- don't change below this line ---
ENG-4088 Took 1 minute

Took 7 seconds
2025-02-07 12:16:46 +00:00
Diana Carvalho
b333d60d69 feat: Add clone to EVMTychoEncoder
--- don't change below this line ---
ENG-4088 Took 4 minutes

Took 8 seconds

Took 48 seconds
2025-02-07 12:16:46 +00:00
Diana Carvalho
4680a4be24 feat: Make executors_file_path optional and use a default value if None
--- don't change below this line ---
ENG-4088 Took 4 minutes

Took 59 seconds
2025-02-07 12:16:46 +00:00
royvardhan
3bb5b0c7c6 fix: fmt 2025-02-06 22:44:18 +05:30
Harsh Vardhan Roy
0e3ce00698 Merge branch 'main' into encoder/hr/ENG-4093-bin 2025-02-06 22:41:23 +05:30
royvardhan
7df1995655 fix: fmt 2025-02-06 22:30:23 +05:30
TAMARA LIPOWSKI
77d53c786a docs: Explain wrap/unwrap process in validate_swap_path 2025-02-06 11:52:43 -05:00
Harsh Vardhan Roy
8d69d748d1 Merge branch 'main' into encoder/hr/ENG-4093-bin 2025-02-06 22:20:56 +05:30
TAMARA LIPOWSKI
9adbab498c chore: merge main 2025-02-06 11:49:17 -05:00
TAMARA LIPOWSKI
2b94a3f213 docs: improvements from PR comments 2025-02-06 11:34:57 -05:00
TAMARA LIPOWSKI
41a5fe99c9 chore: merge main 2025-02-06 11:09:07 -05:00
TAMARA LIPOWSKI
1a07c7dc61 Fix: Do not let user specify the native/wrapped token
This puts too much burden on the user. Instead, specify native and wrapped tokens as methods which return hardcoded values.
2025-02-06 11:08:06 -05:00
Harsh Vardhan Roy
535384393b Merge branch 'main' into encoder/hr/ENG-4093-bin 2025-02-06 18:34:27 +05:30
royvardhan
a5166f282d feat: use clap for cli and resolve pr comments 2025-02-06 18:30:52 +05:30
TAMARA LIPOWSKI
e83b8d9aef feat: Take Chain object containing native/wrapped addresses
- This way this chain object contains everything we need, we don't need to worry about doing any transformation or calling any supplementary functions inside any of the encoders
- Needed to move our new Chain object to a higher level since this is used in the higher-level encoder traits. This required some weird default values in the constants in order to avoid using alloy's hex literal. I could have instead opted to make Bytes parse a string I think, though this would mean possibly returning an error at the constants level, which is not nice either.

Question:
- Do we want the user to be in charge of passing the native and wrapped token every single time? This may be a bit annoying for the user. For now, I have defaulted to those in constants.rs, this would take 5 mins to remove though if you don't like it, and it would get rid of this complicated bytes initialization.
2025-02-05 17:14:56 -05:00
TAMARA LIPOWSKI
2b43ecdf29 docs: Document validation functions 2025-02-05 16:44:28 -05:00
Tamara
021a179076 Merge branch 'main' into encoding/tnl/ENG-4205-code-docs 2025-02-05 16:35:54 -05:00
TAMARA LIPOWSKI
07457b5f76 docs: More docs and improvements of existing docs
- Tried not to leave a single public function undocumented, though did not double-document public function with obvious names
- Remove all mentions of the strategy selector in favour of the strategy registry (to avoid confusion)
2025-02-05 16:35:43 -05:00
TAMARA LIPOWSKI
44e8e0bb96 docs: Address comments, make clippy happy 2025-02-05 15:44:27 -05:00
TAMARA LIPOWSKI
f8b3baff55 chore: merge main 2025-02-05 13:48:00 -05:00
royvardhan
b93856073c feat: add serde primitive, update command 2025-02-06 00:16:35 +05:30
Diana Carvalho
cb14022681 feat: Accept any struct that implements Into<ProtocolComponent> in Swap
--- don't change below this line ---
ENG-4213 Took 27 minutes
2025-02-05 18:02:43 +00:00
royvardhan
fd4045e6fe feat: remove manual parsing 2025-02-05 22:57:38 +05:30
Harsh Vardhan Roy
9e61261a51 Update strategy_encoders.rs
Co-authored-by: Tamara <tamara@datarevenue.com>
2025-02-05 20:23:10 +05:30
Harsh Vardhan Roy
3803be897e Merge branch 'main' into encoder/hr/ENG-4083-Validate-SplitSwap 2025-02-05 19:39:00 +05:30
royvardhan
ae6b1ed658 feat: remove direct execution hardcode 2025-02-05 17:05:06 +05:30
royvardhan
4f7fe3b96d feat: add encoder bin 2025-02-05 16:53:20 +05:30
Diana Carvalho
3dcb8aee7b chore: Use tycho_core::dto objects instead of tycho_core::models
--- don't change below this line ---
ENG-4169 Took 11 minutes
2025-02-05 10:10:43 +00:00
TAMARA LIPOWSKI
52cce5f5c6 docs: (WIP) In-code docs for encoders
- TODO double check all this, look for missing docs
2025-02-04 18:14:32 -05:00