Verifiable Commitment Registry (VCR) is an open-source reference implementation for enforcing negative-result publication commitments through Ed25519 signatures, authenticated encryption, Shamir Secret Sharing, deadline-based liveness checks, append-only audit hashes, and federated registry witnesses.
VCR targets a narrow research-integrity failure mode: a study can be pre-registered, produce a null, negative, inconclusive, or commercially inconvenient result, and then quietly disappear. VCR turns prolonged post-collection silence into a public, auditable release path.
This repository is now an MIT-licensed open-source reference implementation. It includes:
- Ed25519 signing and verification for commitment, extension, and witness records
- AES-256-GCM authenticated encryption for release payloads
- Shamir Secret Sharing for threshold release-key recovery
- witness-set independence and quorum checks
- a local HTTP witness/registry node for integration tests and pilots
- JSON schemas and examples validated by
jsonschema - deterministic state-machine and audit-hash-chain tests
This code is suitable for protocol review, pilots, interoperability tests, and open-source collaboration. It is not represented as independently audited production cryptography.
python -m pip install -e ".[dev]"
python -m unittest discover -s tests
python -m vcr_registry.cli validate-examples
python -m vcr_registry.cli simulate examples/scenario_negative_result.jsonGenerate an Ed25519 key pair:
python -m vcr_registry.cli keygenStart a local registry node:
python -m vcr_registry.cli serve --host 127.0.0.1 --port 8080- A researcher hashes a protocol and signs a commitment record with Ed25519.
- The release payload is encrypted with AES-256-GCM.
- The payload decryption key is split across independent witnesses with Shamir Secret Sharing.
- Federated witnesses validate signatures, log events, and track deadlines.
- If no fulfillment proof or valid extension appears before the deadline,
the registry moves to
TRIGGERED. - A valid witness quorum reconstructs the release key and publishes the release record.
.
|-- assets/ # Repository visual identity
|-- docs/ # Architecture, API, crypto, federation notes
| |-- adr/ # Architecture decision records
|-- examples/ # Schema-valid signed example records
|-- schemas/ # JSON Schema contracts
|-- src/vcr_registry/ # Reference implementation
| |-- crypto.py # Ed25519 helpers
| |-- payloads.py # AES-GCM + threshold payload packages
| |-- shamir.py # Shamir Secret Sharing
| |-- witness.py # witness identity, quorum and attestations
| |-- server.py # local HTTP registry node
|-- tests/ # Unit and schema validation tests
|-- LICENSE.md # MIT License
|-- pyproject.toml # Python package metadata
stateDiagram-v2
[*] --> ACTIVE: commitment accepted
ACTIVE --> ACTIVE: signed extension
ACTIVE --> FULFILLED: publication proof accepted
ACTIVE --> TRIGGERED: deadline elapsed without proof
TRIGGERED --> RELEASED: threshold reconstruction completed
TRIGGERED --> DISPUTED: governance hold accepted
DISPUTED --> RELEASED: dispute rejected or expired
FULFILLED --> [*]
RELEASED --> [*]
- No single operator trust. Witnesses are checked for independent operators and jurisdictional diversity.
- Real signatures, explicit domains. Ed25519 signatures bind canonical JSON plus VCR domain separators.
- Threshold release. A release key is reconstructed only from enough Shamir shares.
- Public delay, not forced speed. Extensions are allowed, signed, and visible.
- Minimum disclosure. Public commitments reveal protocol hashes and encrypted payload metadata, not raw result data.
- Auditable limits. VCR proves a lifecycle and release transcript; it does not prove that collected data is honest without external provenance.
This project is open source under the MIT License.
github.com/Ciprian-LocalPulse/verifiable-commitment-registry
