Verifier and policy
Assumes: 02 for the CLI; you have a hike object from 03.
| Vector | What it proves |
|---|---|
kat-small |
Producer byte-equality on the small known-answer object |
test-3leg |
Verifier shape and plant reads on a three-leg mock object |
anchor-window / anchor-w16-i17 |
Anchor window and W_16 / I_17 edge cases |
bind-threads |
Bind-thread count does not change the record |
sign-in-origins.json |
Origin byte-match: the gate's configured origin accepted; near-misses refuse |
- The split. "Section 13 produces the object. Section 14 measures it. Section 15 is the admission service." (SPEC §2). The verifier writes a measurement record and makes no judgement (reference/README.md). Accept, refuse and revoke are one relying party's decisions, not pass/fail (services/admission-gate/README.md).
- What verify reads. Each index read is a single lookup; the verifier never scans across many heights (SPEC header; Rule A4, §14). The checkpoint measurement reads GET {index}/index/{beacon_height} (admission-gate deploy/gate.toml). Comparing a plant (the Bitcoin output that timestamps waypoints) uses root, txid, vout, block_hash, block_height, never tree_size (§14.3).
anchoredis recorded only when the inclusion height is in the window, the header is stored, and the plant matches (SPEC header, §14.5). - Index options, all opt-in. The hosted index is https://index.groundinglab.io. To run your own:
pcoc-index(default bind 127.0.0.1:38081; GET /index, /index/{h}, /index/since), filled by Bari or bypcoc-index rebuild --source esplora/--source rpcfrom a pruned node, which checks header links (services/index/README.md). Anyone can skip the service and read Bitcoin (services/index/README.md). - Running it. CLI profiles test/live (Rust reference, beat 5), or embed
hike::verify(Rust reference, beat 7). Section 14.6 concurrency doesn't affect the record (SPEC header). - Conformance. Compare
recordon each vector (SPEC §16.1; spec/conformance/v2.0/README.md). Vectors: kat-small, anchor-window, anchor-w16-i17, earlier-run-b, bind-threads, test-3leg (a mock anchor, not a real PCOC). - The record. One JSON object, with the keys in the order SPEC §14 lists (profile … analysis). No null; tokens are strings; RFC 8785 for verify_record_sha256; one trailing newline. An earlier-version kind gives
versionearlier version(Rule A5), a measurement, not a failure. The fast record (§15.3) omits checkpoints.legs.result, six_leg and six_leg_runs. Token glossary (§14.1–14.7):- shape:
matchormismatch, withshape_itemfrom a closed list of 14. - anchors:
anchoredonly when in window, header stored and plantmatch; otherwisenot anchored. - six_leg: six
match/mismatchresults;not definedunder six legs. - N: checkpoints in stages a…b−1 (A4.7).
- S: T(P_b) − T(I_{a−1}), in seconds (A4.8).
- delta_h: height_P_b − height_I_a_minus_1, index-confirmed heights only (A4.8).
- Shared tokens:
not defined,not read,n/a,not fetched by design.
- shape:
- Writing a policy. Part B, §15. Inputs §15.1, outputs and states §15.2: outcomes provisional, accept, refuse, revoke, held; states received, provisional, accepted, refused, revoked, held.
heldis a not-read or retry, not a negative. A negative after any grant is revoke. Two-phase async §15.3; named parameters §15.4; candidate profiles §15.5. Only the leg-rate floors, B9, provisional_action_cap 0, the 2026-10-07 re-verify rule and the §15.1 wire are locked (SPEC §15 opening). - Example gl-admit-v1. These numbers are one relying party's chosen settings, groundinglab's Gate policy, not part of the measurement: the record (beat 5) is the same whatever a policy sets. min_leg_rate 0.25 leg/s and min_waypoints 6 of 18. leg_rate_floor strict 7/20, default 1/4, lenient 1/8 applies to resumed provisionals. Changing any number means a new id, and startup refuses a changed number under the same id (policy-bind.json). Another relying party may pick other values under its own policy_id. GET /v1/policy shows the Gate's (services/admission-gate/README.md; deploy/gate.toml; src/http.rs).
- What not to infer. Log entries are groundinglab's decisions; another party may decide differently. A verify record shows no cost figure; cost is not the verifier's concern. Catch rates and economic security aren't established (STATUS.md). Next: to present an accepted object to a site, see the sign-in wire (Sign-in wire).
Checked against pcoc aaa8946. Raw markdown.