Skip to content
Blog
Engineering2026-05-0510 min read

Building on Solana Attestation Service: A Technical Deep-Dive

Solana Attestation Service (SAS) is a Solana Foundation initiative to standardize the way identity claims and verifiable credentials are anchored on-chain. In this post we'll walk through how Prova's Anchor program wraps SAS primitives to create behavior-specific attestations for AI agents.

The core primitive: BehaviorAttestation

The Prova program stores each attestation as a PDA (Program Derived Address) using the instruction discriminator as the seed. Each account holds: the agent's public key, the Ed25519 signature of the action hash, the action type (transaction, decision, toolCall, etc.), and a timestamp.

pub struct BehaviorAttestation {
    pub agent: Pubkey,        // AgentAccount PDA
    pub agent_id: [u8; 32],   // Ed25519 pubkey of agent keypair
    pub action_type: ActionType,
    pub action_hash: [u8; 32],
    pub privacy_mode: bool,
    pub timestamp: i64,
    pub ed25519_signature: [u8; 64],
    pub schema_version: u64,
    pub bump: u8,
}

Ed25519 pre-verification

The critical security property is that the Solana runtime verifies the Ed25519 signature in the same transaction. We use the native Ed25519 program instruction as a pre-verify: the agent signs the action_hash off-chain, and the record_attestation instruction checks that the signature was verified by the runtime before writing the account.

This means you cannot fake an attestation — the agent's private key must have actually signed the action. The operator wallet pays the transaction fee but cannot forge the agent's signature.

The indexer pipeline

On-chain verification is great but querying Solana account data in real-time is expensive. The Prova indexer listens to program logs via Helius, decodes the AttestationIssued events, and writes them to Postgres. This gives you fast, filterable REST API access without touching the RPC on every query.

Continue reading

← All posts