On-Chain Settlement
DUAL anchors platform state to the blockchain every 15 minutes through cryptographic proofs, creating an immutable audit trail and enabling trust without intermediaries.
Why On-Chain Settlement
Trust Without Intermediaries
No reliance on DUAL or any central authority. Cryptographic proofs verify state transitions directly on the blockchain.
Immutable Audit Trail
Every settlement is permanently recorded on-chain. Audit, verify, and reconstruct platform state at any point in time.
Regulatory Compliance
Verifiable proofs provide cryptographic evidence of transaction execution and settlement, supporting regulatory requirements.
Independent Verification
Validators and users can independently verify all settlements without trusting DUAL infrastructure.
Settlement Architecture
DUAL uses a two-phase model to combine instant responsiveness with absolute finality:
Checkpoint
Actions batch into sealed checkpoints every 15 minutes. Sequencer commits to ordering.
ZK Proof
Prover generates cryptographic proof proving checkpoint validity and state transitions.
L1 Submission
Proof and commitment data submitted to L1 smart contract verifier.
Confirmed
Contract verifies proof and updates on-chain state root. Settlement is final.
Two-Phase Model
Optimistic phase: Actions are instantly accepted and begin executing as soon as they reach the sequencer. Provides immediate user feedback and low latency. Final phase: Every 15 minutes, actions are sealed into a cryptographic checkpoint, proven, and anchored to L1. This creates absolute finality backed by on-chain state.
The Checkpoint-to-Chain Pipeline
1. Checkpoint Sealing
At fixed 15-minute intervals, the sequencer seals all actions received in the current window. A deterministic hash is computed from all state transitions, creating a commitment to the checkpoint's ordering and contents. This sealed checkpoint cannot be modified.
2. Proof Generation
The proving system (see ZK Rollup) generates a zero-knowledge proof. This proof cryptographically certifies that all state transitions in the checkpoint are valid according to DUAL's execution rules, without revealing individual transaction details.
3. Transaction Submission to L1
A relayer submits the proof and minimal commitment data (checkpoint hash, new state root, data availability commitment) to the settlement contract on the L1 chain (Ethereum, Polygon, Arbitrum, etc.). The transaction is included in an L1 block.
4. Confirmation and Finality
The contract verifies the proof in-chain. Once verified, the new state root is stored on-chain and cannot be reverted. The settlement is now final across all chains where the verifier is deployed.
What Goes On-Chain vs Off-Chain
On-chain: Proof, state root, data availability commitment, checkpoint hash
Off-chain but published: Full state diffs, action details, merkle proofs for individual verification
Chain Selection & Strategy
Why EVM-Compatible Chains
EVM chains provide the most mature ecosystem for zero-knowledge verification. DUAL's verifier contract is optimized for Solidity and can be deployed quickly across any EVM-compatible chain.
Supported chains include Ethereum, Polygon, Arbitrum, Optimism, Base, and others.
Multi-Chain Strategy
DUAL deploys verifier contracts on multiple chains. The same proof verifies settlement across all chains in parallel, ensuring consistency.
Allows investors and applications to verify settlement on their preferred chain without additional delay.
Chain Selection Criteria
Lower per-operation costs reduce settlement overhead. L2 chains (Arbitrum, Optimism) offer significant savings over Ethereum L1.
Different chains have different block times and finality guarantees. Ethereum provides the highest security; L2s offer faster finality.
Deploy on chains where your investors and applications already operate for seamless verification workflows.
Future: Cross-Chain Settlement
DUAL is exploring chain abstraction protocols to unify settlement verification across heterogeneous chains, enabling true interoperability without requiring multiple proofs.
Data Availability
What is Data Availability?
Data availability ensures that all data needed to verify platform state is publicly accessible. Without it, a malicious sequencer could commit to state that no one can verify or reconstruct. DA is critical for trust in decentralized systems.
DUAL's Approach
DUAL publishes complete state diffs alongside every checkpoint proof. This includes:
- • Ordered action logs from the checkpoint
- • Account state changes (balances, holdings, etc.)
- • Merkle proofs for individual transaction verification
- • Complete state root path for independent computation
All data is published on decentralized storage (IPFS) and indexed for efficient retrieval.
State Reconstruction
Any party can independently reconstruct the full platform state from published data. This enables independent validators to verify proofs without relying on DUAL, and provides an immutable audit trail for regulatory and forensic purposes.
Data Availability Approaches
Data stored on L1. High security, but expensive. Not suitable for high-volume systems.
Trusted group attests to data availability. Fast, but introduces trust assumptions.
Dedicated networks (Celestia, EigenDA). Good balance of cost and security.
DUAL's strategy: Full state diffs are published via IPFS and DA layers for redundancy. This ensures high availability while minimizing on-chain footprint. Investors can verify data availability through IPFS nodes and DA layer clients.
Finality Guarantees
DUAL provides three distinct levels of settlement finality, each with different guarantees and use cases:
Optimistic Confirmation (<1 second)
Your action is accepted by the sequencer and begins execution immediately. Provides instant user feedback and low-latency transactions.
Use when: Display feedback, quick status updates, responsive UX
Checkpoint Inclusion (~15 minutes)
Your action is sealed into a checkpoint and committed cryptographically. The ordering is now immutable, but not yet on-chain.
Use when: Prevent frontrunning, lock-in ordering, settlements that cannot be reordered
On-Chain Finality (~20 minutes)
Your action's proof is verified on-chain and the state root is updated. Settlement is now absolute and backed by the L1 blockchain. Cannot be reverted under any circumstances.
Use when: Regulatory requirements, large settlements, cross-chain bridges, irrevocable commitments
Choosing Your Finality Level
Most applications use optimistic confirmation for UX responsiveness and checkpoint inclusion for settlement certainty. On-chain finality is essential for settlements that interact with external systems or require maximum security guarantees.
Settlement Costs
Cost Breakdown
Settlement costs are amortized across all actions in a checkpoint:
Comparison: DUAL vs Direct L1
Per-action cost: $50-500+ (depending on chain and market)
Suitable for: High-value transactions, low-volume systems
Per-action cost: $0.01-0.50 (with 1000+ actions per checkpoint)
Suitable for: High-volume systems, retail transactions, frequent updates
Projected Costs at Different Volumes
| Actions per Checkpoint | Settlement Cost | Cost per Action |
|---|---|---|
| 100 | $10-20 | $0.10-0.20 |
| 500 | $10-20 | $0.02-0.04 |
| 1000+ | $10-20 | <$0.02 |
Developer Integration
Settlement Status API
Check the settlement status of any action:
GET /api/settlement/status/:actionId
Response:
{
"actionId": "action_xyz123",
"status": "finalized",
"optimistic": {
"confirmed": true,
"confirmedAt": "2026-03-16T12:00:00Z"
},
"checkpoint": {
"included": true,
"checkpointId": "cp_456",
"checkpointHash": "0x789...",
"sealedAt": "2026-03-16T12:15:00Z"
},
"finality": {
"onChain": true,
"txHash": "0xabc...",
"blockNumber": 18500000,
"verifiedAt": "2026-03-16T12:20:00Z"
}
}Example: Checking On-Chain Finality
import { DualClient } from "dual-sdk";
const client = new DualClient({
token: process.env.DUAL_API_KEY,
authMode: "api_key",
});
// Poll for on-chain finality
const settlement = await client.settlement.wait(actionId, {
level: "finalized", // Wait for on-chain finality
maxWaitMs: 60000 * 30 // 30 minutes
});
if (settlement.finality.onChain) {
console.log(
"Settlement final on chain:",
settlement.finality.txHash
);
} else {
console.log("Awaiting on-chain confirmation");
}Webhook Events
Fired when your action is sealed into a checkpoint. Contains checkpoint ID and hash.
Fired when the checkpoint's proof is verified on-chain. Contains L1 transaction hash and block number.
Independent Verification
Verify settlement directly on-chain without relying on DUAL APIs:
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider(
"https://eth-mainnet.g.alchemy.com/v2/..."
);
// DUAL verifier contract on Ethereum
const verifierAddress = "0x...";
const verifierABI = [...]; // ABI from DUAL docs
const verifier = new ethers.Contract(
verifierAddress,
verifierABI,
provider
);
// Check if checkpoint hash is verified on-chain
const checkpointHash = "0x789...";
const verified = await verifier.isCheckpointVerified(
checkpointHash
);
if (verified) {
console.log("Settlement confirmed on Ethereum");
const stateRoot = await verifier.getStateRoot(checkpointHash);
console.log("Current state root:", stateRoot);
}