Skip to content
Dactilar

PROTOCOL · TECHNICAL REFERENCE

How Dactilar proves an agent is who it says it is

One NFT per agent, three on-chain registries and a short-lived Pass that any platform checks in a single call. Built on open standards, deployed on opBNB.

on-chain registries
3on-chain registries
ERC-8004 requirements
28/28ERC-8004 requirements
live testnet transactions
5live testnet transactions
per transaction on opBNB
< $0.001per transaction on opBNB

01 / Overview

One NFT. Three registries.

AI agents today have no verifiable identity, no track record and no off-switch. Dactilar gives every agent a permanent on-chain identity, then layers trustless reputation and third-party validation on top: a full trust stack anyone can query.

  • REGISTRY 01

    Identity

    ERC-721 · BAP-578

    • One NFT minted per agent: the token is the identity.
    • Attestations notarize real-world proofs on-chain.
    • BAP-578 lifecycle: Active / Paused / Terminated.
    • Permanent agent wallet address.
  • REGISTRY 02

    Reputation

    getSummary()

    • Clients submit scored feedback after each deal.
    • Feedback is stored permanently; the agent can respond.
    • Aggregate 0–100 trust score.
    • Queryable by anyone, anytime.
  • REGISTRY 03

    Validation

    validationResponse()

    • Third-party validators independently assess agents.
    • Validation scores stored permanently on-chain.
    • Open request system: anyone can ask for a validation.
    • Results callable on demand.

One NFT / Three registries / Full trust stack.

02 / Architecture

The NFT is the agent

A single register() call mints the identity NFT, where agentId = tokenId. Transfer the token and the identity, reputation and every byte of metadata move with it.

DACTILAR / AGENT

ACTIVE

#1042

Orvium Sales Agent

Aggregate trust score

92/100

Standard
ERC-721 · BAP-578
Lifecycle
Active / Paused / Terminated
Vault
0x8E03…05Cb
Valid until
2027

THE AGENT IS THE NFT

Dactilar Identity NFT

register() → agentId = tokenId

  • Identity

    ERC-8004 · BAP-578

  • Reputation

    getSummary()

  • Validation

    validationResponse()

[ I ] Identity
Attestations, BAP-578 lifecycle state and the permanent agent wallet, all bound to one token.
[ R ] Reputation
The client feedback loop: scores written on-chain, appendResponse() for the agent, getSummary() for everyone.
[ V ] Validation
Independent third-party scoring with validationResponse() callable on-chain.

BAP-578 lifecycle

  • Activechecks can pass
  • Pausedall checks denied, reversible
  • Terminatedpermanent

03 / Agent ID

A global, chain-aware agent ID

Every agent is addressed by a CAIP-10-style identifier: the chain, the registry contract and the token ID. Verifiers can resolve it on any supported network without a lookup service.

eip155:5611:0x8E036e205ff434D62F132Cf2471eC868728205Cb#1042

eip155
Namespace: EVM chains
5611
Chain ID (opBNB Testnet)
0x8E036e…05Cb
ERC-8004 identity registry
#1042
Token ID = agent ID

04 / Verification flow

From registration to a one-call check

Five steps take an agent from unknown to verifiable. Only the result of each step lives on-chain; documents and secrets never do.

  1. Register

    register()

    Mints the identity NFT on opBNB. Gas is sponsored, so owners never need tokens.

  2. Prove control

    /.well-known/dactilar.json · EIP-712

    The owner publishes a nonce on the agent's domain and signs a typed EIP-712 message with the agent wallet. ERC-1271 covers smart-contract wallets.

  3. Verify the owner

    createAttestation()

    A licensed KYB/KYC partner checks the business or person. Dactilar writes only the result and a hash as an Owner verified attestation.

  4. Issue a Pass

    dpass_v1 · 15 min

    The agent sends a short-lived signed token in the Dactilar-Pass header. Passes rotate automatically and stop issuing the moment an agent is paused.

  5. Check

    POST /v1/verify

    The verifier's policy is evaluated against the live registry state at the latest block: owner verified, minimum score, status, allowed chains.

POST /v1/verify · request
{
  "pass": "dpass_v1.eyJhZ2VudCI6IjEwNDIi…",
  "policy": "pol_demo_merchant"
}
200 OK · response · 84 ms
{
  "decision": "allow",
  "agent": "eip155:5611:0x8E03…05Cb#1042",
  "profile": {
    "owner_verified": true,
    "score": 92,
    "status": "active"
  },
  "block": 61204882
}

05 / Contract interface

Core functions

The calls every integration uses, grouped by registry. All are public and queryable by anyone.

FUNCTIONREGISTRYCALLED BYWHAT IT DOES
register()IdentityOwnerMints the agent NFT; agentId = tokenId.
updateAgentMetadata()IdentityOwnerSets BAP-578 persona, endpoints and vault address.
setStatus()IdentityOwnerMoves the agent between Active, Paused and Terminated.
createAttestation()IdentityIssuerNotarizes a real-world proof with an expiry.
verifyAttestation()IdentityAnyoneChecks an attestation is valid, unexpired and not revoked.
giveFeedback()ReputationClientWrites a 0–100 score tied to an interaction receipt.
appendResponse()ReputationOwnerLets the agent reply publicly to feedback.
getSummary()ReputationAnyoneReturns the aggregate trust score and counts.
validationRequest()ValidationOwnerOpens a request for an independent validator.
validationResponse()ValidationValidatorStores the validator's 0–100 result permanently.

Who calls what

  • DeFi protocols

    Check an AI trading agent's owner and track record before it can manage funds.

    • getSummary()
    • verifyAttestation()
  • Marketplaces

    Buyers see a sales agent's reputation and attestations before engaging. No intermediary needed.

    • giveFeedback()
    • getSummary()
  • Agent platforms

    List only verified agents. Onboard them in one call and screen them with independent validation.

    • register()
    • validationRequest()

06 / Standards

Open standards, no proprietary forks

The first project to implement ERC-8004 and BAP-578 together. All OpenZeppelin standards deploy without modification. Zero custom tooling required.

  • ERC-8004

    Supported

    Trustless Agents: the three-registry pattern Dactilar is built on.

    28 / 28 requirements

  • BAP-578

    Supported

    Non-Fungible Agent: lifecycle and metadata.

    17 / 17 core

  • ERC-721

    Supported

    NFT backbone: each agent is a unique token.

    Full support

  • EIP-712

    Supported

    Typed signing for agent wallet verification.

    Full support

  • ERC-1271

    Supported

    Smart-contract wallet signatures.

    Full support

07 / Networks

Live today on opBNB

The full stack runs on opBNB Testnet with real, verified transactions. Mainnet deployment uses the same contracts and the same agent ID format.

NETWORKCHAIN IDREGISTRYSTATUS
opBNB Testnet56110x8E036e205ff434D62F132Cf2471eC868728205CbLive
opBNB Mainnet204Same contracts, same agent IDsNext

opBNB Testnet contracts

5 confirmed transactions · opbnb-testnet

  • register()AI agent minted as NFT, tokenId = 1confirmed
  • updateAgentMetadata()BAP-578 persona and vault address setconfirmed
  • giveFeedback()95/100 from an independent client walletconfirmed
  • validationRequest()Third-party validation requestedconfirmed
  • createAttestation()Identity notarized, valid until 2027confirmed

Why opBNB

  • Ultra-low fees

    < $0.001/tx

    Every feedback, attestation and validation stored affordably at agent scale.

  • EVM compatible

    100%

    ERC-721, EIP-712 and ERC-1271 deploy without modification.

  • BNB ecosystem

    Native

    BAP-578 is a BNB Application Proposal. We build where the ecosystem is heading.

08 / Integrations

Plug in where your agents already run

Use the SDK, call the REST API directly, or drop Dactilar into the agent protocols you already use.

  • SDK

    @dactilar/sdk · dactilar

    TypeScript and Python clients for register, Pass and verify.

  • REST API

    POST /v1/verify

    One call returns allow or deny, reasons and the trust profile.

  • MCP server

    verify_agent

    Any MCP-capable agent can check a counterparty before it acts.

  • x402 middleware

    @dactilar/x402

    Only verified agents reach and pay for your API.

  • Webhooks

    dactilar-signature

    Signed events when status, attestations or feedback change.

  • A2A agent cards

    SOON

    agent-card.json

    Verify agents straight from their A2A card.

  • Go SDK

    SOON

    dactilar-go

    Native Go client, in private beta.

Webhook eventsagent.pausedagent.terminatedattestation.revokedfeedback.created

09 / Security

What lives on-chain, and what never does

Dactilar records proofs, not personal data. Every claim is signed, expiring and revocable.

ON-CHAIN

  • Agent identity NFT and metadata URI
  • Lifecycle status and its full history
  • Attestation result, issuer, expiry and evidence hash
  • Feedback scores linked to interaction receipts
  • Validation requests and results

NEVER STORED

  • KYB/KYC documents, IDs or selfies
  • Personal data of owners or clients
  • Pass tokens (short-lived, never written to chain)
  • API keys and webhook secrets
  • Signed and expiring

    Passes last 15 minutes; attestations carry an expiry and can be revoked by their issuer.

  • Sybil-resistant feedback

    Only real interactions with a receipt can be rated, so scores can't be farmed.

  • Instant kill-switch

    Pausing takes effect within one block, everywhere the agent is checked.

10 / Roadmap

What ships next

  1. Q1 2027

    Spanish interface

    Console, profiles and docs in Spanish.

  2. Q2 2027

    Delegation & session keys

    Scoped, time-limited permissions revocable in one click.

  3. Q2 2027

    Analytics & alerts

    Anomaly detection and auto-pause rules.

  4. Q3 2027

    Selective disclosure (zk)

    Prove "owner verified" without revealing who the owner is.

  5. Q3 2027

    Attestation marketplace

    Buy checks from third-party issuers and auditors.

  6. 2027

    Stablecoin billing

    Pay plans in USDC or USDT.

  7. H2 2027

    BAP-578 learning memory

    Verifiable record of what an agent learned and when.