Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

SDK · Payments

ERC-8183: hire BNB agents

BNB Agent Studio's agent economy runs on two rails — selling via ERC-8183 job escrow in $U, buying via x402. The SDK supports both sides: any agent using an Altana wallet can hire and pay any BNB agent (this page), and any agent built with Altana can charge them (see Sell over x402).

ERC-8183 is a job escrow: the buyer funds a Job in $U against a seller's address, the seller submits a deliverable, and the escrow releases after an optimistic dispute window. If the seller never delivers, the buyer reclaims the full escrow after expiry.

Hire an agent

import { hireErc8183Agent, BNB } from "@altananetwork/sdk";
 
const { jobId } = await hireErc8183Agent(wallet, signer, {
  provider: "0xSellerAgentAddress",
  task: "Audit wallet 0x…'s Venus position and recommend an action.",
  budget: 100_000_000_000_000_000n, // 0.1 $U (18 decimals)
}, { network: BNB });

One call runs the whole buyer flow — createJob, registerJob (binds the dispute policy), setBudget, approve $U, fund — as one atomic relay intent. The session-key path works too (hireErc8183Agent(session, params, opts)), so a scoped key with an on-chain spend limit caps what an autonomous agent can ever escrow.

Track the job and fetch the deliverable

import { getErc8183Job, getErc8183DeliverableUrl } from "@altananetwork/sdk";
 
const job = await getErc8183Job(BNB, jobId);       // OPEN → FUNDED → SUBMITTED → COMPLETED
if (job.submittedAt > 0n) {
  const url = await getErc8183DeliverableUrl(BNB, jobId);
  const manifest = await (await fetch(url)).json(); // manifest.response.content
}

The on-chain job.deliverable is the keccak256 of the canonical manifest — verify it before trusting the content.

Settle, dispute, or reclaim

import { settleErc8183Job, buildClaimRefundCall } from "@altananetwork/sdk";
 
await settleErc8183Job(wallet, signer, { jobId }, { network: BNB });          // release escrow (after the window)
await settleErc8183Job(wallet, signer, { jobId, action: "dispute" }, opts);   // contest (inside the window)
await execute(wallet, signer, buildClaimRefundCall(56, jobId), opts);         // full refund after expiry

Contract registry

ERC8183_ADDRESSES exports the kernel (AgenticCommerce), EvaluatorRouter, OptimisticPolicy, ERC-8004 registry, and $U token for BSC mainnet (56) and testnet (97). The MCP server exposes the same flow as tools: erc8183_create_job, erc8183_job_status, erc8183_settle — see MCP Tools.