Velodrome Slipstream API: Concentrated Liquidity Pools, Swaps and Candles on Optimism
Slipstream is Velodrome's concentrated-liquidity pool type, and on Optimism it is where Velodrome's real volume trades: a few dozen pools, led by WETH/USDC, USDC/USDT, WBTC/USDC and OP/USDC. Bitquery indexes it as protocol velodrome_slipstream, inside ProtocolFamily Velodrome; the Velodrome page covers the whole DEX and the v2 pools. Every example runs in the IDE on a free account and uses the Trading cube, which carries the trader, USD amounts and the pool address on every row for the last month or so. USD sums cap a single trade with AmountsInUsd: { Quote: { lt: 10000000 } } to keep out the rare mispriced swap. The worked pool is WETH/USDC, 0x478946bcd4a5a22b316470f5486fafb928c0ba25, with WETH 0x4200000000000000000000000000000000000006 and native USDC 0x0b2c639c533813f4aa9d7837caf62653d097ff85.
Live Slipstream swaps
One message per swap in any Slipstream pool: side, trader, amounts in USD and the pool address. Saved stream here.
subscription SlipstreamLiveTradesOptimism {
Trading {
Trades(
where: {
Pair: { Market: { Network: { is: "Optimism" }, Protocol: { is: "velodrome_slipstream" } } }
}
) {
Block {
Time
}
Side
Trader {
Address
}
Amounts {
Base
Quote
}
AmountsInUsd {
Base
Quote
}
PriceInUsd
Pair {
Token {
Symbol
Address
}
QuoteToken {
Symbol
Address
}
Pool {
Address
}
}
TransactionHeader {
Hash
}
}
}
}
Top Slipstream pools by volume
Pools ranked by USD volume over the last day with both tokens, trade count and unique traders. Several pools can exist for the same pair at different fee tiers, so WETH/USDC appears more than once. Saved query here.
query SlipstreamTopPoolsOptimism {
Trading {
Trades(
where: {
Pair: { Market: { Network: { is: "Optimism" }, Protocol: { is: "velodrome_slipstream" } } }
Block: { Time: { since_relative: { hours_ago: 24 } } }
AmountsInUsd: { Quote: { lt: 10000000 } }
}
orderBy: { descendingByField: "volumeUsd" }
limit: { count: 20 }
) {
Pair {
Pool {
Address
}
Token {
Symbol
Address
}
QuoteToken {
Symbol
Address
}
}
count
traders: uniq(of: Trader_Address)
volumeUsd: sum(of: AmountsInUsd_Quote)
}
}
}
Latest swaps in the WETH/USDC pool
Filter on Pair.Pool.Address. Each row has the side, the trader, the WETH price in USD and the transaction hash. Saved query here.
query SlipstreamWethUsdcPoolSwaps {
Trading {
Trades(
where: {
Pair: {
Market: { Network: { is: "Optimism" } }
Pool: { Address: { is: "0x478946bcd4a5a22b316470f5486fafb928c0ba25" } }
}
Block: { Time: { since_relative: { hours_ago: 24 } } }
}
orderBy: { descending: Block_Time }
limit: { count: 20 }
) {
Block {
Time
}
Side
Trader {
Address
}
PriceInUsd
Amounts {
Base
Quote
}
AmountsInUsd {
Quote
}
Pair {
Token {
Symbol
}
QuoteToken {
Symbol
}
}
TransactionHeader {
Hash
}
}
}
}
Hourly candles of the pool
The Pairs cube gives OHLC and volume per pool. Duration is in seconds: 60, 300, 3600 and so on. Saved query here.
query SlipstreamWethUsdcPoolCandles {
Trading {
Pairs(
where: {
Pool: { Address: { is: "0x478946bcd4a5a22b316470f5486fafb928c0ba25" } }
Token: { Address: { is: "0x4200000000000000000000000000000000000006" } }
Market: { Network: { is: "Optimism" } }
Interval: { Time: { Duration: { eq: 3600 } } }
Price: { IsQuotedInUsd: true }
}
orderBy: { descending: Interval_Time_Start }
limit: { count: 24 }
) {
Interval {
Time {
Start
Duration
}
}
Token {
Symbol
}
QuoteToken {
Symbol
}
Price {
Ohlc {
Open
High
Low
Close
}
}
Volume {
Base
Usd
}
}
}
}
Top traders of the pool
Wallets ranked by USD volume in the pool over the last day, with buy and sell counts. Fixing Token to WETH counts each swap once. Saved query here.
query SlipstreamPoolTopTraders {
Trading {
Trades(
where: {
Pair: {
Market: { Network: { is: "Optimism" } }
Pool: { Address: { is: "0x478946bcd4a5a22b316470f5486fafb928c0ba25" } }
Token: { Address: { is: "0x4200000000000000000000000000000000000006" } }
}
Block: { Time: { since_relative: { hours_ago: 24 } } }
AmountsInUsd: { Quote: { lt: 10000000 } }
}
orderBy: { descendingByField: "volumeUsd" }
limit: { count: 25 }
) {
Trader {
Address
}
count
buys: count(if: { Side: { is: "Buy" } })
sells: count(if: { Side: { is: "Sell" } })
volumeUsd: sum(of: AmountsInUsd_Quote)
}
}
}
Whale swaps on Slipstream
Swaps above 50,000 USD across all Slipstream pools in the last day, largest first. Turn it into a stream for a live large-trade alert. Saved query here.
query SlipstreamWhaleSwapsOptimism {
Trading {
Trades(
where: {
Pair: { Market: { Network: { is: "Optimism" }, Protocol: { is: "velodrome_slipstream" } } }
Block: { Time: { since_relative: { hours_ago: 24 } } }
AmountsInUsd: { Quote: { gt: 50000, lt: 10000000 } }
}
orderBy: { descending: AmountsInUsd_Quote }
limit: { count: 25 }
) {
Block {
Time
}
Side
Trader {
Address
}
AmountsInUsd {
Quote
}
Pair {
Token {
Symbol
}
QuoteToken {
Symbol
}
Pool {
Address
}
}
TransactionHeader {
Hash
}
}
}
}
Frequently Asked Questions
What is Velodrome Slipstream?
Velodrome's concentrated-liquidity pool type. Liquidity providers place liquidity in a price range, as in Uniswap v3, and pools of the same pair can exist at several fee tiers.
How do I filter Slipstream trades?
Filter Pair.Market.Protocol on velodrome_slipstream in the Trading cube, or Trade.Dex.ProtocolName on velodrome_slipstream in DEXTrades.
How do I find a Slipstream pool address?
Run the top pools query. Pair.Pool.Address is the pool contract; use it as the filter in the pool queries.
Why does WETH/USDC appear more than once?
Each fee tier is its own pool with its own address, liquidity and price, so one pair can have several Slipstream pools.
How far back does the data go?
The Trading cube keeps about a month. For older swaps use DEXTrades with dataset: combined on the EVM root and the same protocol name.
Related pages
Ready to run this in production?
Get an API key and run these queries in minutes, or talk to us about plans and enterprise delivery.