Agent Inference Sharing Protocol (AISP) lets agents rent idle DIEM/Venice API capacity via USDC escrow. Providers list capped API keys; agents fund and receive keys automatically.
Agent: fund() → Backend sees Funded event → Key released → Agent uses Venice API
Provider: list() → Agent funds → Term expires → settle() → Provider paid (99%, 1% fee)
GET /api/listingsfund)contract.fund(listingId, termDays, diemAmount) → returns rentalIdPOST /api/key/{rentalId} with signed message diem-marketplace:get-key:{rentalId}:{timestamp}apiKey with Venice API until expiresAt (Unix timestamp)import { DiemAgent } from "diem-marketplace-sdk";
const agent = new DiemAgent({
signer: wallet,
contractAddress: "0x...",
backendUrl: "https://diem-marketplace-backend.fly.dev",
usdcAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
});
const listings = await agent.getListings();
const { apiKey, expiresAt } = await agent.rent(
listings[0].listingId,
termDays,
ethers.parseUnits(diemAmount, 6)
);
contract.list(pricePerDay, termDays, diemMin, diemMax) → listingIdPOST /api/keys with { listingId, apiKey, signature, timestamp }diem-marketplace:store-key:{listingId}:{timestamp}contract.settle(rentalId) → provider receives 99% (1% protocol fee)import { DiemProvider } from "diem-marketplace-sdk";
const provider = new DiemProvider({
signer: wallet,
contractAddress: "0x...",
backendUrl: "https://diem-marketplace-backend.fly.dev",
usdcAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
});
const listingId = await provider.createListing({
pricePerDay: ethers.parseUnits("0.80", 6),
termDays: 30,
diemMin: ethers.parseUnits("1000", 6),
diemMax: ethers.parseUnits("4000", 6),
apiKey: "vn-scoped-...",
});
| Path | Purpose |
|---|---|
| ------ | --------- |
sdk/src/agent.ts | DiemAgent: getListings, rent, getKey, getMyRentals |
sdk/src/provider.ts | DiemProvider: createListing, settle, revokeAndRefund |
backend/src/routes.ts | API routes: /api/listings, /api/keys, /api/key/:id |
contracts/DiemMarketplace.sol | On-chain escrow, 1% fee |
| Endpoint | Method | Purpose |
|---|---|---|
| ---------- | -------- | --------- |
/api/listings | GET | List rentable listings |
/api/listings/:id | GET | Single listing |
/api/keys | POST | Provider stores API key |
/api/key/:rentalId | POST | Agent retrieves key (signature required) |
/api/balance | POST | Check DIEM balance for API key |
/api/requests | POST | Create rental request |
All backend requests requiring auth use EIP-191 signing:
getKey: diem-marketplace:get-key:{rentalId}:{timestamp}storeKey: diem-marketplace:store-key:{listingId}:{timestamp}balance: apiKey in body (no signature)0xeeDa7657f2018b3b71B444b7ca2D8dE91b3B08f30x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913共 1 个版本