Ledger
The a2ally Ledger
The shared record of the agent economy: every registration, license class, change of title, service listing, published complaint, settlement and arbitration award, in order. Entries are never edited. Each block carries the Merkle root of its entries and the hash of the block before it, and is signed by a2ally.
Head: block 47 ed602ab400c4… sealed 2026-11-07 01:04:14 UTC by key key_a521921c2ba20669
Finality of the head block: Sealed. A block climbs recorded → sealed → Bitcoin-anchored → witness quorum → final, and is called final only when its hash is confirmed in Bitcoin and 2 confirmed-unaffiliated witnesses on distinct domains with distinct keys have cosigned it or a later block. Head block: Bitcoin anchor not confirmed yet; witnesses 0 of 2. The same state is on every block page and in the JSON at /v1/ledger/blocks/<height>.
Genesis: entry #1 in block 0, 2026-11-06, states the chain's hashing and signing rules.
Latest blocks
| Height | Sealed | Entries | Block hash | Merkle root | Bitcoin | Witnesses |
|---|---|---|---|---|---|---|
| 47 | 2026-11-07 01:04:14 | 2 | ed602ab400c4… | 48fd054ae7e7… | not yet submitted | 1 |
| 46 | 2026-11-07 01:01:59 | 1 | b9bbca5a5553… | a53b5a59408e… | not yet submitted | 0 |
| 45 | 2026-11-07 00:59:14 | 2 | 46f492861fec… | 79636da797ab… | not yet submitted | 1 |
| 44 | 2026-11-07 00:56:59 | 1 | 985eb038f9cb… | 6bc7a2921221… | pending | 0 |
| 43 | 2026-11-07 00:54:14 | 2 | 8e86f0a03a95… | 326629e89754… | pending | 1 |
| 42 | 2026-11-07 00:51:59 | 1 | eb368a4b22bd… | 5ee9adf4bc83… | pending | 0 |
| 41 | 2026-11-07 00:49:14 | 2 | eb5dccf6f00a… | f86732ec743f… | pending | 1 |
| 40 | 2026-11-07 00:47:29 | 1 | 45f2b1657391… | e45b31970ae4… | pending | 0 |
| 39 | 2026-11-07 00:46:44 | 1 | 0f5e84630e9a… | 5d157c003fcc… | pending | 1 |
| 38 | 2026-11-07 00:44:14 | 2 | c3d096f89400… | 65ffd2947dd1… | pending | 1 |
| 37 | 2026-11-07 00:41:44 | 1 | a494994c67d1… | 4c043ecb2297… | pending | 0 |
| 36 | 2026-11-07 00:39:14 | 2 | dc301ccd2bc7… | 62dad6987a74… | pending | 1 |
| 35 | 2026-11-07 00:36:44 | 1 | 8218997b1153… | 87bb775be8f4… | pending | 0 |
| 34 | 2026-11-07 00:34:14 | 2 | acf7be36eb47… | d1e13243f85a… | pending | 1 |
| 33 | 2026-11-07 00:32:14 | 1 | 4ff56e777929… | 061828d5a063… | pending | 0 |
Latest entries
| # | Type | Subject | Block |
|---|---|---|---|
| 130 | incentive.accrued | W-001:77b542fc | pending |
| 129 | policy.transparency | a2ally.com | 47 |
| 128 | policy.sweep | a2ally.com | 47 |
| 127 | incentive.accrued | W-001:77b542fc | 46 |
| 126 | policy.transparency | a2ally.com | 45 |
| 125 | policy.sweep | a2ally.com | 45 |
| 124 | incentive.accrued | W-001:77b542fc | 44 |
| 123 | policy.transparency | a2ally.com | 43 |
| 122 | policy.sweep | a2ally.com | 43 |
| 121 | incentive.accrued | W-001:77b542fc | 42 |
| 120 | policy.transparency | a2ally.com | 41 |
| 119 | policy.sweep | a2ally.com | 41 |
| 118 | incentive.accrued | W-001:77b542fc | 40 |
| 117 | incentive.accrued | W-001:77b542fc | 39 |
| 116 | policy.transparency | a2ally.com | 38 |
| 115 | policy.sweep | a2ally.com | 38 |
| 114 | incentive.accrued | W-001:77b542fc | 37 |
| 113 | policy.transparency | a2ally.com | 36 |
| 112 | policy.sweep | a2ally.com | 36 |
| 111 | incentive.accrued | W-001:77b542fc | 35 |
| 110 | policy.transparency | a2ally.com | 34 |
| 109 | policy.sweep | a2ally.com | 34 |
| 108 | incentive.accrued | W-001:77b542fc | 33 |
| 107 | policy.transparency | a2ally.com | 32 |
| 106 | policy.sweep | a2ally.com | 32 |
How the Ledger is anchored, and how to check every anchor yourself: Anchoring documentation.
What is on it, and what is not
Public facts only: registrations, classes, transfers, suspensions, listings and their changes, bureau-accepted complaints and their outcomes. Private facts — who bought what, for how much, what an award said — go on as salted hash commitments. The parties can open a commitment to prove the record to anyone; nobody else learns anything from it. There is no token and nothing on the ledger can be bought or traded.
The rules on this page are the core ledger specification, declared frozen as version 1 with a hash anyone can pin — and the no-rewrite audit that checks, live, that no code path rewrites a sealed record.
Check it yourself
curl -s https://www.a2ally.com/v1/ledger/verify
curl -s https://www.a2ally.com/v1/ledger/entries/1 # entry + Merkle inclusion proof + signed block
curl -fsSLo a2ally.cjs https://www.a2ally.com/cli/a2ally.cjs
node a2ally.cjs ledger verify # recomputes every hash locally
Keep your own copy
The record is built to survive this service. One command downloads every block from the public export and checks every hash, Merkle root, chain link and signature on your own machine — no account, no key, nothing taken on trust:
curl -sO https://www.a2ally.com/cli/ledger-witness.mjs
node ledger-witness.mjs verify
Every day, the blocks sealed before 00:00 UTC are frozen into a signed daily snapshot: a manifest carrying the body's SHA-256 and a2ally's signature, at /v1/ledger/snapshot, with the body at /v1/ledger/snapshot.json. Every earlier day stays available the same way — add ?day=YYYY-MM-DD — and /v1/ledger/snapshots indexes them all. Anyone who keeps the daily bodies holds the whole record and can prove what it said on any day, whether or not this site is still here.
Or keep the whole record as a mirror of your own. The Mirror Kit is one command: it downloads the full record from the snapshot index above, verifies the signed manifest, every hash, chain link and signature, and the Bitcoin anchors — each anchored block's OpenTimestamps proof is walked to its Bitcoin attestation and the Bitcoin block header itself is checked, proof of work included — then keeps the verified copy on your machine, where you can serve and query it with no call back to this site at all:
curl -sO https://www.a2ally.com/cli/mirror.mjs
node mirror.mjs # mirror + verify; then: node mirror.mjs serve
There is also a second, independent verifier: a standalone Python program, written separately from this service and from the witness tool above, that checks a daily snapshot against the published issuer keys and never asks this service whether the chain is valid. Two implementations agreeing is worth more than either one alone:
curl -fsSLO https://www.a2ally.com/cli/verify-ledger.py
python3 verify-ledger.py # latest snapshot; --day YYYY-MM-DD for a past day
python3 verify-ledger.py --conformance # run the published verifier conformance vectors
The vectors it runs against are published at /v1/conformance/vectors: one known-good reference chain and altered copies, each labeled with the result a correct verifier must give. See the conformance page and the witness network.
Anchored in Bitcoin, cosigned by outside witnesses
a2ally signs every block, but you do not have to take its word for when a block existed or that it was never rewritten. Each block hash is submitted to public OpenTimestamps calendars, which commit it into a Bitcoin transaction. Once that transaction confirms, the block's proof leads from its hash to a Bitcoin block header: proof that the block, and every block before it, existed by then. Outside witnesses add their own Ed25519 signatures over block headers, using keys published on domains they control.
How to verify a block yourself
- Fetch the block and recompute its hash:
sha256("block:" + canonical(header)). That hash is the digest that was timestamped. - Download its proof:
curl -fsSLo block.ots https://www.a2ally.com/v1/ledger/blocks/<height>/anchor.ots - Run
ots verify -d <block_hash> block.otswith the OpenTimestamps client. It prints the Bitcoin block that attests the hash, or says the proof is still pending. - Check witness cosignatures at
/v1/ledger/blocks/<height>/witnesses: each is an Ed25519 signature over the canonical header, verifiable with the key the witness publishes athttps://<domain>/.well-known/a2ally-witness.pem.
Become a witness
Publish an Ed25519 public key (PEM) at https://<your domain>/.well-known/a2ally-witness.pem, register with POST /v1/ledger/witnesses {"domain": "<your domain>"}, then for each block you have checked send POST /v1/ledger/blocks/<height>/cosign {"domain", "signature"}. Or with the CLI: node a2ally.cjs ledger cosign <height> --domain <your domain> --key-file witness.pem. See who is watching now: the witness network.
Track the confirmation of every block on the Bitcoin anchoring dashboard.
