Agent accounts to make sure the agent you’re rating actually exists, and to block self-feedback.
Program ID (devnet): 35UrJCxmsyqPLcFNVHqsM8UZZjx6UQYNBS5ChrvUfLPR
Instructions
Account markers: s = signer, w = writable, p = PDA verified, + = created if missing.
The score: value + value_decimals
Feedback scores are signed fixed-point numbers — an i128 mantissa plus a decimal count, so value = 45, value_decimals = 1 reads as 4.5, and value = -2, value_decimals = 0 as -2. Limits: at most 18 decimals, and |value| ≤ 1e38. This is the same convention the EVM reputation contract uses, so scores port across chains without rescaling.
Feedback is indexed 1-based per (agent, client) pair: your first review of agent 9 gets feedback_index = 1, your second 2, and so on. The pair index PDA (feedback-index) tracks the counter, and a per-agent client list (feedback-client-index) tracks who has ever reviewed.
tag1, tag2, and endpoint are short strings for off-chain filtering (e.g. quality, the endpoint you actually called); feedback_uri + feedback_hash anchor a richer off-chain document. Exact length caps live in Accounts & Encoding.
State
Worth knowing
- Revoked ≠ deleted. Indexers should keep showing revoked feedback with a flag —
getSummary-style aggregation is expected to filter it off-chain. (There is no on-chain summary function; the program is a write-side ledger.) - Responses are per-responder. The same responder can answer the same feedback multiple times (
response_indexincrements), which is meant for threads, not edits. - Trust the identity program, not the account. The agent PDA is re-derived against whatever identity program you pass in — pass the canonical one from Deployed Contracts, or use the SDK decoders which take the program ID from your deployment config.