How it works
One making, end to end.
- What your device does
- What Bitcoin’s blocks do
- What a service can measure — and what only its policy decides
PCOC stands for production-constrained observable commitment: a self-issued identifier backed by a cryptographically bound record of memory-dependent work, paced by Bitcoin blocks.
The user’s device makes the PCOC and holds it. A service’s admission gate measures it and applies that service’s policy. Bitcoin sits underneath as the clock and the anchor for both sides.
The mechanisms
The making runs in stages paced by new Bitcoin blocks, and each stage is made of many small legs. Each leg produces a result recorded in the PCOC. A verifier later selects legs at random from across the hike and recomputes them to check the recorded results.
- Make. Your device generates a key pair, fills and retains a 256 MiB terrain, then runs memory-dependent legs continuously. When the producer observes a new Bitcoin block header, that header closes the current stage and provides the reference for the next. The process continues through 18 stages. Your private key stays on the device.
- Anchor. The construction binds the hike to Bitcoin in both directions. Bitcoin block headers provide the public references used during production. At stage boundaries, the producer derives waypoints from the work and submits them for anchoring. groundinglab’s Bari service batches accepted waypoints into Bitcoin transactions. You can operate your own Bari instance, or use a direct-to-Bitcoin approach. Anchoring is best effort: the object records which paths were available, and the verifier measures them. Bitcoin does not check the legs or certify the making.
- Keep. When the last stage closes, the terrain is released. You keep a small file containing your public key and the production record. The public key is the self-issued identifier. You show the file when a service asks; the service receives it as a small file.
- Check. The verifier measures the PCOC against the published specification and the corresponding public Bitcoin record, normally obtained through a portable index. It checks the object’s structure, its Bitcoin bindings and the recorded checkpoint relationships. It also recomputes six legs selected at random from across the hike. The service’s admission policy can require additional rounds of six. The verifier needs the public key in the object, but not the maker’s private key or access to the maker’s device. It reports measurements; it does not make the admission decision.
- Decide. The service’s policy reads the measurement record and says yes or no. Two services can measure the same object under different requirements and make different admission decisions. Policies differ by design; none is the right answer, and none is a promise of protection.
Stage = wait for the next public block, then hold memory. Leg = one unit of that memory work. The cost is holding memory while blocks pass, not a short burst of hashing.
Why this shape
Some making can be pre-computed, solved once, or reused across many attempts. A door or a CAPTCHA farm works that way: pay the hard case once, then replay. Memory held while Bitcoin blocks you do not control arrive is a different shape. The holding is tied to stages paced by a public clock whose next tick is not yours to schedule, and the design aims for that cost to start fresh for each identifier. How far that holds when someone makes many at once is still being measured.
A newly observed Bitcoin header closes the current stage and provides the reference for the next. Inside a stage, the device runs many legs (memory work). A verifier later redoes a sample of legs drawn at random from across the whole hike and checks the results.
Stage = continuous memory work until a new public header is observed. Leg = one unit of that memory work. The cost is holding memory while blocks pass, not a short burst of hashing.
Best-effort anchoring. Waypoints are submitted for anchoring, but not every path is necessarily available to the verifier. The final waypoint, W17, is not fetched by design. Earlier paths may be skipped or unavailable. The object records the available evidence, and the verifier measures it. Anchoring records the making; Bitcoin does not certify the legs.
Stays local: the memory and your private key. Travels: the PCOC, with your public key and its leg results; a service receives it as a small file. Public: Bitcoin’s blocks and the anchors.
Bitcoin as the clock
Bitcoin’s blocks are a shared public tick. They pace the stages. Satoshi called this a timestamp server; here that tick is the clock the making waits on.
Each PCOC incorporates Bitcoin block references into its construction and records the waypoint anchoring evidence that was obtained. Bitcoin records; it does not check legs or certify the making.
With a batch anchoring service, you need no bitcoin, wallet, or node. Who anchors is a choice: groundinglab’s batch anchoring service, your own copy of that service, or anchoring directly.
The shared public tick stops anyone making one identifier faster than the 18-block schedule: each stage waits on a new public header. Holding memory per identifier is what makes many cost more. Parallel makings all wait on the same blocks, so the unpredictability of the next tick does not by itself raise bulk cost. The design aims for the memory commitment not to amortise across many identifiers; how that holds at scale is still being measured.
Blocks pace the making. Anchors record points along the way. Bitcoin does not certify the legs.
The principles
- Self-issuedNo issuer, registrar or account. The identifier starts on your device.
- Checkable by anyoneThe record is in the PCOC and in Bitcoin’s public record. No one has to be asked.
- Measure, then decideThe verifier records; only the service’s policy accepts or refuses.
- Each service sets its own rulesgroundinglab’s gate is one policy, not the policy.
- Bitcoin as the clock and the anchorBitcoin block headers pace and bind the production process. Waypoints are submitted for anchoring, and the resulting evidence is measured independently. Bitcoin does not certify the making.
- Open, and run your ownOpen specification and code. The hosted index, hosted anchoring service and hosted admission gate are optional. You can operate your own services or use the specified alternatives.
It does not make fake accounts impossible. Each identifier is designed to carry its own cost; whether a service accepts one identifier per account is that service’s policy.
The whole design in about seven minutes.
Who runs each part
| Part | Who runs it today | Can you run your own? |
|---|---|---|
| The app that makes the PCOC | You, on your device | Yes: the apps, or your own app on the SDK |
| Anchoring | groundinglab | Yes, from the open specification |
| Index of Bitcoin’s public record | groundinglab (hosted) | Yes, or read Bitcoin directly |
| Admission gate | Each service; groundinglab runs a public admission gate | Yes: run the gate |
| Bitcoin, the clock and the anchor | Nobody owns it | With a batch anchoring service, you need no bitcoin, wallet or node |
Questions
The questions people ask are answered one at a time in Learn. Start with Fundamentals: why bots win, issued, listed or made, why memory and a clock, and how you can check a stranger without asking. Or start from your own world in By audience.
The specification, the SDKs and the code are open, in one repository: github.com/groundinglab/pcoc.
Inspect a real example PCOC (groundinglab’s own production object, measured by the site verifier).