voiceledger
A hash-chained, signed event ledger with pluggable rules and a standalone verifier. One dependency (cryptography): an auditor can verify a ledger without installing the system that wrote it.
pip install voiceledger
voiceledger verify bundle.zip --trusted-key <hex> --rules rules.toml
PASS 1707 events
PASS chain: 1707 events linked
PASS identity_before_detail: 300 detail_disclosed events, all after identity_verified
PASS list_order: 14 snapshots followed in order (per slot_id)
PASS head: signed head matches
- chain: each event's hash covers the event and the previous hash, so editing, inserting, deleting or reordering any event breaks every later link.
- head: the last hash is signed with Ed25519; with the trusted key, the whole chain can't be regenerated and re-signed by anyone else.
- rules: what the project declares, e.g.
requires_before(no detail before identity, per call),follows_snapshot_order(offers in the customer's list order),always_followed_by,never. Custom rules subclassvoiceledger.Rule.
A bundle is a zip with ledger.jsonl, list_snapshots.jsonl and head.json. Reading is defensive (size caps, known members only, JSON only). Exit code 0 when every check holds, 1 otherwise, 2 for unreadable input.
What it proves: the record wasn't changed after the head was signed, and the declared rules hold over it. What it doesn't: that the events were true. Reconcile against the system of record for that.
Part of voiceops; rules reference in its guide. MIT licence.
Metadata
Release files for voiceledger 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| voiceledger-0.1.5.tar.gz | 127.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| voiceledger-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 143.6 kB
Release files / voiceledger-0.1.5.tar.gz
| Download URL | voiceledger-0.1.5.tar.gz |
|---|---|
| Size | 127.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4276f11ff2a668255191088f39cf08125173484ab56f0cc3e053c91714cb5e38
|
|
BLAKE2b-256 checksum How to use checksums |
6f8e3033f9c3611a12b27eb670ed43885beead0bd690aab86b664a8471ecab96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / voiceledger-0.1.5-py3-none-any.whl
| Download URL | voiceledger-0.1.5-py3-none-any.whl |
|---|---|
| Size | 16.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4736ad269c2f9d616efb7e5af2f964b3f7d0061a18f22fc90c83212b5c4c6038
|
|
BLAKE2b-256 checksum How to use checksums |
30f06843cee0ac2bd896d5ea408b6689a8e5b6cd65d85527ddf27cd3a990254c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|