Prepare: submit an SP1 proof for a policy (rung 2)
policy_proveAn unsigned transaction that submits a zk proof (SP1) that a wallet's action is what its policy outputs on committed inputs: prove(policy, publicValues, proof), with the bytes the SP1 guest and prover produced (zk/policy-runner). publicValues is 128 bytes, ABI-encoded (address wallet, bytes32 inputsHash, bytes32 actionHash, uint64 at); the wallet in it must have claimed the policy. Anyone may send it (the agent, its owner, a relayer); the registry checks the proof through the SP1 verifier with the policy's vkey and sets the wallet's rung to 2. Rung 0: a signature from the wallet ("I run policy H"), checked by nobody, defaults up to 250 USDG a day. Rung 1: a hardware attestation (a dstack TEE quote) that the wallet's key lives in an enclave running image H, verified off chain by Borro's keeper, which attests on chain; the raw quote is public, so anyone can re-verify; up to 500. Rung 2: a zk proof per action (SP1) that the action is what program H outputs on committed inputs, checked by the SP1 verifier contract at the registry; up to 1,000. rung 2 serves policies that are pure functions over Borro's public inputs, which no LLM-driven agent is; nothing proves which weights a closed model used. Simulated from the wallet; nothing is sent.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"wallet": "<wallet>",
"policy": "<policy>",
"public_values": "<public_values>",
"proof": "<proof>"
},
"name": "policy_prove"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| proof | Yes | The SP1 proof bytes, hex | |
| policy | Yes | The policy's hash (bytes32: 0x and 64 hex characters), keccak256 of its manifest | |
| wallet | Yes | The wallet's address (0x...); the transactions are built for it to sign | |
| public_values | Yes | The proof's public values, 128 bytes of hex |