NIP-332

assumeUTXO Attestations over Nostr

Who verified this snapshot? An assumeUTXO snapshot is a UTXO set at a block, identified by its hash. Today a node trusts only the hashes compiled into its own software, and the record of who else checked them is scattered across review threads. NIP-332 defines a single regular Nostr event (kind 3332) in which a node says, under its own key, that it computed the hash itself or loaded the snapshot and validated the chain behind it. Free to make, permanent once made: a wrong attestation stays visible, so a key's history is its reputation.

Latest Attestations connecting…

subscribing to relays…

How It Works

Example Event

The event from the specification, signed by a throwaway key during testing; the first real attestation will replace it here. In the event, content is a single string, the canonical statement escaped; it is shown here parsed and indented so it can be read.

{
  "kind": 3332,
  "pubkey": "c77fba35e5cdf0f3e7c37655c6ccd19924c462f5ae9629cf2f9fa0950a59199d",
  "created_at": 1792132900,
  "tags": [
    ["v", "0.0.1"],
    ["network", "txbt4"],
    ["height", "150307"],
    ["hash", "000000000017ec2251d81c8d2ca401c713e98e85196c7f660a4088a7ca57b1cc"],
    ["txoutset_hash", "372bfcaeef1e93892acccda9e700b00bf90f45d73746d69959d33620a3df5518"],
    ["method", "recomputed"],
    ["implementation", "/Satoshi:29.4.2/Knots:20260508/Plumb:6/"],
    ["client", "assumeutxo sign", "https://play-grounds.github.io/assumeutxo/sign/", "0.0.1"],
    ["t", "attestation"], ["t", "assumeutxo"], ["t", "txbt4"]
  ],
  "content": {
    "v": "0.0.1",
    "@type": "Attestation",
    "subject": {
      "network": "txbt4",
      "genesis": "00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043",
      "height": 150307,
      "blockHash": "000000000017ec2251d81c8d2ca401c713e98e85196c7f660a4088a7ca57b1cc",
      "txoutsetHash": "372bfcaeef1e93892acccda9e700b00bf90f45d73746d69959d33620a3df5518",
      "hashType": "hash_serialized_3",
      "coins": 14230182,
      "chainTxCount": 14813091,
      "fileSha256": "86118db3a692b7c64bd4d9aef51a401f09722b9e92acb2826e7e76ac964529cd"
    },
    "claim": {
      "method": "recomputed",
      "chainstate": "full",
      "validated": true,
      "implementation": "/Satoshi:29.4.2/Knots:20260508/Plumb:6/",
      "build": "v29.4.2.knots20260508.plumb6",
      "commit": "532e1eb168b743c5500d9fec0aad73ad6abfd0ac",
      "binarySha256": "a454b330e6fefeac983856ca00a924e21aadf59de5794de4165392eb776416f6",
      "computedAt": "2026-10-16T06:17:56Z",
      "note": "tool test, throwaway key"
    }
  },
  "id": "707332a2ca8390e147fc599bcdfe88dacf7a59b2c0e470a7aba1e15d9af441da",
  "sig": "f17ab2c3b1e5ba74eeba6e778f7cba9974a8a80e9f3e9e8e5e855e15c301338a938bece0fb5453433116f33b5ced3c8b2cd04267bf05a015cba48b8b294f9ecf"
}

Subscribe via Nostr

["REQ", "attestations", {
  "kinds": [3332],
  "#network": ["tbtc4"],
  "#height": ["150000"]
}]

Or by #txoutset_hash for one snapshot, or authors for everything a key has attested. See the full specification.

Implementations