Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
24135e3
Liquidity Indexer PoC
jmg-duarte Mar 24, 2026
bdd34c2
Avoid scientific notation string
fafk Mar 24, 2026
92df682
pool-indexer: split API handlers and add token symbol search
jmg-duarte Mar 24, 2026
9667191
Merge branch 'main' into teamathon/indexer
fafk Apr 13, 2026
00aae52
Clean up types and conversion
fafk Apr 13, 2026
1d2279a
Refactoring
fafk Apr 13, 2026
ed87e45
Move consts to config
fafk Apr 16, 2026
6e28620
Make migrations optional
fafk Apr 17, 2026
7d47638
Refactoring
fafk Apr 17, 2026
a5e6f49
Extend API and simplify
fafk Apr 17, 2026
98e5217
Readability refactor
fafk Apr 17, 2026
6a91cd2
Remove useless wrapper
fafk Apr 17, 2026
c0f24e8
Add indexes
fafk Apr 20, 2026
f32db46
Optimize cold startup and refactor
fafk Apr 20, 2026
18bffb6
Fix Dockerfile
fafk Apr 21, 2026
8396b99
Fmt
fafk Apr 21, 2026
d243878
Wire up the driver
fafk Apr 21, 2026
7d5c651
Merge remote-tracking branch 'origin/main' into teamathon/indexer
fafk Apr 21, 2026
ea7c119
Fmt generated contracts bindings
fafk Apr 21, 2026
a48236e
Fix codegen template to match main's formatting
fafk Apr 21, 2026
f69031f
Kill FE
fafk Apr 21, 2026
9aec8dc
Add metrics
fafk Apr 21, 2026
e93dc6f
Clippy
fafk Apr 21, 2026
1958100
Fix contracts
fafk Apr 21, 2026
b714f29
Rebuild
fafk Apr 22, 2026
9c13727
Merge branch 'main' into teamathon/indexer
fafk Apr 22, 2026
97f0fa1
Roll back .gitignore
fafk Apr 22, 2026
c877147
Delete package.lock
fafk Apr 22, 2026
8268ccc
Claude review feedback
fafk Apr 22, 2026
67021d9
Fix DB tests
fafk Apr 22, 2026
a45928f
Allow env var names for some config values
fafk Apr 22, 2026
46d81e5
Fmt
fafk Apr 22, 2026
c1868fc
Expect only base URL in config
fafk Apr 23, 2026
7e179e6
Fix serialization
fafk Apr 23, 2026
b4a34ac
Skip pools without active range liq
fafk Apr 23, 2026
acf9c29
Update comments and refactor
fafk Apr 23, 2026
608b4e6
Use idiom
fafk Apr 23, 2026
baf7173
Merge branch 'main' into teamathon/indexer
fafk Apr 23, 2026
13c1b26
Fmt
fafk Apr 23, 2026
b43e20e
Fmt
fafk Apr 24, 2026
65db21c
Remove var
fafk Apr 24, 2026
4ca9399
Remove small wrappers
fafk Apr 24, 2026
2a6082e
Remove trivial wrappers
fafk Apr 24, 2026
5b28a38
Merge branch 'main' into teamathon/indexer
fafk Apr 24, 2026
e97e01a
Remove dead code
fafk Apr 24, 2026
1f22cff
Renaming
fafk Apr 24, 2026
93a55a8
Fmt
fafk Apr 24, 2026
653f97b
Group ticks without relying on ordering
fafk Apr 24, 2026
c048a5e
Correctly support mutiple factories
fafk Apr 24, 2026
93dee83
Fmt
fafk Apr 24, 2026
9569ab1
Add e2e integration test with driver
fafk Apr 24, 2026
7a1aedb
Improve test
fafk Apr 24, 2026
3fc08ad
Merge branch 'main' into teamathon/indexer
fafk Apr 24, 2026
145499b
PR feedback #1
fafk Apr 24, 2026
5bb40d4
Merge branch 'main' into teamathon/indexer
fafk Apr 24, 2026
9c438db
Merge branch 'main' into teamathon/indexer
fafk Apr 28, 2026
690d7ff
Comment
fafk Apr 28, 2026
521237f
Cmt
fafk Apr 28, 2026
23a0a59
Make sure decimals are present
fafk Apr 28, 2026
f59d867
Docs
fafk Apr 28, 2026
5ec8952
Add warning
fafk Apr 28, 2026
7233312
Dont use debug
fafk Apr 28, 2026
93bae4c
Break up to two endpoints
fafk Apr 28, 2026
9c3c3d2
Import shuffle & fmt
fafk Apr 28, 2026
457353b
Find ticks for all pools
fafk Apr 28, 2026
8e9084e
Use clone on arc instead of reference
fafk Apr 28, 2026
6566e13
Cmt
fafk Apr 28, 2026
d170351
Move related params together
fafk Apr 28, 2026
71f2090
Move struct and impl together
fafk Apr 28, 2026
620b4d9
Use full path import
fafk Apr 28, 2026
cec2edb
Docs
fafk Apr 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ order-validation = { path = "crates/order-validation" }
orderbook = { path = "crates/orderbook" }
paste = "1.0"
pin-project-lite = "0.2.14"
pool-indexer = { path = "crates/pool-indexer" }
prettyplease = "0.2.37"
price-estimation = { path = "crates/price-estimation" }
proc-macro2 = "1.0.103"
Expand Down
10 changes: 8 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ RUN rustup install stable && rustup default stable
COPY . .
RUN --mount=type=cache,target=/usr/local/cargo/registry --mount=type=cache,target=/src/target \
CARGO_PROFILE_RELEASE_DEBUG=1 RUSTFLAGS="${RUSTFLAGS}" cargo build --release \
-p autopilot -p driver -p orderbook -p refunder -p solvers \
-p autopilot -p driver -p orderbook -p refunder -p solvers -p pool-indexer \
${CARGO_BUILD_FEATURES} && \
cp target/release/autopilot / && \
cp target/release/driver / && \
cp target/release/orderbook / && \
cp target/release/refunder / && \
cp target/release/solvers /
cp target/release/solvers / && \
cp target/release/pool-indexer /

# Create an intermediate image to extract the binaries
FROM docker.io/debian:bookworm-slim AS intermediate
Expand Down Expand Up @@ -53,6 +54,10 @@ FROM intermediate AS solvers
COPY --from=cargo-build /solvers /usr/local/bin/solvers
ENTRYPOINT [ "solvers" ]

FROM intermediate AS pool-indexer
COPY --from=cargo-build /pool-indexer /usr/local/bin/pool-indexer
ENTRYPOINT [ "pool-indexer" ]

# Extract Binary
FROM intermediate

Expand All @@ -62,5 +67,6 @@ COPY --from=cargo-build /driver /usr/local/bin/driver
COPY --from=cargo-build /orderbook /usr/local/bin/orderbook
COPY --from=cargo-build /refunder /usr/local/bin/refunder
COPY --from=cargo-build /solvers /usr/local/bin/solvers
COPY --from=cargo-build /pool-indexer /usr/local/bin/pool-indexer

ENTRYPOINT ["/usr/bin/tini", "-s", "--"]
78 changes: 78 additions & 0 deletions contracts/artifacts/MockUniswapV3Factory.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token0",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token1",
"type": "address"
},
{
"indexed": true,
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"indexed": false,
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"indexed": false,
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"name": "PoolCreated",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "tokenB",
"type": "address"
},
{
"internalType": "uint24",
"name": "_fee",
"type": "uint24"
}
],
"name": "createPool",
"outputs": [
{
"internalType": "address",
"name": "pool",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x6080604052348015600e575f5ffd5b506106dd8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a16712951461002d575b5f5ffd5b61004061003b3660046101ab565b610069565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b5f5f5f8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16106100a65784866100a9565b85855b915091505f8282866040516100bd90610176565b73ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015262ffffff166040820152606001604051809103905ff080158015610106573d5f5f3e3d5ffd5b5060408051600a815273ffffffffffffffffffffffffffffffffffffffff808416602083015292965086935062ffffff88169280861692908716917f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118910160405180910390a45050509392505050565b6104da806101f783390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146101a6575f5ffd5b919050565b5f5f5f606084860312156101bd575f5ffd5b6101c684610183565b92506101d460208501610183565b9150604084013562ffffff811681146101eb575f5ffd5b80915050925092509256fe60e060405234801561000f575f5ffd5b506040516104da3803806104da83398101604081905261002e91610069565b6001600160a01b03928316608052911660a05262ffffff1660c0526100b4565b80516001600160a01b0381168114610064575f5ffd5b919050565b5f5f5f6060848603121561007b575f5ffd5b6100848461004e565b92506100926020850161004e565b9150604084015162ffffff811681146100a9575f5ffd5b809150509250925092565b60805160a05160c0516103fd6100dd5f395f61012c01525f61010501525f607801526103fd5ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c8063ddca3f431161004d578063ddca3f4314610127578063efe27fa314610162578063f637731d14610177575f5ffd5b80630dfe1681146100735780631a686502146100c4578063d21220a714610100575b5f5ffd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b5f546100df906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016100bb565b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b61014e7f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff90911681526020016100bb565b610175610170366004610312565b61018a565b005b61017561018536600461037b565b610287565b5f805482919081906101af9084906fffffffffffffffffffffffffffffffff1661039d565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508160020b8360020b8573ffffffffffffffffffffffffffffffffffffffff167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde33855f5f604051610279949392919073ffffffffffffffffffffffffffffffffffffffff9490941684526fffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b60405180910390a450505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831681525f60208201527f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95910160405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff811681146102f9575f5ffd5b50565b8035600281900b811461030d575f5ffd5b919050565b5f5f5f5f60808587031215610325575f5ffd5b8435610330816102d8565b935061033e602086016102fc565b925061034c604086016102fc565b915060608501356fffffffffffffffffffffffffffffffff81168114610370575f5ffd5b939692955090935050565b5f6020828403121561038b575f5ffd5b8135610396816102d8565b9392505050565b6fffffffffffffffffffffffffffffffff81811683821601908111156103ea577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9291505056fea164736f6c634300081e000aa164736f6c634300081e000a",
"deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a16712951461002d575b5f5ffd5b61004061003b3660046101ab565b610069565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b5f5f5f8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16106100a65784866100a9565b85855b915091505f8282866040516100bd90610176565b73ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015262ffffff166040820152606001604051809103905ff080158015610106573d5f5f3e3d5ffd5b5060408051600a815273ffffffffffffffffffffffffffffffffffffffff808416602083015292965086935062ffffff88169280861692908716917f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118910160405180910390a45050509392505050565b6104da806101f783390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146101a6575f5ffd5b919050565b5f5f5f606084860312156101bd575f5ffd5b6101c684610183565b92506101d460208501610183565b9150604084013562ffffff811681146101eb575f5ffd5b80915050925092509256fe60e060405234801561000f575f5ffd5b506040516104da3803806104da83398101604081905261002e91610069565b6001600160a01b03928316608052911660a05262ffffff1660c0526100b4565b80516001600160a01b0381168114610064575f5ffd5b919050565b5f5f5f6060848603121561007b575f5ffd5b6100848461004e565b92506100926020850161004e565b9150604084015162ffffff811681146100a9575f5ffd5b809150509250925092565b60805160a05160c0516103fd6100dd5f395f61012c01525f61010501525f607801526103fd5ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c8063ddca3f431161004d578063ddca3f4314610127578063efe27fa314610162578063f637731d14610177575f5ffd5b80630dfe1681146100735780631a686502146100c4578063d21220a714610100575b5f5ffd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b5f546100df906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016100bb565b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b61014e7f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff90911681526020016100bb565b610175610170366004610312565b61018a565b005b61017561018536600461037b565b610287565b5f805482919081906101af9084906fffffffffffffffffffffffffffffffff1661039d565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508160020b8360020b8573ffffffffffffffffffffffffffffffffffffffff167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde33855f5f604051610279949392919073ffffffffffffffffffffffffffffffffffffffff9490941684526fffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b60405180910390a450505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831681525f60208201527f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95910160405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff811681146102f9575f5ffd5b50565b8035600281900b811461030d575f5ffd5b919050565b5f5f5f5f60808587031215610325575f5ffd5b8435610330816102d8565b935061033e602086016102fc565b925061034c604086016102fc565b915060608501356fffffffffffffffffffffffffffffffff81168114610370575f5ffd5b939692955090935050565b5f6020828403121561038b575f5ffd5b8135610396816102d8565b9392505050565b6fffffffffffffffffffffffffffffffff81811683821601908111156103ea577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9291505056fea164736f6c634300081e000aa164736f6c634300081e000a",
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
}
Loading
Loading