๐ท Community Implementation: This is a TypeScript port of the Blockchain Commons' open specifications and implementations.
โ ๏ธ Disclaimer: This is a project in active development. It has not been audited, APIs and interfaces are subject to change.
This repository includes 19 packages covering deterministic CBOR encoding (dCBOR), Gordian Envelope for privacy-preserving data containers, Uniform Resources (URs) for QR code transport, cryptographic primitives (ChaCha20-Poly1305, BLAKE3, HKDF), secret sharing (Shamir/SSKR), decentralized identity (XID), provenance verification, visual hashing (LifeHash), and distributed infrastructure for threshold signatures (FROST/Hubert). The suite also provides 5 CLI tools and an interactive web IDE. All implementations follow the Rust reference implementations as the source of truth.
- CBOR Book - Comprehensive guide to CBOR, dCBOR, and Gordian Envelope
- BC YouTube Channel - A YouTube channel with many lectures and tutorials
- BC Developer Docs - BC's developer documentation
- JSON vs CBOR - Comparison of JSON and CBOR formats
- Deterministic Data: Intro to dCBOR - Introduction to deterministic CBOR
- dCBOR Deep Dive - Why "almost" deterministic isn't enough
An interactive web application for experimenting with dCBOR encoding, Uniform Resources decoding, and Gordian Envelope visualization.
Features:
- Data Playground - Parse and visualize data with multiple input formats (Hex, UR, Bytewords) and output views (JSON, dCBOR, Diagnostic, Envelope tree)
- Envelope Builder - Visual tree builder for creating Gordian Envelopes with signing, encryption, compression, elision, and salting transformations
- Registry Browser - Browse CBOR tags, Known Values, and live IANA registry with category filtering and search
- QR Code Support - Generate QR codes from UR output, scan via camera (including animated/fountain codes), and upload QR images
- Key Management - Create and manage signing keys, encryption keys, and multi-recipient public keys
- Selective Disclosure - Elide assertions while maintaining cryptographic integrity for privacy-preserving data sharing
- Templates & Examples - Pre-built envelope patterns and example data for common use cases
Try it locally:
bun playgroundLive Demo: https://bcts.dev
| Package | Description |
|---|---|
| components | Shared component utilities and helpers for the Blockchain Commons ecosystem. ๐ Docs | ๐ฆ Rust |
| crypto | Cryptographic primitives including symmetric encryption (ChaCha20-Poly1305), hashing (SHA-256, BLAKE3), and key derivation (HKDF, PBKDF2). ๐ Docs | ๐ฆ Rust |
| dcbor | Deterministic CBOR encoding - a specification for serializing data in a canonical, reproducible format. Ensures identical byte sequences for cryptographic operations and blockchain applications. ๐ Docs | ๐ฆ Rust |
| dcbor-parse | dCBOR Diagnostic Parser - parse and compose CBOR diagnostic notation into dCBOR data items. Supports booleans, numbers, strings, byte strings (hex/base64), tagged values, arrays, maps, URs, known values, and date literals. ๐ Docs | ๐ฆ Rust |
| dcbor-pattern | Pattern matching for dCBOR - a powerful query language for matching and extracting data from dCBOR structures. Supports value, structure, and meta patterns with named captures and VM-based execution. ๐ Docs | ๐ฆ Rust |
| envelope | Gordian Envelope - structured, privacy-focused data containers for secure information exchange. Supports encryption, elision, and cryptographic assertions. ๐ Docs | ๐ฆ Rust |
| envelope-pattern | Pattern matching for Gordian Envelope - query and extract data from Envelope structures. Supports leaf, structure, and meta patterns with subject/predicate/object matching and tree traversal. ๐ Docs | ๐ฆ Rust |
| frost-hubert | FROST DKG and signing using Hubert as the distributed substrate. Implements threshold signatures with distributed key generation for secure multiparty cryptographic operations. ๐ Docs | ๐ฆ Rust |
| gstp | Gordian Sealed Transaction Protocol - a secure, authenticated, transport-agnostic data exchange protocol with distributed state management via Encrypted State Continuations (ESC). ๐ Docs | ๐ฆ Rust |
| hubert | Hubert - Distributed infrastructure for secure multiparty transactions using Gordian Envelope. Supports IPFS, Mainline DHT, server, and hybrid storage modes. ๐ Docs | ๐ฆ Rust |
| known-values | Known Values - compact, deterministic identifiers for ontological concepts. More efficient than URIs for representing predicates and relationships. ๐ Docs | ๐ฆ Rust |
| lifehash | LifeHash - visual hash algorithm that generates beautiful, deterministic icons from data using cellular automata. Useful for visual verification of cryptographic hashes and identities. ๐ Docs | ๐ฆ Rust |
| provenance-mark | Provenance Marks - cryptographically-secured system for establishing authenticity and provenance of digital works. Generates verifiable mark chains with configurable resolution levels. ๐ Docs | ๐ฆ Rust |
| rand | Cryptographically secure random number generation utilities. Provides a consistent interface for random operations across all packages. ๐ Docs | ๐ฆ Rust |
| shamir | Shamir's Secret Sharing - split secrets into shares where any threshold can reconstruct the original. Implements GF(256) arithmetic for secure secret splitting. ๐ Docs | ๐ฆ Rust |
| sskr | Sharded Secret Key Reconstruction (SSKR) - hierarchical secret sharing with groups and thresholds. Encodes shares in Bytewords for human-friendly backup. ๐ Docs | ๐ฆ Rust |
| tags | CBOR tag registry for Blockchain Commons specifications. Provides type-safe tag definitions for use across all packages. ๐ Docs | ๐ฆ Rust |
| uniform-resources | Uniform Resources (UR) - a method for encoding binary data as URIs for transport in QR codes and other text-based channels. Includes Bytewords encoding and fountain codes for multi-part transmission. ๐ Docs | ๐ฆ Rust |
| xid | Extensible Identifiers (XID) - decentralized digital identity documents supporting keys, delegates, services, and provenance. Enables self-sovereign identity management with cryptographic verification. ๐ Docs | ๐ฆ Rust |
| CLI | Description |
|---|---|
| dcbor-cli | Command-line tool for working with dCBOR data. Parse, encode, and convert between hex, diagnostic notation, and other formats. ๐ Docs | ๐ฆ Rust |
| envelope-cli | Command-line tool for creating and manipulating Gordian Envelopes. Supports encryption, signing, elision, and format conversion. ๐ Docs | ๐ฆ Rust |
| lifehash-cli | Command-line tool for generating LifeHash visual hash images as PNG files. Create deterministic icons from any input data. ๐ Docs | ๐ฆ Rust |
| provenance-mark-cli | Command-line tool for generating and verifying Provenance Marks. Create mark chains for establishing authenticity of digital works. ๐ Docs | ๐ฆ Rust |
| seedtool-cli | Command-line tool for generating and managing cryptographic seeds. Supports multiple output formats including hex, Bytewords, SSKR shares, and Gordian Envelope. ๐ Docs | ๐ฆ Rust |
This TypeScript implementation is a direct port from the work of @ChristopherA, @WolfMcNally and @shannona.
Consider visiting Blockchain Commons to learn more about the organization and their mission.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Found a vulnerability? We'd really appreciate you letting us know privately at security@parity.io - please avoid opening public issues for security concerns.
This project is licensed under the BSD-2-Clause-Patent License - see the LICENSE file for details.