build a DeFi app on Arbitrum One
Arbitrum One is the registry's DeFi wedge: deep liquidity, mature infrastructure, and the broadest verified protocol coverage. A credible DeFi stack pairs liquidity with a low-latency oracle, indexing, automation, and multisig admin — using protocols the registry verifies for Arbitrum One.
Also available as JSON · Markdown
Recommended stack
Uniswap
Core liquidity and AMM routing — the deepest on-chain liquidity surface on Arbitrum One.
Pyth Network
Low-latency pull-based price feeds for pricing, collateral, and liquidation logic.
The Graph
Subgraph indexing for positions, pools, and activity instead of hand-rolling an indexer.
Gelato
Keepers and event-driven execution for liquidations, rebalances, and limit orders.
Considered and excluded
- biconomy — Account abstraction and paymasters are orthogonal to a DeFi protocol's core; add only if gasless UX is a product requirement.
- chainlink — A strong alternative oracle; pick one price-feed provider rather than wiring two unless you need cross-validation.
Risks
- Arbitrum's sequencer and finality timing affect oracle staleness and liquidation safety — tune heartbeats accordingly.
- Confirm each dependency's Arbitrum One contract addresses; deployment coverage varies by protocol.
Next steps
- Point your deployment and RPC at Arbitrum One (chain id 42161) and verify each dependency's addresses.
- Pick a single primary oracle and define staleness/heartbeat thresholds for liquidations.
- Stand up a subgraph for positions and pool state before building dashboards.
What the agent receives
The intent page exposes the same structured recommendation shape agents should use: matched intent, stack roles, readiness scores, difficulty, risks, next steps, and registry version.
{
"intent": "I want to build a DeFi app on Arbitrum One",
"matched_intent": "arbitrum-defi-app",
"recommended_stack": [
{
"slug": "uniswap",
"name": "Uniswap",
"role": "supporting_protocol",
"readiness_score": 94,
"integration_difficulty": "medium",
"reason": "Core liquidity and AMM routing — the deepest on-chain liquidity surface on Arbitrum One."
},
{
"slug": "pyth",
"name": "Pyth Network",
"role": "oracle_and_price_data",
"readiness_score": 82,
"integration_difficulty": "medium",
"reason": "Low-latency pull-based price feeds for pricing, collateral, and liquidation logic."
},
{
"slug": "the-graph",
"name": "The Graph",
"role": "indexing_and_data",
"readiness_score": 80,
"integration_difficulty": "medium",
"reason": "Subgraph indexing for positions, pools, and activity instead of hand-rolling an indexer."
},
{
"slug": "gelato",
"name": "Gelato",
"role": "automation",
"readiness_score": 79,
"integration_difficulty": "medium",
"reason": "Keepers and event-driven execution for liquidations, rebalances, and limit orders."
},
{
"slug": "safe",
"name": "Safe",
"role": "supporting_protocol",
"readiness_score": 80,
"integration_difficulty": "low",
"reason": "Multisig treasury and admin control over protocol parameters and upgrades."
}
],
"excluded_candidates": [
{
"slug": "biconomy",
"reason": "Account abstraction and paymasters are orthogonal to a DeFi protocol's core; add only if gasless UX is a product requirement."
},
{
"slug": "chainlink",
"reason": "A strong alternative oracle; pick one price-feed provider rather than wiring two unless you need cross-validation."
}
],
"risks": [
"Arbitrum's sequencer and finality timing affect oracle staleness and liquidation safety — tune heartbeats accordingly.",
"Confirm each dependency's Arbitrum One contract addresses; deployment coverage varies by protocol."
],
"next_steps": [
"Point your deployment and RPC at Arbitrum One (chain id 42161) and verify each dependency's addresses.",
"Pick a single primary oracle and define staleness/heartbeat thresholds for liquidations.",
"Stand up a subgraph for positions and pool state before building dashboards."
],
"generated_with": "composewith.eth",
"registry_version": "2026.06.10-8752c9d"
}