Workflow & Transaction Lifecycle

Workflow & Transaction Lifecycle

ERC-0 enables a 3-phase execution model:

  • Commit Phase (On-Chain)
  • ⚙️ Execution Phase (Off-Chain)
  • 📦 Finalization Phase (On-Chain)
// Simplified lifecycle in Solidity terms
contract ERC0 {
    function commit() external payable;                      // Phase 1
    function disperse(bytes calldata zkProof) external;      // Phase 3
}

zk proof diagram

Phase 1: Commit (On-Chain)

Step 1.1: Asset Locking

  • User calls commit() with ETH/tokens
  • Funds are escrowed in ERC-0 contract
  • Off-chain balance is initialized

Step 1.2: Project Registration

  • dApps register their operation handlers

Custom logic may include:

  • Token swaps
  • NFT transfers
  • Contract calls

Phase 2: Execution (Off-Chain)

Step 2.1: User Operation Signing

Users sign EIP-712 formatted messages:

{
  "to": "0xDEX...",
  "amount": "0.5 ETH",
  "nonce": 42,
  "deadline": 1735689600
}

Step 2.2: Mempool Processing

ComponentAction
BundlerCollects operations every 10s
ValidatorValidates signatures, nonces, and balances
SimulatorEstimates execution effects

Step 2.3: Proof Generation

# Pseudocode for ZK proof
circuit_inputs = {
    'old_state_root': '0xabc...',
    'new_state_root': '0xdef...',
    'txs_hash': '0x123...'
}
zk_proof = groth16_prover(circuit_inputs)

Phase 3: Finalization (On-Chain)

Step 3.1: Disperse Submission

Validator calls:

function disperse(
    bytes calldata zkProof,
    bytes32 newStateRoot,
    address[] calldata users,
    uint256[] calldata balances
) external;

Step 3.2: On-Chain Verification

  • ZK proof verification (~250k gas)
  • State root update
  • User balance adjustments
  • Emits events for indexing