Skip to content

paritytech/bcts

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 20 packages covering deterministic CBOR encoding (dCBOR), Gordian Envelope for privacy-preserving data containers, Uniform Resources (URs) and Multipart URs for QR code transport, cryptographic primitives, 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, hashing, 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
multipart-ur Multipart Uniform Resources - render Uniform Resources as animated QR-code sequences (PNG/JPEG/SVG/Mermaid) with optional embedded logos. Wraps uniform-resources fountain encoding for visual transport of arbitrary-sized payloads. 📖 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

🤖 AI-Assisted Development

BCTS ships a hosted Model Context Protocol (MCP) server, so any MCP-aware AI tool (Claude Code, Cursor, Claude Desktop, Windsurf, etc.) can navigate the API surface of every package without you installing anything per-project.

Endpoint: https://mcp.bcts.dev/mcp (Streamable HTTP, stateless JSON-RPC 2.0)

Tools exposed:

Tool Purpose
list_packages Enumerate all BCTS packages with descriptions and symbol counts
search_symbols Search exported symbols (functions, classes, types) globally or scoped to one package
get_symbol Fetch full details (kind, doc comment, members, source link) for a specific symbol
get_guide Read the README / hand-written guide for a package
find_examples Find code examples whose doc comments match a query

Add it to your client

Claude Code — one command:

claude mcp add --transport http bcts https://mcp.bcts.dev/mcp

Cursor / Windsurf — add to .cursor/mcp.json (or the equivalent project config):

{
  "mcpServers": {
    "bcts": {
      "url": "https://mcp.bcts.dev/mcp"
    }
  }
}

Claude Desktopclaude_desktop_config.json (uses mcp-remote to bridge HTTP into stdio):

{
  "mcpServers": {
    "bcts": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.bcts.dev/mcp"]
    }
  }
}

Lightweight alternative: llms.txt

If your tool doesn't speak MCP, every package also publishes a flat Markdown reference following the llms.txt convention:

Drop those URLs into your AI tool's context to give it the full API surface for one or more packages without any tool wiring.

👥 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.

About

TypeScript port of 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