🔷 Community Implementation: This is an independent TypeScript monorepo implementing Blockchain Commons' open specifications and implementations. It is not an official Blockchain Commons repository.
🚧 Disclaimer: This repository is in early development stages. APIs and interfaces are subject to change.
This monorepo provides TypeScript implementations of Blockchain Commons specifications, including deterministic CBOR encoding, Gordian Envelope, Uniform Resources (URs), Sharded Secret Key Reconstruction (SSKR), and other cryptographic standards. All implementations follow the Rust reference implementations as the source of truth and maintain compatibility with the official specifications.
- 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
| 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 |
| gstp | Gordian Sealed Transaction Protocol - a secure, authenticated, transport-agnostic data exchange protocol with distributed state management via Encrypted State Continuations (ESC). 📖 Docs |
| known-values | Known Values - compact, deterministic identifiers for ontological concepts. More efficient than URIs for representing predicates and relationships. 📖 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 |
| 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 |
A collection of runnable TypeScript examples demonstrating the capabilities of this library.
An interactive web application for experimenting with dCBOR encoding, Uniform Resources decoding, and Gordian Envelope visualization.
Features:
- Parse and visualize dCBOR data with annotated hex and diagnostic notation
- Decode Uniform Resources (UR) with support for envelope URs
- View Gordian Envelope tree format
- Convert between hex, UR, and Bytewords formats
- Live examples and interactive editing
Try it locally:
bun playgroundLive Demo: https://bcts.dev
This TypeScript implementation is a direct port from the work of @ChristopherA and @WolfMcNally.
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.
This project is licensed under the BSD-2-Clause-Patent License – see the LICENSE file for details.