Blockchain Commons is working on a large variety of projects all intended to improve the entirety of the community who is using blockchain technology and developing it.
Gordian Reference Projects
Reference projects demonstrate the self-sovereign approach of the Gordian principles, highlighting Independence, Privacy, Resilience, and Openness.
The Core Gordian System (web + iOS)
The Gordian system is a suite of powerful open-source tools that demonstrate a self-sovereign solution for Bitcoin embodied in the Gordian principles. It does so by using Torgap and QuickConnect API technology to link a protected GordianServer-MacOS (or the alternative Bitcoin Standup Linux Scripts) with a mobile GordianWallet-iOS so that you access full-node capabilities from a mobile device. (It’s meant to cut through a traditionally knotty problem in Bitcoin development.)
Gordian Cosigner (Android, iOS, MacOS)
Gordian Cosigner allows users to participate in a multisig by adding a signature to an otherwise unsigned or partially signed PSBT that was created on another device. It’s largely intended as an offline signing tool, which allows signing without a direct connection to a full node: a wallet that can create PSBTs or another transaction coordinator service is needed to initiate a transaction –– such as the Gordian system.
Gordian QR Tool (iOS)
Gordian QR Tool is a reference tool that acts as a secure place to store and backup sensitive data that is encoded into QRs. Powered by Uniform Resource, it was built to store SSKRs, PSBTs, and seeds encoded using URs, however it can also be used to store other sorts of sensitive data such as 2FAs. Data is always stored with multiple layers of encryption using your device’s keychain. A quick overview on using Gordian QR Tool is available in its Manual.
Gordian Seed Tool (iOS)
Gordian Seed Tool protects your cryptographic seeds while also making them available for easy use. Using Seed Tool, you can generate seeds and store them securely on your device. You can then derive and share multi-signature signing and verification keys from those seeds. Sophisticated backup procedures include printed pages and Sharded Secret Key Reconstruction (SSKR) — which lets you split your seed into pieces and send them to trusted parties, who can send them back to you in an emergency for seed recovery. You can even use an entirely offline device (no internet access) to store your seeds and use QR codes to exchange necessary information with online devices running compatible wallet or signing software.
Status: Late Alpha
Blog: 10/28/20: Blockchain Commons Releases Feature-complete LetheKit
LetheKit is a do-it-youself platform for performing various sensitive cryptographic operations on an offline airgapped device. It uses no WiFi or Bluetooth which could leak information and contains no local storage, and when the device is turned off it forgets any sensitive data stored in RAM. Thus the name Lethe (lee-thee), from the mythological river of forgetfulness and oblivion.
Status: Late Alpha
Spotbit is a portable Flask API for Bitcoin price data and candles. It can either be used as a repository of historical data that allows for more frequent API requests, or as a simple wrapper around exchange APIs that permits the user to collect information over Tor. It can aggregate data from over 100 exchanges and serve them from a single URL or using Tor as an onion hidden service. It’s extremely flexible: the user can decide which base currencies to use (USDT, USD, EUR etc), which exchanges to keep data for, and how much data to keep.
Educational projects consist of books, tutorials, or courses, intended to teach the usage of blockchains to programmers and end users alike.
Learning Bitcoin from the Command Line
This is a complete twenty-chapter course intended to teach system administrators, developers, and engineers who are already acquainted with the UNIX command line interface how to work with Bitcoin. It uses this methodology to teach the fundamentals of Bitcoin, from RPC communications to how transactions work and how scripts work. The majority of the course is focused on
bitcoin-cli, but there’s also information on scripting, on programming with the RPC interface, and on using other command-line programs, beginning with
PDF: #SC v1.01
Book Site: WWW Site Repo: SmartCustodyBook
Status: v1.01 Complete (2019-09-16)
Future: Outline for v2.0
Blog: 6/3/20: June TweetStorms on #SmartCustody Adversaries, 1-on-1 Advice, Supporting Smart Custody Book v2
The Use of Advanced Cryptographic Tools to Improve the Care, Maintenance, Control, and Protection of Digital Assets. This five-chapter (186-page) book is intended to make you rethink the security of your digital assets. It puts together a risk-modeling system with two additional building blocks: a cold-storage scenario for managing self-custody; and an extensively detailed list of potential adversaries. By working through the book, you can determine which adversaries are actually the most dangerous to your assets, and adjust your own self-custody scenario to accomodate them. Additional chapters talk about fiduciary duties with regard to digital assets.
A v2.0 of this book is in the planning stage, to improve the accessibility of the course, to support additional hardware tools, and to introduce multi-signature scenarios. Our multisig design article is our first content for that update.
Developer projects create resources for use by engineers and programmers, including libraries and CLIs. The Crypto Commons repository collects together all of Blockchain Commons’ wallet libraries and the utilities (reference implementations) built from them, as well as demos and tools which exercise and exemplify those wallet libraries.
Blockchain Commons offers a variety of C-language cryptographic libraries focused largely on wallet design, which can be used in your own projects. The current libraries include reference implementations of BIP39, Shamir Secret Sharing, Shamir Secret Key Recovery, and Uniform Resources. The usage of these libraries is also demonstrated in the keytool app and the seedtool app.
Repo: bytewords-cli Status: Feature-complete beta
Status: Feature-complete beta
Keytool is a command-line tool that implements a data flow graph for deriving cryptocurrency keys and addresses. Any of the nodes in the graph can be assigned and any set of nodes can be derived as long as their dependencies are met. It also acts as a showcase for Blockchain Commons’ C libraries, such as our reference implementations of BIP39, Shamir Secret Sharing, Shamir Secret Key Recovery, and Uniform Resources.
Repo: LifeHashTool Status: Late Alpha
LifeHashTool is a command line tool written in Swift that generates LifeHash images as PNG files and is distributed as a Swift package.
Status: Feature-complete beta
Seedtool is a command-line tool for creating and transforming cryptographic seeds of the sort commonly used by blockchain applications. It exercises the various cryptographic C libraries created by Blockchain Commons, such as our reference implementations of BIP39, Shamir Secret Sharing, Shamir Secret Key Recovery, and Uniform Resources.
Status: Late Alpha
URDemo is an app to demonstrate sending and receiving of URs using URKit written in Swift using SwiftUI. It demonstrates the use of URKit to send and receive single-part and multi-part Uniform Resources (URs) via QR codes. Multi-part QR codes are generated using Luby Transform code (fountain codes).
Open Infrastructure Projects
Open infrastructure projects create resources that can be used by the entire internet community.
Onion Address: h6zwwkcivy2hjys6xpinlnz2f74dsmvltzsd4xb42vinhlcaoe7fdeqd.onion
Related Repo: spotbit
A instance of Blockchain Commons’ Spotbit Bitcoin price-aggregation server, available for public usage.
Testnet Public Node
Testnet Node IP Address: 184.108.40.206:18333
Testnet Node Onion Address: email@example.com:1309
Related Repo: GordianWallet-iOS
Blockchain Commons maintains a public Bitcoin testnet node, primarily for use as an optional server for use with GordianWallet.
Tor Exit Node
Blockchain Commons supports the open infrastructure of Tor by running its own exit node.