Commit Graph

483 Commits

Author SHA1 Message Date
TAMARA LIPOWSKI
4ba59192fc feat: add testExecuteIntegration
- Needed to change the integration test setup to use two USV3 pools instead of one V3 and V2, since the V2 pool was taking too much fees for the order to be fulfilled.
- Also needed to change the fork block to make this test work, which meant also needing to update the data for the existing testExecute.
2025-07-11 17:05:45 -04:00
TAMARA LIPOWSKI
4fef906e42 test: Use calldata in USX integration test
- Needed to update the filler address with the one from the test
- Removed unnecessary approval from non-integration test. The approval is now performed in the callback method.
2025-07-09 15:44:41 -04:00
Diana Carvalho
96d0bf4ba5 fix: Replicate a real Uniswap X order in integration test
Took 16 minutes
2025-07-09 14:38:48 -04:00
Diana Carvalho
d2ba255417 test: Add encoding test for a uniswap X integration test
Took 26 minutes
2025-07-09 14:38:48 -04:00
TAMARA LIPOWSKI
9e2f228a47 fix: use encodePacked to encode if approval needed
- Also approve max amount for the tycho router to use (to save on gas)
2025-07-09 14:32:43 -04:00
TAMARA LIPOWSKI
1b6a24fd75 fix: silence slither on native address setting
- We don't need a zero address check, since we expect this to be the zero address for most cases.
2025-07-09 12:21:12 -04:00
TAMARA LIPOWSKI
3752c155ea feat: Handle native ETH outputs
- In this case, the ETH needs to be manually transferred to the reactor.
- Native ETH input is not supported for UniswapX

Source:
https://support.uniswap.org/hc/en-us/articles/17544708791821-Are-there-network-costs-for-UniswapX
2025-07-09 12:21:12 -04:00
TAMARA LIPOWSKI
e243667f9e feat: (WIP) Handle approvals in UniswapXFiller
Reasons for using regular approvals instead of permit2:
- More simplicity, simpler setup
- Unfortunately we won't be able to "expire" approvals, which is a risk we may be okay with taking - since one advantage of this is that we will be able save on gas by not approving the reactor every single time (is this our intention?)

TODO:
- Do we really need input tokens to pass through our router?
- Handle native ETH (double check how this is transferred in the reactor)
2025-07-09 12:21:12 -04:00
Tamara
8518a3a756 Merge branch 'main' into usx/tnl/ENG-4668-naive-callback 2025-07-09 08:06:57 -04:00
dianacarvalho1
7a13f9e510 Merge branch 'main' into router/dc/ENG-4611-update-executors-scripts-safe 2025-07-09 09:35:15 +01:00
TAMARA LIPOWSKI
a2d123a263 fix: disable slither warnings
- locked-ether: We do have a withdraw method. Not sure why it doesn't register with slither. Already tried renaming.
- low-level-calls: This low level call is integral to the design of our filler contract.=
2025-07-08 14:00:17 -04:00
TAMARA LIPOWSKI
a114dfc9da feat: UniswapXFiller callback - naive implementation
Added testCallback + execution integration test with real onchain data
2025-07-08 12:05:15 -04:00
Diana Carvalho
ba60e4bb73 fix: Simplify nonceOffset logic
Set new role addresses for all chains

Took 1 hour 43 minutes
2025-07-08 16:55:41 +01:00
TAMARA LIPOWSKI
d61469ea67 fix: Make slither happy
Naming conventions (mixed case) for variables
2025-07-08 10:24:40 -04:00
TAMARA LIPOWSKI
00f22d62c1 feat: Take reactor address as input to UniswapXFiller
- Put reactor zero address check in separate line for more easy debugging.
- Also includes other small cosmetic changes.
2025-07-08 09:48:25 -04:00
Diana Carvalho
2733bb0072 feat: Upgrade scripts to submit to Safe wallet
Also add revoke-role.js script

Took 4 hours 0 minutes
2025-07-08 12:23:41 +01:00
TAMARA LIPOWSKI
ce1fe1dd94 feat: UniswapXFiller skeleton 2025-07-07 18:13:06 -04:00
dianacarvalho1
c003197c42 Merge branch 'main' into balancer-v3/dc/ENG-4425-deploy 2025-07-07 12:00:51 +01:00
Diana Carvalho
0c01e61d50 chore: Use tycho project in tenderly
Took 15 minutes
2025-07-04 12:15:12 +01:00
greendianasaur
1e499e1e3b Merge branch 'main' into balancer-v3/dc/ENG-4425-deploy 2025-07-01 17:28:36 +01:00
Diana Carvalho
3fe9906e5b feat: Deploy EkuboExecutor with MEV-resist
Took 31 minutes
2025-07-01 16:00:51 +01:00
die-herdplatte
5aaac2855e forge fmt 2025-06-24 17:42:28 +02:00
die-herdplatte
817aa35557 Merge remote-tracking branch 'upstream/main' into ekubo-mev-resist 2025-06-24 17:40:12 +02:00
Diana Carvalho
266e30d1aa feat: Deploy Balancer V3 executor
Took 19 minutes
2025-06-24 11:52:12 +01:00
Diana Carvalho
df63b87569 fix: Add optimized_transfers_integration_tests.rs
I forgot these tests in the previous PR

Took 24 minutes
2025-06-23 15:34:11 +01:00
Diana Carvalho
1d263f8b4c fix: After rebase fixes
Took 6 minutes
2025-06-23 15:02:21 +01:00
Diana Carvalho
e09789f347 test: Refactor tests
- Move encoding integration tests to integration test folder (in the rust project)
- Move protocol integration tests be inside the protocol file. This way we can change the block without any problems and it is easier for integrators

Took 6 minutes

Took 6 minutes


Took 17 minutes
2025-06-23 15:02:20 +01:00
die-herdplatte
b331a43392 forge fmt 2025-06-18 16:22:34 +02:00
die-herdplatte
72553bf98d Fix slither issues 2025-06-17 11:34:31 +02:00
die-herdplatte
58ce241c63 Add support for Ekubo MEV-resist extension 2025-06-17 11:02:37 +02:00
Diana Carvalho
4f58977007 fix(BalancerV3Executor): Do data.length check at the beginning of swap
Took 16 minutes
2025-06-06 17:24:07 +01:00
Diana Carvalho
941879d5d6 fix(BalancerV3Executor): Slice callback data nicely
Make a stricter data validation

Took 35 minutes
2025-06-06 17:01:48 +01:00
Diana Carvalho
c03df8aa1e feat: Add balancer v3 to transfer optimization constants
Also added a getForkBlock() on TychoRouterTestSetup.
 Moved the router balancer test inside the Balancer file and created a TychoRouterForBalancerV3Test to wrap it

Took 1 hour 10 minutes


Took 21 seconds
2025-06-06 10:41:35 +01:00
Diana Carvalho
269e328b5f feat: Add integration tests for balancer v3
Refactor BalancerV3Executor to have an inner _swapCallback method with the real swapping logic. Then we have two external methods:
- handleCallback: called by the router. Here we need to remove the first 68 bytes (4 selector + 32 dataOffset + 32 dataLength)
- swapCallback: called by the Vault directly if we are swapping against the executor directly (no router involved)

Took 1 minute
2025-06-05 17:22:17 +01:00
Diana Carvalho
806ce4e62c feat: Make BalancerV3Executor inherit from ICallback
Took 37 minutes
2025-06-05 14:59:22 +01:00
Diana Carvalho
f173f9bed7 feat: Add balancer-v3-monorepo lib
Took 6 minutes
2025-06-05 14:59:22 +01:00
Diana Carvalho
f34db52f09 feat: Implement BalancerV3Executor
Took 2 hours 32 minutes


Took 8 seconds

Took 13 minutes
2025-06-05 14:59:22 +01:00
TAMARA LIPOWSKI
6ea9c3708e chore: remove tenderly roles
- For organization
2025-05-27 13:12:13 -04:00
Diana Carvalho
9356e87d3a Merge remote-tracking branch 'origin/router/tnl/fix-deployment' into router/tnl/fix-deployment
# Conflicts:
#	config/router_addresses.json

Took 15 seconds
2025-05-27 16:01:46 +01:00
Diana Carvalho
0dafed0cad feat: Deploy new router on base
Took 33 minutes
2025-05-27 16:01:30 +01:00
TAMARA LIPOWSKI
e2e061e73e feat: Update unichain executors + router addrs
Deployed gas optimization
2025-05-27 10:55:48 -04:00
Diana Carvalho
c0805b107f Merge branch 'refs/heads/main' into router/tnl/fix-deployment 2025-05-27 15:33:20 +01:00
Diana Carvalho
4f85e3e88e chore: Move tests from strategy_encoders to tycho_encoders
Most of these tests were actually integration tests, so they should be in the outer level of the package.

Took 1 hour 5 minutes
2025-05-26 17:08:44 +01:00
Diana Carvalho
c62af2f232 feat: Don't sign permit2 objects
We don't want to be responsible for holding private keys -> the user is the one that should do this outside of tycho-execution

Done:
- Remove signature from EncodedSolution
- Introduce UserTransferType and pass that everywhere instead of is_permit2_active and token_in_already_in_router
- Remove signing from permit2. Added it to the encoding_utils.rs only
- Mark encode_full_calldata as deprecated
- Backwards compatibility: still accept a signer for the encode_full_calldata case
- Update all tests

Took 2 hours 10 minutes


Took 13 minutes
2025-05-26 12:50:11 +01:00
Diana Carvalho
75f2c3a1c5 feat: Create non alloy specific Permit and PermitDetails structs
- Add try_from methods to convert them to the corresponding Solidity representations
- Update tests

Took 56 seconds
2025-05-23 11:31:05 +01:00
Diana Carvalho
88ad67e5ff Merge branch 'refs/heads/main' into router/tnl/fix-deployment 2025-05-22 15:35:49 +01:00
Diana Carvalho
4e8c6ddc8c feat: Separate encoding swaps from encoding txs
This way the user is responsible for encoding the Tycho Router method inputs that are used as guardrails in execution.

Interface changes:
- Create EncodedSolution
- StrategyEncoder
  - don't need to know have permit2 or token_in_already_in_router as attributes anymore
  - encode_strategy returns EncodedSolution now (no method encoding done here now)
- TychoEncoder
  - add encode_solution() method. This is the recommended method for users
  - needs to have permit2, token_in_already_in_router and router_address as attributes
  - permit creation is made in the router now

Also:
- create encoding_utils.rs
- update all tests

Took 2 hours 42 minutes


Took 3 minutes

Took 13 minutes
2025-05-22 14:43:12 +01:00
Diana Carvalho
1f26fbce14 fix: Small misc improvements from audit
- In RestrictTransferFrom:
  - Compare tokenIn with tokenIn from storage
  - Correct docstrings
  - Recompute storage slots with new names
  - Rename transferFromNeeded to isTransferFromAllowed
  - Don't track amount spent but subtract from amount allowed
- In TychoRouter: Rename transferFromNeeded to isTransferFromAllowed

Took 32 minutes
2025-05-22 10:52:00 +01:00
TAMARA LIPOWSKI
5bf3b5d7ad feat: Update ethereum router + executor addresses
We deployed gas optimizations :)
2025-05-21 12:58:07 -04:00
TAMARA LIPOWSKI
ec702a0c7f chore: Uncomment executor deployment 2025-05-21 12:11:36 -04:00