Commit Graph

113 Commits

Author SHA1 Message Date
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
TAMARA LIPOWSKI
77d53c786a docs: Explain wrap/unwrap process in validate_swap_path 2025-02-06 11:52:43 -05:00
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
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
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
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
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
TAMARA LIPOWSKI
8cd7d9f76e feat: Get native/wrapped addresses from chain
- These were being hardcoded to ETH and WETH, which may not always be the case for EVM-compatible chains.
2025-02-04 16:59:01 -05:00
royvardhan
7b7226356d fix: get_mock_split_swap_strategy_encoder 2025-02-05 00:18:26 +05:30
Harsh Vardhan Roy
b19dc89c8c Merge branch 'main' into encoder/hr/ENG-4083-Validate-SplitSwap 2025-02-05 00:17:21 +05:30
royvardhan
c787f5e722 fix: use native action to validate path 2025-02-05 00:14:09 +05:30
royvardhan
576f89d24c fix: deprecated signature 2025-02-04 23:30:23 +05:30
Diana Carvalho
79f513c76b chore: After rebase with master fixes
Took 2 minutes
2025-02-04 17:32:14 +00:00
Diana Carvalho
c89f46a2e6 chore: Rename registry -> swap_encoder_registry
Took 14 minutes

Took 8 seconds
2025-02-04 17:30:19 +00:00
Diana Carvalho
23875b8b02 feat: Refactor Registries
Interface changes:
- Rename StrategySelector to StrategyEncoderRegistry
- Implement clone for SwapEncoder

The StrategyEncoderRegistry needs to be initialised at the highest level and the passed to the TychoEncoder.
The TychoEncoder doesn't hold the chain nor the signer_pk as attributes anymore
The StrategyEncoderRegistry does:
- Initialises the SwapEncoderRegistry
- Initialises all the strategies and saves them in a HashMap
- Later, the TychoEncoder only reads from this hashmap

The StrategyEncoder now each holds a SwapEncoderRegistry as an attribute and they use this to get the correct SwapEncoder instead of reading from the global SWAP_ENCODER_REGISTRY

Simplified the SwapEncoderRegistry to not need a Config (everything is done inside itself)
All SwapEncoders implement clone

Took 2 hours 29 minutes

Took 11 seconds

Took 2 minutes
2025-02-04 17:30:10 +00:00
royvardhan
2f0013a934 chore: naming 2025-02-04 22:34:53 +05:30
royvardhan
4da50ddc9e chore: naming 2025-02-04 22:34:53 +05:30
royvardhan
4d97c3f16d feat: add tests for wrap unwrap case 2025-02-04 22:34:10 +05:30
royvardhan
b0dda205b0 chore: break tests 2025-02-04 22:34:10 +05:30
royvardhan
b8013c6e7e chore: move validation methods inside impl 2025-02-04 22:34:10 +05:30
royvardhan
b69aef9b8f feat: add tests for split swap validations 2025-02-04 22:34:10 +05:30
royvardhan
95edd5b1fe fix: checks in validations 2025-02-04 22:34:10 +05:30
royvardhan
f80ffa924f feat: add validation for split swap 2025-02-04 22:34:10 +05:30
TAMARA LIPOWSKI
ff283bc333 fix: test fixes after merge 2025-02-04 11:49:27 -05:00
Tamara
e8f22a2eee Merge branch 'main' into encoding/tnl/fix-wrapping-indices 2025-02-04 11:47:58 -05:00
Harsh Vardhan Roy
409d5a61cf Merge branch 'main' into router/hr/ENG-4035-2-Add-Encoded-Test 2025-02-04 21:10:54 +05:30