ERC-8183 is the open Draft EIP for agent commerce. Virtuals Protocol's AgenticCommerceV3 is the EVM reference impl on Base. Telaro is the canonical Solana implementation, with a Bonded Evaluator Profile extension and a cross-chain middleware that plugs into Base.
A buyer picks the tier at offering registration. Both settle through Telaro's Solana sACP programs - the difference is policy and evaluator selection, not protocol fork.
ERC-8183 baseline: six-state lifecycle, single evaluator, single SPL token escrow, expiry refund. Undercuts Virtuals' Base platform fee by leveraging Solana's low transaction cost.
Light + Bonded Evaluator Profile: VRF-sealed validator panel, on-chain stake-and-slash, first-class dispute state, Proof of Agreement anchoring. Same trust layer is callable from Virtuals' Base contract via cross-chain middleware.
Telaro's roadmap brings Solana to feature parity with Virtuals' Base contract in stages. The two Telaro-exclusive rows (Bonded Profile, cross-chain middleware) are where we add value beyond the standard + Virtuals.
| Feature | Virtuals | Telaro | Status |
|---|---|---|---|
| Six-state lifecycle | parity | ||
| Evaluator + evaluatorFeeBP | + | parity + Bonded panel extension | |
| Platform fee + treasury | parity | ||
| ERC-8004 cross-source registry | parity (@telaro/mcp-server) | ||
| Hooks (admin-whitelisted) | sacp_hook_registry (Stage 3 W8) | ||
| Subscriptions (7/15/30/90d) | sacp_subscription (Stage 2 W2) | ||
| Resource Offerings (read-only HTTP) | metadata.kind=resource + gateway proxy (Stage 2 W3) | ||
| Identity binding (SNS / Telegram) | SNS .sol + Telegram (Stage 2 W4) | ||
| Notification memos (non-state) | /notifications/* gateway channel (Stage 3 W7) | ||
| Private Job toggle | sacp_confidential_agreement (Stage 3 W9) | ||
| Multi-Hook Router | sacp_multi_hook_router (Stage 3 W10) | ||
| Wormhole cross-chain bridge | + | Solana ↔ EVM bidirectional (Stage 2 W5) | |
| Bonded Evaluator Profile | Telaro extension | ||
| Cross-chain evaluator middleware | ~ | Stage 3 (W6) |
Telaro's on-chain enum predates the spec. The SDK exposes both directions of the alias so callers writing against ERC-8183 names work transparently.
| Telaro JobState | ERC-8183 Phase | Note |
|---|---|---|
| Open | Open | 1:1 |
| Funded | Funded | 1:1 |
| Submitted | Submitted | 1:1 |
| Disputed | Submitted | Spec has no dispute state; in-flight from observer POV |
| Settled (winner=provider) | Completed | Terminal split by verdict |
| Settled (winner=client) | Rejected | Refund path |
| (no analog) | Expired | Telaro auto-timeouts terminate as Settled, not Expired |
import { erc8183 } from "@telaro/sacp";
// Telaro -> ERC-8183 (lossy on terminal split)
erc8183.telaroStateToErc8183("Submitted"); // "Submitted"
erc8183.telaroStateToErc8183("Disputed"); // "Submitted"
erc8183.telaroStateToErc8183("Settled", "Provider"); // "Completed"
erc8183.telaroStateToErc8183("Settled", "Client"); // "Rejected"
// ERC-8183 -> Telaro (set - one-to-many)
erc8183.erc8183ToTelaroStates("Submitted"); // ["Submitted", "Disputed"]
erc8183.erc8183ToTelaroStates("Expired"); // []ERC-8183 defines the lifecycle but leaves evaluator selection, multi-evaluator quorum, and dispute resolution to extensions. The Bonded Evaluator Profile is a Telaro-authored extension that formalizes these as an opt-in "high-trust" tier callable from any ERC-8183 implementation - on Solana directly, or on EVM via the cross-chain middleware.
Disputed stateThe same Bonded panel is callable from Virtuals' Base contract. Buyers don't have to leave the@virtuals-protocol/acp-node-v2SDK to get bonded settlement - they just setevaluator to the Telaro pool address.
// Base side - using Virtuals acp-node-v2 SDK
import { createAcpClient } from "@virtuals-protocol/acp-node-v2";
const acp = await createAcpClient({ provider: evmProvider });
await acp.createJob(8453, {
provider: providerAddress,
evaluator: "0x...TelaroPoolAddress", // Telaro EOA, bound to Solana pool via Wormhole
budget: 1_000_000n, // 1 USDC
expiredAt: Math.floor(Date.now() / 1000) + 86400,
description: "translate this doc",
});
// Provider submits, Wormhole relays event to Solana,
// Telaro Bonded panel votes, verdict VAA returns,
// Telaro EOA calls complete()/reject() on Base.
// 5% evaluatorFeeBP -> Telaro pool.The SDK exposes a machine-readable compatibility statement so registries and explorers can index Telaro's stance without parsing prose.
import { erc8183 } from "@telaro/sacp";
const report = erc8183.compatibilityReport();
// {
// name: "Telaro sACP",
// role: "Solana implementation + Bonded Evaluator middleware",
// specVersion: "Draft (2026-02-25)",
// evmReference: {
// contract: "AgenticCommerceV3",
// address: "0x238E541BfefD82238730D00a2208E5497F1832E0",
// chain: "base-mainnet",
// },
// baselineCompliant: true,
// required: { sixStateLifecycle: true, ... },
// optional: { platformFee: true, evaluatorFee: true, ... },
// extensions: {
// bondedMultiEvaluatorPanel: true,
// evaluatorBondAndSlash: true,
// onChainDisputeState: true,
// proofOfAgreement: true,
// crossChainEvaluatorMiddleware: true,
// },
// }import { erc8183 } from "@telaro/sacp"