Verify

Anyone can re-measure the recorded making.

The measurement is not a decision to let anyone in.

A PCOC is a self-issued identifier backed by memory your device held while Bitcoin's blocks passed. Check one here and see what any service would measure. It checks; it does not admit anyone. Each service's own admission gate decides.

What you're looking at

This is groundinglab's own PCOC, for its official public key (npub).

It was made on 2026-10-26, over 20 Bitcoin blocks.

16 of 16 recorded points are anchored in Bitcoin.

npub1w7akvpek7zp7wwyhmryswc33p9f45wv2cj65gz663kdgqm333g7q0t3pme

This is the same key shown in the footer, and the key groundinglab@groundinglab.io resolves to.

The making is split into legs, each ending in a leg result.

Points recorded during the making are anchored, meaning fixed in a Bitcoin transaction.

Made over
20 Bitcoin blocks (973191 to 973211)
Legs
1476
Span
9534 seconds
Anchored points
16 of 16
Recorded
2026-10-26
Spot-check
6 legs redone, all matched

These are measurements of the recorded making. They are not an admission decision. A different service can apply a different policy to the same measurements.

sha256 d2df0c77284d0c4cbba7ac214078f49789d3c586fab8b4b6b4ffee709f3b8807

Download this PCOC

This is groundinglab's own PCOC. Download it and check it yourself with the checker below. You can verify it, but you can't sign in with it: signing in needs the private key, and only groundinglab holds the key for this one, so only groundinglab can sign for it at the admission gate. To sign in, make your own.

Measure it

Check this PCOC, or bring your own. The checker records a measurement. It does not admit anyone.

Make a PCOC

Full record
For developers

Verifier https://verify.groundinglab.io POST /v1/verify

This report shows what was measured. It is not an admission decision.

What was checked

The lines are measurements, not a decision to let anyone in.

What a service would do with this

These are the measurements a service receives.

Refusing a bad PCOC costs far less than making one.

Confirming a PCOC redoes a sample of the making, and that still costs less than making it. Why does the check cost less than the making?

A service's admission gate takes this measurement and applies its own policy.

The measurement is not the admission decision. Admission gate

Verification and admission are separate steps.

This check records measurements; a gate then compares them with its policy.

groundinglab's gate settings: its live policy gl-admit-v12 asks for at least 0.1 legs per second over the making (one leg every 10 seconds, testing), at least 6 anchored points, and no tip-versus-last-beacon submission deadline.

It also checks a few legs drawn at random from across the whole making.

The exact count is set by the service's policy.

These are groundinglab's settings, not rules of the specification. Why we chose these numbers.

A service's gate can refuse or revoke a PCOC under its own policy.

Run the known-good check

Nothing here needs a key. The download in step 3 is groundinglab's own PCOC, the object this page shows. The known-good check is the Go quickstart at tag sdk/go/v2.3.1. It measures the pinned conformance object and does not read the downloaded file.

OS
Debian 13 or Ubuntu 24.04, in a terminal. Ubuntu 24.04 should behave the same; it was not tested.
You need
Go 1.22 or newer, git and curl
Time
About 5 minutes

Command names checked against tag sdk/go/v2.3.1 on 24 Oct 2026. This page was not run as a build on that date.

1. Install Go, git and curl

sudo apt update
sudo apt install -y golang-go git curl

2. Get the code

git clone https://github.com/groundinglab/pcoc.git
cd pcoc
git checkout sdk/go/v2.3.1
cd sdk/go

3. Download groundinglab's own PCOC

This is the object the report above shows. The next step does not read it.

curl -fLO https://groundinglab.io/verify/groundinglab.pcoc.cbor

4. Run the quickstart

It checks the conformance pack. It does not read the downloaded file, and it does not time the run.

go run ./cmd/pcoc quickstart

5. Check the result

Six lines. The second line names the SHA-256 backend on your machine. This example is reference system 3.

Expected output

pcoc 2.3.1 (go) spec-2.3.0 pack 91ded57e5c05b7cb: pin match
kernel scalar, sha256 sha-ni
O1-S1 object sha256 800ad07a87a567c835f539617b61ccddc96a0a984425675a5ece971162dfd246
O1-S1 six_leg match, checkpoints match, waypoints match
negatives 13 non-match
PROD leg 0 legs_le_hex 88a04ac5beacb8a7