X
3sealed47attest1slash21,000bonded

Solana Agent Trust Registry · ERC-8004 port

Trust is stamped,
not claimed.

Every torii on this path carries an agent's bond. Enter the registry — verify identity, reputation, and validation in three seconds.

Try:
$HANKO CAgMfmX6GobJuZQhCwRxBnhYybsTPz1aQHViqn7hCpump
Scroll to walk the path
3agents sealed47attestations1slashed21,000bonds locked

Section 2 · Void

The path
had no gate.

Five open spaces where Solana agents had no verification surface. Hanko puts a torii at each one.

  1. 01

    identity gap

    No ERC-8004 on Solana

    Ethereum shipped Trustless Agents in 2025. Solana had no port — so any wallet could roleplay as a trusted operator.

  2. 02

    provenance gap

    Agent wallets are anonymous

    A pubkey with a Twitter bio isn't an identity. Without a signed AgentCard + domain binding, provenance is folklore.

  3. 03

    handshake gap

    A2A carries no trust

    Google's Agent-to-Agent protocol negotiates capability but not credit. A2A cards fly around unsigned and unverified.

  4. 04

    settlement gap

    x402 pays before it verifies

    HTTP 402 unlocks payment rails for agents — but no shared registry answers should you pay this counterparty?

  5. 05

    adversarial gap

    Scams have no cost

    Without a bond, a bad agent respawns. Slashing needs stake, and stake needs a registry.

Section 3 · Sando

Three registries,
one path.

ERC-8004's three-part registry, ported to Anchor. Identity says who. Reputation says how they've behaved. Validation says prove it again, now.

PDA seeds

["agent", agent_pubkey]

Every agent posts a signed A2A AgentCard, a domain, and an initial $HANKO bond. The PDA is derived from the agent pubkey — one shrine per signer.

Account layout

  • · owner: Pubkey
  • · agent: Pubkey
  • · agentcard_uri: String (JWS URL)
  • · domain: String
  • · bond_amount: u64
  • · status: Sealed | Slashed | Pending

Instructions

  • register_agent

    (uri, domain, bond) → AgentIdentity

  • update_agentcard

    (uri) → AgentIdentity

  • bind_domain

    (domain, dns_proof) → AgentIdentity

Backing spec

ERC-8004 draft · A2A v1.0 signed AgentCards · Solana Attestation Service · Ed25519 typed data (EIP-712 pattern).

Section 4 · Stations

Six stations
along the sando.

Each station is a lantern along the path — a working module wired into the Anchor registry suite.

01 · bond

Stake

$HANKO locked at registration. Bonds compound karma but freeze until slash windows close.

hanko-cli stake --agent <pubkey> --amount 500
02 · adversarial

Slash

Proven fraud burns 50% of the bond and pays the remaining 50% to the reporter. Slashes tilt the torii permanently.

hanko-cli slash --agent <pubkey> --evidence <sha256>
// resolved by registry governance
03 · reputation

Karma

0..1000 score = registration days + weighted attestations + validation success − slash penalty.

hanko-cli karma <pubkey>  // → { score: 912, tier: sealed }
04 · settlement

x402 Middleware

@hankolabs/x402-middleware — a one-line guard that rejects unregistered agents before payment clears.

app.use(hankoGuard({ minKarma: 500 }));
app.use(x402PaymentRequired);
05 · browser

HANKO Lens

Chrome MV3 extension. Any Solana pubkey rendered in a page gets an inline seal — sealed, unknown, or slashed.

chrome://extensions → Load unpacked → hanko-lens.zip
06 · integration

CLI + SDK

hanko-cli npm global, @hankolabs/sdk for TypeScript, GitHub Action for CI-time agent identity checks.

npm i -g hanko-cli
npm i @hankolabs/sdk

Section 5 · Bond

$HANKO —
the ink of the seal.

Bonds lock at registration and unlock at exit. Slashes burn 50% and pay the reporter 50%. No inflation — every seal is a real signature against real stake.

Bonds locked

21,000 bond tokens

Sum of every open agent bond, denominated in the registry bond mint.

Agents slashed

1

Each slash burns 50% of the bond and pays the reporter 50%.

$HANKO CAgMfmX6GobJuZQhCwRxBnhYybsTPz1aQHViqn7hCpump
10 $HANKO

Bronze

karma 0 – 249
  • Registration open·
  • Attestations counted·
  • Bond eligible for slash
100 $HANKO

Silver

karma 250 – 549
  • Higher x402 rate cap·
  • Public karma badge·
  • Lens amber highlight
500 $HANKO

Gold

karma 550 – 849
  • Priority in leaderboard search·
  • Signed embed badge exportable·
  • Custom domain shrine card
1,500 $HANKO

Sealed

karma 850 – 1000
  • Featured on Hanko homepage·
  • Nine-tail kitsune mascot·
  • Anchor CPI whitelist access

Section 6 · Seal

Bring your agent
through the torii.

Register a signed AgentCard, bind your domain, post a $HANKO bond, and receive a Sealed shrine card you can embed anywhere.

Command-line

run
npm i -g hanko-cli
hanko init
hanko seal \
  --card https://your.domain/.well-known/agent-card.json \
  --bond 500

TypeScript SDK

run
import { HankoClient } from "@hankolabs/sdk";

const hanko = new HankoClient({ cluster: "mainnet-beta" });
await hanko.registerAgent({
  agentCardUri: "https://your.domain/.well-known/agent-card.json",
  domain: "your.domain",
  bond: 500,
});
Kitsune messenger

The fox remembers.