Commit Graph

334 Commits

Author SHA1 Message Date
TAMARA LIPOWSKI
03414532c6 chore: merge main 2025-08-21 14:31:05 -04:00
adrian
52c91a12b8 refactor: remove effectiveTrader from calldata and always set it to trader's value 2025-08-21 13:11:13 +02:00
adrian
a09d648f3c fix: in HashflowExecutor, _balanceOf must use trader address instead of the executor's to get the balance 2025-08-21 13:11:13 +02:00
adrian
93db953c62 feat: implement SwapEncoder for Hashflow 2025-08-21 13:11:13 +02:00
Diana Carvalho
72b60aa324 feat: Update BebopExecutor deployed address
Took 38 minutes
2025-08-14 17:46:26 +01:00
Diana Carvalho
7a5ee8b57b Merge branch 'refs/heads/main' into feat/bebop-rfq-encoder-and-executor 2025-08-14 09:58:21 +01:00
adrian
e03ecf48d5 feat: add hashflow executor 2025-08-14 10:42:51 +02:00
Diana Carvalho
e79347842f fix(Bebop): Fix encoding and tests
Misc: Fix revert condition in UniswapXFiller

Took 1 hour 20 minutes
2025-08-13 15:11:43 +01:00
Diana Carvalho
7024da395d fix(Bebop): Fix AggregateOrder tests
Delete BebopExecutionHarness.t.sol

Took 53 minutes
2025-08-12 18:38:10 +01:00
Diana Carvalho
76a09d0402 fix: Simplify the BebopExecutor and fix Single tests
Make specific quotes that are expected to be used by the TychoRouter for the tests. Do not use the BebopHarness
Commented out Aggregate tests

Took 6 hours 40 minutes
2025-08-12 16:11:42 +01:00
pedrobergamini
97a961ecb8 chore: fix single encoding bebop tests 2025-08-10 16:59:06 -03:00
pedrobergamini
a76c35d95e chore: resolve merge conflicts 2025-08-08 11:41:00 -03:00
pedrobergamini
c0d49f95ad chore: commit progress so far on test fixing 2025-08-08 11:35:43 -03:00
Diana Carvalho
42609df650 Merge branch 'refs/heads/main' into feat/bebop-rfq-encoder-and-executor
# Conflicts:
#	config/executor_addresses.json
#	foundry/scripts/deploy-executors.js
#	foundry/test/TychoRouterSequentialSwap.t.sol
#	foundry/test/assets/calldata.txt
#	src/encoding/models.rs
#	tests/common/mod.rs

Took 21 minutes
2025-08-08 14:40:03 +01:00
pedrobergamini
1336eb5f90 chore: start implementing test changes related to partialFillOffset and encoded receiver 2025-08-05 22:45:48 -03:00
pedrobergamini
504a4db702 chore: include partialFillOffset as part of user_data 2025-08-05 20:32:42 -03:00
pedrobergamini
49754e654e chore: fix filledTakerAmount calldata override logic 2025-08-04 18:12:31 -03:00
pedrobergamini
7ef587575a chore: create internal _swap method for harness usage 2025-08-04 14:51:58 -03:00
pedrobergamini
3c7a846ff4 chore: update filledTakerAmount 0 logic 2025-08-04 14:23:20 -03:00
pedrobergamini
276d611157 chore: update BebopExecutor 2025-08-04 10:25:00 -03:00
Diana Carvalho
c399e316f5 Merge branch 'refs/heads/main' into hooks/dc/ENG-4624-pass-hook-data
# Conflicts:
#	foundry/test/assets/calldata.txt

Took 9 minutes
2025-07-31 17:50:45 +01: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 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
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
TAMARA LIPOWSKI
ce1fe1dd94 feat: UniswapXFiller skeleton 2025-07-07 18:13:06 -04:00
greendianasaur
1e499e1e3b Merge branch 'main' into balancer-v3/dc/ENG-4425-deploy 2025-07-01 17:28:36 +01:00
Diana Carvalho
f9ef8e0dbd feat: Deploy BebopExecutor
Took 40 minutes
2025-06-25 10:04:03 +01:00
Diana Carvalho
266e30d1aa feat: Deploy Balancer V3 executor
Took 19 minutes
2025-06-24 11:52:12 +01:00
pedrobergamini
80c2ef7881 chore: improve test assertion and function ordering 2025-06-23 14:38:57 -03:00
Diana Carvalho
93678d9d19 feat(univ4): Pass user_data as hook_data in execution
Because we don't know the size of hook data, it needs to be at the end of the protocol data. But we also don't know the size of the intermediary swaps. To solve this, we are now ple encoding the intermediary swaps and only then appending the hook data

Took 2 hours 50 minutes

Took 40 seconds
2025-06-23 15:44:26 +01:00
Diana Carvalho
a0581773cd feat: Support hooks (without special calldata)
Add hook address to encoded data and then use it in execution
Add execution test for Euler

Took 1 hour 19 minutes

Took 2 hours 40 minutes

Took 3 minutes


Took 2 minutes
2025-06-23 15:44:26 +01:00
pedrobergamini
4c7f33d81b chore: fix _getActualFilledTakerAmount return value 2025-06-18 13:08:50 -03:00
die-herdplatte
b331a43392 forge fmt 2025-06-18 16:22:34 +02:00
pedrobergamini
033a4bfe9f chore: fix slither info warning 2025-06-17 23:30:48 -03:00
pedrobergamini
90ac0a4c98 test: fix all aggregate order tests and a few executor bugs 2025-06-17 23:27:03 -03: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
pedrobergamini
5418846619 chore: refactor Aggregate orders, fix Single orders integration tests and calldata generation 2025-06-16 23:08:54 -03:00
pedrobergamini
d527479037 refactor: simplify BebopExecutor by removing Multi order type, improve settlement flow 2025-06-16 15:32:07 -03:00
pedrobergamini
8a82dbfe34 chore: test multi and aggregate orders, support all signature types available 2025-06-08 02:58:52 -03:00
pedrobergamini
71a8401670 chore: address merge conflicts, implement user_data for Bebop 2025-06-08 00:36:23 -03:00
pedrobergamini
2124b49a68 test: bebop single encoding integration test 2025-06-07 17:46:08 -03: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
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