Skip to content

TypeScript port of Blockchain Commons implementations: deterministic CBOR (dCBOR), Gordian Envelope for privacy-preserving data, Uniform Resources (UR), secret sharing (SSKR/Shamir), XID decentralized identities, provenance marks, LifeHash visual hashing, and FROST threshold signatures.

License

Notifications You must be signed in to change notification settings

paritytech/bcts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

102 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

BCTS - Blockchain Commons for TypeScript

Version TypeScript Monorepo Package Manager Status

๐Ÿ”ท 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.

Overview

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.

๐Ÿ“š Resources

๐ŸŽฎ Applications

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 playground

Live Demo: https://bcts.dev

๐Ÿ“ฆ Packages

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 Tools

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

๐Ÿ‘ฅ Credits

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.

๐Ÿค Contributing

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.

๐Ÿ” Security Disclosure

Found a vulnerability? We'd really appreciate you letting us know privately at security@parity.io - please avoid opening public issues for security concerns.

๐Ÿ“„ License

This project is licensed under the BSD-2-Clause-Patent License - see the LICENSE file for details.

About

TypeScript port of Blockchain Commons implementations: deterministic CBOR (dCBOR), Gordian Envelope for privacy-preserving data, Uniform Resources (UR), secret sharing (SSKR/Shamir), XID decentralized identities, provenance marks, LifeHash visual hashing, and FROST threshold signatures.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Contributors 5