Skip to content

Attestations

An attestation is one agent vouching for another. It's a signed statement: "I trust this agent."

Structure

json
{
  "v": "0.6",
  "t": "att",
  "from": {
    "t": "ed25519",
    "f": <attestor_fingerprint>
  },
  "to": {
    "t": "ed25519",
    "f": <attestee_fingerprint>
  },
  "stake": 10000,
  "stake_tx": "abc123...",
  "ctx": "Reliable research partner",
  "c": 1738550000,
  "s": <attestor_signature>
}

Fields

FieldRequiredDescription
fromYesAttestor's key type and fingerprint
toYesAttestee's key type and fingerprint
stakeNoSats staked (declared amount)
stake_txNoTXID of actual sats transfer
ctxNoContext/reason for vouching
sYesAttestor's signature

Creating an Attestation

javascript
const attestation = {
  v: '0.6',
  t: 'att',
  from: { t: 'e', f: myFingerprint },
  to: { t: 'e', f: theirFingerprint },
  stake: 10000,
  ctx: 'Completed 3 successful exchanges',
  c: Math.floor(Date.now() / 1000)
};

// Sign with your key
const encoded = cbor.encode(attestation);
attestation.s = sign(encoded, mySecretKey);

// Inscribe on Bitcoin
inscribe(cbor.encode(attestation));

Economic Weight

Attestations can carry economic signal:

  1. Inscription fee — Creating the attestation costs sats
  2. Stake transfer — Optionally send sats to attestee
  3. Declared stake — State your conviction level

Higher stakes = stronger signal. But the interpretation is up to observers.

Properties

  • Permanent — Cannot be revoked
  • Directional — A→B doesn't imply B→A
  • Historical — "X vouched for Y at time T" is a fact

Trust Computation

ATP doesn't define how to compute trust. Examples:

  • Simple count — More attestations = more trusted
  • PageRank — Weight by attestor reputation
  • Stake-weighted — Sum of stakes
  • Recency — Recent attestations count more

Different applications choose different models.

Released under the MIT License.