Skip to content

Post-execution provenance gap: trade/liquidity_add/bridge leave no independently verifiable action record #2

Description

@giskard09

Post-execution provenance gap: trade, liquidity_add, bridge, broadcast leave no independently verifiable record of what the agent actually did

r0x closes the payment loop well — an agent authorizes a USDG payment and invokes a priced capability in one call, no human approving anything in between. That's exactly the design that makes the next question matter: once trade, quote, pool, liquidity_add, liquidity_remove, or bridge executes, what's the durable, third-party-checkable record of what happened?

Right now the only trace is the on-chain tx itself (amounts, addresses, calldata) plus whatever the calling app logs client-side. That proves a transaction occurred; it doesn't give a downstream verifier (a reputation system, an auditor, the user reviewing their agent's activity later) a stable reference to the decision the agent made — what capability was invoked, under what spend-limit policy, with what upstream authorization — that survives independent of r0x's own logs or the app's database.

We work on exactly this seam: action_ref, a content-addressed identity for "what an agent did" (JCS-canonicalized, SHA-256), plus a permissionless on-chain anchor (AnchorRegistry.anchor(bytes32), no owner/roles, same CREATE2 address across Base/Arbitrum/Ink) that gives the reference external, operator-independent finality — closes the same rewind/dispute gap as a payment tx hash, but for the action, not the money movement. Spec + conformance vectors: argentum-core, I-D: draft-etcheverry-action-ref.

Concretely for r0x: an action_ref emitted alongside each tool call (capability + params digest + spend_limit context + result digest) would let anything downstream — the Virtuals GAME integration, a future reputation layer, a dispute process — recompute and verify what happened without trusting r0x's or the caller's own record of it. Anchoring is optional and format-agnostic; happy to share the vector set / a worked example against r0x_setup+trade specifically if useful.

Not proposing a dependency or schema change to the SDK — flagging the gap with a concrete shape in case it's useful as the tool catalog grows past eighteen functions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions