Overview
The V1 contracts implement an intent-based reward settlement flow. A merchant deposits USDC, the platform creates a reward intent, a solver locks and fulfills it, and the recipient receives funds minus a small solver fee. V1 contracts are non-upgradeable and single-tenant. They remain deployed for backward compatibility, but new deployments use the V2 Task Pool system.Settlement Flow
IntentRegistry
Central observability ledger tracking all reward intents across the system.Functions
IntentRecord Struct
Events
PodiumOriginSettler
Manages merchant deposits, intent creation, fund locking, and the origin side of settlement.Intent Lifecycle
Duration Constraints
- Minimum: 5 minutes
- Maximum: 24 hours
Functions
RewardIntent Struct
Intent ID Generation
Intent IDs are deterministic — the same inputs always produce the same ID:Events
Cancel Flow
Cancellation is available for intents that haven’t been locked by a solver:- Only
Pendingintents can be cancelled - The merchant (or contract owner) calls
cancelIntent(intentId) - Status is set to
Cancelled - The escrowed amount is returned to the merchant’s balance
IntentCancelledevent is emitted
PodiumDestinationSettler
Handles the destination side: solver fulfills the intent by transferring funds to the recipient and collecting proof.Fee Structure
- Solver fee: 0.1% (10 basis points) —
SOLVER_FEE_BPS = 10 - Recipient receives:
amount - (amount × 10 / 10000) - Solver keeps the fee as payment for fulfillment
Functions
FulfillmentProof Struct
Events
Fulfillment Flow
- Solver calls
fulfillIntent(intentId, token, recipient, amount) - Contract transfers
amount - feeto recipient viaIERC20.transferFrom - Fee (0.1%) is retained in the contract, credited to solver
FulfillmentProofis created and stored- Contract calls
OriginSettler.markFulfilled()to update origin status IntentFulfilledevent emitted with full details- Solver can later call
claimRewards(token)to withdraw accumulated fees
Deployed Networks
V1 contracts use canonical USDC on mainnet (
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913) and a deployed MockUSDC on testnets.
V1 vs V2 Comparison
For new integrations, use the V2 Task Pool system.

