hummusonrails / hummusonrails/arbitrum-x402-example

Post-payment action gap: settlement tx proves payment, not what the agent did with the data

Open
#2 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
1
Forks
0
PR merge metrics
No merged PRs in 30d

Description

The example closes cleanly at settlement — `txHash` lands in the response, Arbiscan link included. That proves the agent paid for access to `premium-market-data`.

It doesn't prove what the agent did with `{ btc: 71234.56, eth: 4567.89 }` after receiving it.

Your piece on the agent economy verification problem frames the inference layer — whether the model ran what it claimed. This is the layer above: whether the agent took the action it was authorized to take with the data it paid for. In automated trading, multi-agent pipelines, or any context where downstream decisions are auditable, that's the record regulators and auditors actually need.

The gap is visible in `server.ts` at `premiumContent()` — `requestId: crypto.randomUUID()` identifies the response but isn't anchored anywhere a third party can reference later. The buyer address and payment intent are already present in the verified `paymentPayload`; a post-settlement action record could derive from them directly:

```ts
const action_ref = sha256(jcs({
agent_id: /* buyer address from verified paymentPayload */,
action_type: "fetch.premium-market-data",
scope: resourceUrl,
timestamp: new Date().toISOString(),
}));
```

Anchored alongside `txHash`, the receipt proves both: payment settled on Arbitrum + this specific agent took this specific action with the data — independently recomputable without trusting the operator.

A worked fixture for the x402 flow is at `giskard09/argentum-core/examples/conformance/` — the spec is `draft-giskard-aeoess-action-ref` (IETF). Live trails at `argentum.rgiskard.xyz/trails`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Read server.ts at premiumContent() first, tracing the verified paymentPayload, txHash, and requestId flow; then compare the worked x402 fixture in giskard09/argentum-core/examples/conformance/ with draft-giskard-aeoess-action-ref. Done means the post-settlement action record is anchored alongside txHash and can be independently recomputed for the paid data action.

Written by the indexing model from the issue text.

Assessment

Tech stack
blockchain, typescript
Domain
backend-api-design, blockchain, payments
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.