{"id":45869925,"url":"https://github.com/paritytech/bcts","last_synced_at":"2026-04-25T02:04:48.163Z","repository":{"id":326987987,"uuid":"1107334275","full_name":"paritytech/bcts","owner":"paritytech","description":"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.","archived":false,"fork":false,"pushed_at":"2026-02-19T19:58:37.000Z","size":2918,"stargazers_count":19,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-19T20:21:02.464Z","etag":null,"topics":["blockchain","cbor","cli","cryptography","dapps","dcbor","frost","gordian-envelopes","gstp","hubert","lifehash","provenance-mark","seedtool","shamir","sskr","typescript","uniform-resources","xid"],"latest_commit_sha":null,"homepage":"https://bcts.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause-patent","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paritytech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-01T01:47:03.000Z","updated_at":"2026-02-19T19:58:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"c69214d5-6387-44df-8b18-825cc8b302a8","html_url":"https://github.com/paritytech/bcts","commit_stats":null,"previous_names":["leonardocustodio/blockchain-commons-ts","leonardocustodio/bcts"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/paritytech/bcts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fbcts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fbcts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fbcts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fbcts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paritytech","download_url":"https://codeload.github.com/paritytech/bcts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fbcts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29887169,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T05:38:26.446Z","status":"ssl_error","status_checked_at":"2026-02-27T05:38:25.235Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","cbor","cli","cryptography","dapps","dcbor","frost","gordian-envelopes","gstp","hubert","lifehash","provenance-mark","seedtool","shamir","sskr","typescript","uniform-resources","xid"],"created_at":"2026-02-27T09:48:48.741Z","updated_at":"2026-04-25T02:04:48.156Z","avatar_url":"https://github.com/paritytech.png","language":"TypeScript","funding_links":[],"categories":["Software Development"],"sub_categories":["JavaScript"],"readme":"# BCTS - Blockchain Commons for TypeScript\n\n[![Version](https://img.shields.io/badge/version-1.0.0--alpha.23-green)](https://github.com/paritytech/bcts/releases)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue)](https://www.typescriptlang.org/)\n[![Monorepo](https://img.shields.io/badge/Monorepo-Turborepo-blueviolet)](https://turbo.build/)\n[![Package Manager](https://img.shields.io/badge/Package%20Manager-Bun-FFD700)](https://bun.sh/)\n[![Status](https://img.shields.io/badge/Status-Early%20Development-orange)](#-disclaimer)\n\n🔷 **Community Implementation:** This is a TypeScript port of the Blockchain Commons' open specifications and implementations.\n\n\u003e ⚠️ **Disclaimer:** This is a project in active development. It has not been audited, APIs and interfaces are subject to change.\n\n## Overview\n\nThis 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.\n\n## 📚 Resources\n\n- [CBOR Book](https://cborbook.com/) - Comprehensive guide to CBOR, dCBOR, and Gordian Envelope\n- [BC YouTube Channel](https://www.youtube.com/@blockchaincommons) - A YouTube channel with many lectures and tutorials\n- [BC Developer Docs](https://developer.blockchaincommons.com/) - BC's developer documentation\n- [JSON vs CBOR](https://hackmd.io/@leonardocustodio/json-vs-cbor) - Comparison of JSON and CBOR formats\n- [Deterministic Data: Intro to dCBOR](https://hackmd.io/@leonardocustodio/deterministic-data-intro-to-dcbor) - Introduction to deterministic CBOR\n- [dCBOR Deep Dive](https://hackmd.io/@leonardocustodio/deep-dive-dcbor) - Why \"almost\" deterministic isn't enough\n\n## 🎮 Applications\n\n### [BCTS IDE](apps/playground)\nAn interactive web application for experimenting with dCBOR encoding, Uniform Resources decoding, and Gordian Envelope visualization.\n\n**Features:**\n\n- **Data Playground** - Parse and visualize data with multiple input formats (Hex, UR, Bytewords) and output views (JSON, dCBOR, Diagnostic, Envelope tree)\n- **Envelope Builder** - Visual tree builder for creating Gordian Envelopes with signing, encryption, compression, elision, and salting transformations\n- **Registry Browser** - Browse CBOR tags, Known Values, and live IANA registry with category filtering and search\n- **QR Code Support** - Generate QR codes from UR output, scan via camera (including animated/fountain codes), and upload QR images\n- **Key Management** - Create and manage signing keys, encryption keys, and multi-recipient public keys\n- **Selective Disclosure** - Elide assertions while maintaining cryptographic integrity for privacy-preserving data sharing\n- **Templates \u0026 Examples** - Pre-built envelope patterns and example data for common use cases\n\n**Try it locally:**\n```bash\nbun playground\n```\n\n**Live Demo:** https://bcts.dev\n\n## 📦 Packages\n\n| Package | Description |\n|---------|-------------|\n| [**components**](packages/components) | Shared component utilities and helpers for the Blockchain Commons ecosystem. [📖 Docs](https://docs.bcts.dev/api/components) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-components-rust) |\n| [**crypto**](packages/crypto) | Cryptographic primitives including symmetric encryption (ChaCha20-Poly1305), hashing (SHA-256, BLAKE3), and key derivation (HKDF, PBKDF2). [📖 Docs](https://docs.bcts.dev/api/crypto) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-crypto-rust) |\n| [**dcbor**](packages/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](https://docs.bcts.dev/api/dcbor) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-dcbor-rust) |\n| [**dcbor-parse**](packages/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](https://docs.bcts.dev/api/dcbor-parse) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-dcbor-parse-rust) |\n| [**dcbor-pattern**](packages/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](https://docs.bcts.dev/api/dcbor-pattern) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-dcbor-pattern-rust) |\n| [**envelope**](packages/envelope) | Gordian Envelope - structured, privacy-focused data containers for secure information exchange. Supports encryption, elision, and cryptographic assertions. [📖 Docs](https://docs.bcts.dev/api/envelope) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-envelope-rust) |\n| [**envelope-pattern**](packages/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](https://docs.bcts.dev/api/envelope-pattern) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-envelope-pattern-rust) |\n| [**frost-hubert**](packages/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](https://docs.bcts.dev/api/frost-hubert) \\| [🦀 Rust](https://github.com/BlockchainCommons/frost-hubert-rust) |\n| [**gstp**](packages/gstp) | Gordian Sealed Transaction Protocol - a secure, authenticated, transport-agnostic data exchange protocol with distributed state management via Encrypted State Continuations (ESC). [📖 Docs](https://docs.bcts.dev/api/gstp) \\| [🦀 Rust](https://github.com/BlockchainCommons/gstp-rust) |\n| [**hubert**](packages/hubert) | Hubert - Distributed infrastructure for secure multiparty transactions using Gordian Envelope. Supports IPFS, Mainline DHT, server, and hybrid storage modes. [📖 Docs](https://docs.bcts.dev/api/hubert) \\| [🦀 Rust](https://github.com/BlockchainCommons/hubert-rust) |\n| [**known-values**](packages/known-values) | Known Values - compact, deterministic identifiers for ontological concepts. More efficient than URIs for representing predicates and relationships. [📖 Docs](https://docs.bcts.dev/api/known-values) \\| [🦀 Rust](https://github.com/BlockchainCommons/known-values-rust) |\n| [**lifehash**](packages/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](https://docs.bcts.dev/api/lifehash) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-lifehash) |\n| [**provenance-mark**](packages/provenance-mark) | Provenance Marks - cryptographically-secured system for establishing authenticity and provenance of digital works. Generates verifiable mark chains with configurable resolution levels. [📖 Docs](https://docs.bcts.dev/api/provenance-mark) \\| [🦀 Rust](https://github.com/BlockchainCommons/provenance-mark-rust) |\n| [**rand**](packages/rand) | Cryptographically secure random number generation utilities. Provides a consistent interface for random operations across all packages. [📖 Docs](https://docs.bcts.dev/api/rand) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-rand-rust) |\n| [**shamir**](packages/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](https://docs.bcts.dev/api/shamir) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-shamir-rust) |\n| [**sskr**](packages/sskr) | Sharded Secret Key Reconstruction (SSKR) - hierarchical secret sharing with groups and thresholds. Encodes shares in Bytewords for human-friendly backup. [📖 Docs](https://docs.bcts.dev/api/sskr) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-sskr-rust) |\n| [**tags**](packages/tags) | CBOR tag registry for Blockchain Commons specifications. Provides type-safe tag definitions for use across all packages. [📖 Docs](https://docs.bcts.dev/api/tags) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-tags-rust) |\n| [**uniform-resources**](packages/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](https://docs.bcts.dev/api/uniform-resources) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-ur-rust) |\n| [**xid**](packages/xid) | Extensible Identifiers (XID) - decentralized digital identity documents supporting keys, delegates, services, and provenance. Enables self-sovereign identity management with cryptographic verification. [📖 Docs](https://docs.bcts.dev/api/xid) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-xid-rust) |\n\n## 📡 Signal Protocol\n\n| Package | Description |\n|---------|-------------|\n| [**double-ratchet**](packages/double-ratchet) | Signal Protocol Double Ratchet implementation — X3DH key agreement, session management, group messaging (Sender Keys), sealed sender, and incremental MAC. [📖 Docs](https://docs.bcts.dev/api/double-ratchet) \\| [🦀 Rust](https://github.com/signalapp/libsignal/tree/main/rust) |\n| [**spqr**](packages/spqr) | Signal's Sparse Post-Quantum Ratchet (SPQR) — ML-KEM based post-quantum key encapsulation with erasure coding for ratchet upgrades. [📖 Docs](https://docs.bcts.dev/api/spqr) \\| [🦀 Rust](https://github.com/signalapp/SparsePostQuantumRatchet) |\n| [**triple-ratchet**](packages/triple-ratchet) | Triple Ratchet protocol — extends the Double Ratchet with SPQR post-quantum ratchet steps for quantum-resistant end-to-end encryption. [📖 Docs](https://docs.bcts.dev/api/triple-ratchet) \\| [🦀 Rust](https://github.com/signalapp/libsignal/tree/main/rust) |\n\n## 💻 CLI Tools\n\n| CLI                                                  | Description |\n|------------------------------------------------------|-------------|\n| [**dcbor-cli**](tools/dcbor-cli)                     | Command-line tool for working with dCBOR data. Parse, encode, and convert between hex, diagnostic notation, and other formats. [📖 Docs](https://docs.bcts.dev/api/dcbor-cli) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-dcbor-rust) |\n| [**envelope-cli**](tools/envelope-cli)               | Command-line tool for creating and manipulating Gordian Envelopes. Supports encryption, signing, elision, and format conversion. [📖 Docs](https://docs.bcts.dev/api/envelope-cli) \\| [🦀 Rust](https://github.com/BlockchainCommons/bc-envelope-cli-rust) |\n| [**lifehash-cli**](tools/lifehash-cli)               | Command-line tool for generating LifeHash visual hash images as PNG files. Create deterministic icons from any input data. [📖 Docs](https://docs.bcts.dev/api/lifehash-cli) \\| [🦀 Rust](https://github.com/BlockchainCommons/lifehash-cli) |\n| [**provenance-mark-cli**](tools/provenance-mark-cli) | Command-line tool for generating and verifying Provenance Marks. Create mark chains for establishing authenticity of digital works. [📖 Docs](https://docs.bcts.dev/api/provenance-mark-cli) \\| [🦀 Rust](https://github.com/BlockchainCommons/provenance-mark-cli-rust) |\n| [**seedtool-cli**](tools/seedtool-cli)               | Command-line tool for generating and managing cryptographic seeds. Supports multiple output formats including hex, Bytewords, SSKR shares, and Gordian Envelope. [📖 Docs](https://docs.bcts.dev/api/seedtool-cli) \\| [🦀 Rust](https://github.com/BlockchainCommons/seedtool-cli-rust) |\n\n## 👥 Credits\n\nThis TypeScript implementation is a direct port from the work of [@ChristopherA](https://github.com/ChristopherA), [@WolfMcNally](https://github.com/wolfmcnally) and [@shannona](https://github.com/shannona).\n\nConsider visiting [Blockchain Commons](https://www.blockchaincommons.com/) to learn more about the organization and their mission.\n\n## 🤝 Contributing\n\nContributions 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.\n\n## 🔐 Security Disclosure\n\nFound a vulnerability? We'd really appreciate you letting us know privately at **security@parity.io** - please avoid opening public issues for security concerns.\n\n## 📄 License\n\nThis project is dual-licensed:\n\n- **Signal Protocol packages** are licensed under the [AGPL-3.0 License](./packages/double-ratchet/LICENSE).\n- **All other packages** are licensed under the [BSD-2-Clause-Patent License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparitytech%2Fbcts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparitytech%2Fbcts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparitytech%2Fbcts/lists"}