Create and manage USDC escrows for agent-to-agent payments on Base Sepolia. 30% gas savings, batch operations, dispute resolution.
基于Base Sepolia网络、面向代理间USDC支付的生产级托管合约。
创建新的托管合约。返回托管ID。
typescript
// 使用 viem/wagmi
await writeContract({
address: 0x6354869F9B79B2Ca0820E171dc489217fC22AD64,
abi: ESCROW_ABI,
functionName: createEscrow,
args: [
0xRECEIVER_ADDRESS, // address 接收方
parseUnits(100, 6), // uint96 金额(USDC 6位小数)
Math.floor(Date.now()/1000) + 86400 // uint40 截止时间(24小时)
]
});
发送方提前释放付款(手动批准)。
typescript
await writeContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: release,
args: [BigInt(escrowId)]
});
截止时间过后1小时检查期内,任何人可调用。
typescript
// 首先检查是否就绪
const ready = await readContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: canAutoRelease,
args: [BigInt(escrowId)]
});
if (ready) {
await writeContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: autoRelease,
args: [BigInt(escrowId)]
});
}
发送方在前30分钟内取消。
typescript
await writeContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: cancel,
args: [BigInt(escrowId)]
});
任一方标记争议以进行仲裁。
typescript
await writeContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: dispute,
args: [BigInt(escrowId)]
});
相比单笔交易节省41% gas。
typescript
await writeContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: createEscrowBatch,
args: [
[addr1, addr2, addr3, addr4, addr5], // address[] 接收方列表
[100e6, 200e6, 150e6, 300e6, 250e6], // uint96[] 金额列表
[deadline1, deadline2, deadline3, deadline4, deadline5] // uint40[] 截止时间列表
]
});
相比单笔交易节省35% gas。
typescript
await writeContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: releaseBatch,
args: [[id1, id2, id3, id4, id5]]
});
获取托管详情。
typescript
const escrow = await readContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: getEscrow,
args: [BigInt(escrowId)]
});
// 返回:[sender, receiver, amount, createdAt, deadline, state]
// state: 0=活跃, 1=已释放, 2=争议中, 3=已退款, 4=已取消
检查是否可自动释放。
typescript
const ready = await readContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: canAutoRelease,
args: [BigInt(escrowId)]
});
// 返回:布尔值
高效批量查询(gas优化)。
typescript
const result = await readContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: getEscrowBatch,
args: [[id1, id2, id3, id4, id5]]
});
// 返回:[states[], amounts[]]
typescript
import { createPublicClient, createWalletClient, http } from viem;
import { baseSepolia } from viem/chains;
import { privateKeyToAccount } from viem/accounts;
const ESCROW_ADDRESS = 0x6354869F9B79B2Ca0820E171dc489217fC22AD64;
const USDC_ADDRESS = 0x036CbD53842c5426634e7929541eC2318f3dCF7e;
const account = privateKeyToAccount(0xYOURPRIVATEKEY);
const walletClient = createWalletClient({
account,
chain: baseSepolia,
transport: http()
});
const publicClient = createPublicClient({
chain: baseSepolia,
transport: http()
});
// 1. 授权USDC
const approveTx = await walletClient.writeContract({
address: USDC_ADDRESS,
abi: [{
name: approve,
type: function,
inputs: [
{ name: spender, type: address },
{ name: amount, type: uint256 }
],
outputs: [{ name: , type: bool }],
stateMutability: nonpayable
}],
functionName: approve,
args: [ESCROW_ADDRESS, parseUnits(100, 6)]
});
await publicClient.waitForTransactionReceipt({ hash: approveTx });
// 2. 创建托管
const createTx = await walletClient.writeContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: createEscrow,
args: [
0xRECEIVER_ADDRESS,
parseUnits(100, 6),
Math.floor(Date.now()/1000) + 86400
]
});
const receipt = await publicClient.waitForTransactionReceipt({ hash: createTx });
console.log(托管已创建:, receipt.transactionHash);
// 3. 稍后:释放付款
const releaseTx = await walletClient.writeContract({
address: ESCROW_ADDRESS,
abi: ESCROW_ABI,
functionName: release,
args: [escrowId]
});
await publicClient.waitForTransactionReceipt({ hash: releaseTx });
console.log(付款已释放!);
| 操作 | Gas消耗 | 1 gwei下的费用 |
|---|---|---|
| 单次创建 | ~65k | ~0.000065 ETH |
| 单次释放 |
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 trust-escrow-1776363980 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 trust-escrow-1776363980 技能
skillhub install trust-escrow-1776363980
文件大小: 2.99 KB | 发布时间: 2026-4-17 14:22