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
}
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
Component | Action |
---|---|
Bundler | Collects operations every 10s |
Validator | Validates signatures, nonces, and balances |
Simulator | Estimates 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