Public transparency log witness

Witness for https://api.fd0.sh

Independent observer of the fd0.sh server's signed tree heads. Consistency-verified observations are cosigned; fork evidence is archived and flagged. Pin the witness pubkey below in your client to require its cosign on every sync.

HEALTHYlast refresh 0s ago
Witness identity
pin this
Pubkey (ed25519)233848710d80517e…1ec7a383dc7cf567
Domainfd0-witness-cosign-v1
Add to ~/.fd0/config.toml:
[[witness]]
url = "https://witness.fd0.sh"
pub = "233848710d80517e09718e3d18abc4afd12fea4f4fb83b911ec7a383dc7cf567"

[witness_policy]
min_cosigns = 1
Observed chains (37)
watching https://api.fd0.sh
Chain IDTree sizeCosignsStatus
scope:s_3h7ty2l6wlhsuhcrzvibc3ixkmtree_size=2107215 cosigns✓ no fork
scope:s_3jdaus73g2ryutboinl7djqbcatree_size=889 cosigns✓ no fork
scope:s_7cs43lfdb53zdkdjodrzdgkeketree_size=8923 cosigns✓ no fork
scope:s_7iyjfkiotknjtg6k5vegackib4tree_size=886 cosigns✓ no fork
scope:s_efnkfuvrnkuhfvofgtjwwjr6latree_size=72 cosigns✓ no fork
scope:s_kig2kd4eytwqnq6cn42zh4x77itree_size=101 cosigns✓ no fork
scope:s_ohcpbpnjfwtrfdfxfwcpakn2yytree_size=362 cosigns✓ no fork
scope:s_p2e2mb2rifsrxhg4zaoosrdwnytree_size=72 cosigns✓ no fork
scope:s_usni5vcrq6xctrp36jatytt7tatree_size=243 cosigns✓ no fork
scope:s_w25qav7mzmyii7dld2qio2655etree_size=15944 cosigns✓ no fork
scope:s_ygvhbly2rzclk7nk22tyc5kde4tree_size=7623 cosigns✓ no fork
scope:s_zajnqddgnm7sofg64rugoele5itree_size=41 cosigns✓ no fork
user:0ngv0pndtree_size=11 cosigns✓ no fork
user:36mnyp54tree_size=11 cosigns✓ no fork
user:4hekwq56tree_size=11 cosigns✓ no fork
user:5xeq1d0gtree_size=11 cosigns✓ no fork
user:7838y498tree_size=11 cosigns✓ no fork
user:789wrp0gtree_size=11 cosigns✓ no fork
user:7p41x93ntree_size=11 cosigns✓ no fork
user:86f2xah0tree_size=11 cosigns✓ no fork
user:9tmgntzqtree_size=11 cosigns✓ no fork
user:a6pypfz5tree_size=11 cosigns✓ no fork
user:aphwpn5etree_size=11 cosigns✓ no fork
user:atxy5jmztree_size=11 cosigns✓ no fork
user:b06tgea1tree_size=11 cosigns✓ no fork
user:cx9j1pyftree_size=11 cosigns✓ no fork
user:e58tzd5ctree_size=11 cosigns✓ no fork
user:fkbfgs4ntree_size=11 cosigns✓ no fork
user:grgwhqgntree_size=11 cosigns✓ no fork
user:j3by4p0gtree_size=11 cosigns✓ no fork
user:jdt6sqegtree_size=11 cosigns✓ no fork
user:p7g2n4rctree_size=11 cosigns✓ no fork
user:v2te331mtree_size=11 cosigns✓ no fork
user:v9cbb878tree_size=11 cosigns✓ no fork
user:y3wsyvk2tree_size=11 cosigns✓ no fork
user:z2rtefm1tree_size=11 cosigns✓ no fork
user:ztbym5cwtree_size=11 cosigns✓ no fork
Verify yourself
curl + jq

The witness API is read-only and unauthenticated. Pull any STH and compare against what the server gave your client — the cosign should match.

$ curl -sS https://witness.fd0.sh/v1/server-info | cbor2json
{
  "witness_pub":     "0x233848710d80517e...",
  "witness_pub_hex": "233848710d80517e..."
}

# All chains the witness has archived for https://api.fd0.sh
$ curl -sS https://witness.fd0.sh/v1/observed/$(echo -n "https://api.fd0.sh" | basenc --base64url -w0 | tr -d '=')
What this guarantees

Both tables matter. Listing a witness only makes it available; cross-checking stays off until min_cosigns is at least 1. The default is 0, which disables it entirely, so a config with the witness alone verifies nothing. With the policy set, every sync verifies the server's STH against this witness's cosign. If the server ever publishes a fork — two distinct root hashes at the same tree_size — the witness flags equivocation and your client refuses the sync. That makes server-side equivocation cryptographically detectable rather than a matter of trust.

Run your own witness: docs/TRANSLOG.md §8. The more independent witnesses, the harder undetected equivocation becomes.