tersign (Python)
Tersign — the evidence layer for the agent economy. This package is the verification-first Python SDK: zero dependencies, standard library only — the verify path a tribunal, examiner, or CI job can run with nothing installed.
python3 -m tersign verify receipt.json # offline — no network, ever
python3 -m tersign verify 0x<digest> --ledger … # chain lookup (explicit network)
from tersign import verify_receipt, digest_of, chain_link_digest, verify_link, verify_commitment
result = verify_receipt(signed_receipt) # {'valid': True, 'signer': '0x…', 'digest': '0x…'}
What it covers (v0.1):
- RFC 8785 (JCS) canonical form + the Tersign artifact digest
(
keccak256(utf8(JCS(v)))) and chain-link constructor — byte-compatible with the TypeScript reference, pinned by shared cross-implementation vectors. - EIP-712 recovery for the upstream
x402 receiptdomain (the merged offer-receipt extension) — pure-python secp256k1, canonical low-s only. - Counter-signature verification (
verify_link): EIP-191 over the raw 32-byte chain-link digest, recovered against the published ledger signer (https://tersign.ai/v1/ledger). - Chain commitment recompute (
verify_commitment): since 2026-08-28 each anchor stamps a chain commitment — an accumulator over every counter-signed link — so one anchored digest covers the whole prefix; rows anchored earlier bind the head record only and say so (subjectSchema).
Issuing/signing lives in the TypeScript SDK (npm
tersign); this package is the
independent second implementation of the verification surface —
cross-implementation by construction. Frozen evidence bundles
(tersign-evidence-bundle-v1) ship their own copy of this verify core inside
the artifact, so bundle verification never depends on an install.
No console script on purpose: the tersign bin name belongs to the npm
package; the Python surface is python3 -m tersign.
Metadata
Release files for tersign 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tersign-0.1.2.tar.gz | 15.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tersign-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.5 kB
Release files / tersign-0.1.2.tar.gz
| Download URL | tersign-0.1.2.tar.gz |
|---|---|
| Size | 15.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e382d2bba1d463bfb68450e12545a4eefd9752c468098675b6f8d86df3cec2f0
|
|
BLAKE2b-256 checksum How to use checksums |
eb7182f4602601992d0b0b92bd770b7c863cbddfc49a7898039c4542d6821ac6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / tersign-0.1.2-py3-none-any.whl
| Download URL | tersign-0.1.2-py3-none-any.whl |
|---|---|
| Size | 12.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d3aed6817360cc1932ddf312197e06e321467286a3c9824e69ee3ae7234e3aa1
|
|
BLAKE2b-256 checksum How to use checksums |
f91c45907ecf0ca8e2ea2e3125a5f19f66505bd332fc41473ae3674ad0fa227a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|