This summer, we’ve been iterating through an article intended to talk about the success that Blockchain Commons has had working with the Wyoming legislature to help to define a first-in-the-country legal definition of digital identity.
The Digital Identity Working Group for the Wyoming Select Committee on Blockchain meets again next week, on September 21-22, 2021. I will be providing testimony there at 2pm MST. As a result, we’ve decided to release the current draft of this article on digital identity and how Wyoming has defined it using Principal Authority, with the goal of helping to shape the agenda for digital identity for the next year, both in Wyoming and elsewhere.
In 2016, I wrote “The Path to Self-Sovereign Identity” to talk about the historic evolution from centralized identity to user-centric identity and to define the next step: a self-sovereign digital identity that was controlled by the user, not some third party. In it I also offered 10 Self-Sovereign Identity Principles which have been widely accepted by the decentralized identity community.
Self-sovereign identity has matured and grown considerably since, as I chronicled in “Self-Sovereign Identity: Five Years On”. There are now specifications, products, and entire companies supporting the concept. However, recent legal efforts to define self-sovereign identity may be just as important for catapulting it into the mass market.
It was another busy quarter for Blockchain Commons, with a focus on work on our Gordian reference apps, which demonstrate our architectural models and specifications. However, we had numerous other releases as well, including a lot of documentation to let everyone know what we’re doing.
Our major work included:
- Releasing a video overview of our specifications and technologies;
- Publishing our list of Gordian Principles;
- Releasing Gordian QR Tool and Seed Tool through the Apple App Store;
- Debuting our Sweeptool command-line tool;
- Experimenting with Timelocks for the next generation of #Smart Custody;
- Increasing our focus on the Rust programming language;
- Working with a sponsor on our first security review;
- Publishing docs on our UR and SSKR specifications;
- Kicking off two translations of Learning Bitcoin from the Command Line;
- Beginning work with our summer interns;
- Continuing to testify for the Wyoming legislature;
- Celebrating the fifth anniversary of self-sovereign identity; and
- Talking about the future of the BTCR DID.
Blockchain Commons has released Gordian Seed Tool, a new iOS app that allows for the creation, storage, backup, and transformation of cryptographic seeds is now available on the Apple appstore. It is an independent, private, and resilient vault, which can protect the most important underlying secret used by most cryptocurrencies: the cryptographic seed.
The state of California recently announced their Digital COVID-19 Vaccine Record system. It allows Californians to access a digital copy of their vaccine records, rather than having to depend entirely on their physical copy. The main entry point is a QR code containing a rudimentary Verifiable Claim (VC), which makes for great ease of use. However, Blockchain Commons has concerns over how the user experience (UX) design might negatively affect both privacy and security; we are working to address these with our new Gordian QR Tool for the iPhone, Blockchain Commons’ first Apple appstore release.
In the last year, Blockchain Commons has produced a large collection of specifications, reference libraries, architectures, and reference utilities meant to improve blockchain infrastructure by enabling interoperability among Bitcoin wallets — and in the future, other cryptocurrency applications, such as Ethereum wallets, and other cryptography programs, such as chat systems, key management programs, and more.
So, what do Blockchain Commons’ technologies do? We’ve just released a Technology Overview video that discuses the concepts and foundations underlying our work and also highlights many of our most important technological releases.
In Q1 2021, Blockchain Commons largely focused on working with companies to integrate our Gordian architecture, best practices, specifications, reference libraries, and reference applications into their wallets and services. This included:
- Released three Gordian reference apps for public beta testing on Apple’s TestFlight;
- Planned the creation of an independent Gordian Recovery app for use with third-party wallets;
- Updated our
keytool-clicommand-line interface app for new UR (Universal Resource) usages and future specifications;
- Refined our Lifehash specification to optimaize for black & white usage;
- Tested new improvements to Lethekit;
- Supported the adoption of Gordian best practices by a variety of manufacturers; and
- Worked directly with our sustaining sponsor Bitmark to architect their new Autonomy bitcoin app.
We also did work to support the wider community, including:
- Produced a major design document on multisigs;
- Supported DID’s advancement on its standards track;
- Worked to develop the did:onion DID method;
- Developed packages to support activists; and
- Testified to legislatures in Nevada, North Dakota, and Wyoming.
In Fall 2020, Blockchain Commons continued to work on creating architectures, specifications, and applications to support blockchain infrastructure.
This has included:
- Releasing a trio of Gordian Cosigner apps;
- Advancing wallet interoperability specifications in the Airgapped Wallet community that we host;
- Researching new multisig specifications;
- Releasing a third platform for our seedtool application;
- Publishing Learning Bitcoin from the Command Line 2.0;
- Debuting our new torgap architecture;
- Organizing our reference crypto libraries and applications;
- Starting a DID architecture review;
- Working on Digital Identity laws; and
- Starting our 2021 blockchain internship program.
Here’s a bit more information on everything:
The Uniform Resources specification is one of Blockchain Commons’ most notable wallet enhancements of 2020: it enables airgapped PSBTs and is supported through a variety of reference libraries, including C++ and Swift implementations. Third parties have already ported the UR encoder to Python, Java, and Rust.
Uniform Resources, or URs, are a method for encoding binary data in plain text strings that are also well-formed URIs. They are simultaneously intended to address the challenges of QR codes, which are the main way that Bitcoin wallets transmit data across airgaps. While QR codes themselves are standard, the data encoded within QR codes is not, resulting in inconsistent usage among developers.
URs were created to resolve these interoperability issues by creating a standardized method for encoding binary data. They’re built on CBOR, the Concise Binary Object Representation described in IETF RFC 7049. The CBOR data is encoded in a typed UR object, which creates a self-describing, structured binary representation. URs can be transmitted as text or encoded via other means, including QR codes. Once received, URs can be decoded by different apps on different machines without having to guess about the contents or the encoding methods.
To fulfill its commitment to open source and to a defensive patent strategy, Blockchain Commons has joined COPA, the Cryptocurrency Open Patent Alliance.
COPA is a non-profit community that was formed by Square out of concern that misguided and offensive use of patents can stifle innovation, and that companies not focused on patent creation themselves would be unable to defend themselves from aggressive (often non-practicing) patent holders. Members of COPA pledge not to use their patents offensively and instead pool their crypto-patents to form a shared patent library.
Blockchain Commons was resolute in joining COPA because it addresses problems and resolves frustrations that Commons Founder Christopher Allen has long observed with the American patent system.
Blockchain Commons has recently released v2.0 of our Learning Bitcoin from the Command Line course.
Learning Bitcoin was one of our first projects, launched back in 2017 with support from Blockstream. The intent of the course was to teach the fundamentals of Bitcoin programming through Bitcoin Core and its RPC-based command-line interface. We chose this methodology because Bitcoin Core is one of the most robust, secure, and safe cryptocurrency interfaces in existence. We believe it’s the solid foundation for programming Bitcoin; it also allows you to interact with Bitcoin in a way that teaches the fundamentals.
Blockchain Commons’ overarcing goal has always been to improve the open infrastructure of the blockchain industry, and one of the ways to do that is to build the next generation of engineers. Our course was very successful in this regard. It has helped Bitcoin novices to become Bitcoin developers: some have created their own open-source projects and others have been hired for entry-level jobs. Some of Blockchain Commons’ own engineers, including many of our interns, got their start with the Learning Bitcoin course. Even GitHub’s raw numbers reveal the interest in the course, with 100 Watches, 350 Forks, and 1300 Stars.
However, Bitcoin is still undergoing rapid development, which led to the need for v2.0 of the course, to update it for the most recent releases Bitcoin 0.20.0 & 0.20.1: every example in the course has been updated and revised accordingly. The updated course has also has been expanded to include a number of new topics. New sections discuss wallet descriptors, SegWit, and how SegWit’s new transaction types interact with Bitcoin Scripts. We’ve also added new chapters for larger topics:
- A chapter on PSBTs looks at Partially Signed Bitcoin Transactions as well as how they can be used with Bitcoin Core’s Hardware Interface.
- Though our focus is on the command-line interface, we also show how to create simple C programs to talk to Bitcoin Core using RPC and ZMQ (zeromq.org) libraries.
- Libwally from Blockstream is a great library to use with command-line programs, so another new Chapter covers leveraging its wallet and other cryptographic features.
- We also touch upon RPC programming in Go, Java, NodeJS, Python, Rust, and Swift.
- Finally, we’re proud to present our first look at using the Lightning Network from the command-line interface, focusing on Blockstream’s C-Lightning, in a two chapter finale to the book.
Bitcoin is quickly evolving, but the Learning Bitcoin course from Blockchain Commons is now updated to teach all about its newest concepts. If you’re a novice looking to learn about programming Bitcoin, an educator needing to teach students blockchain technologies, or an expert wanting to help us by reviewing, adding to, or translating the course, please take a look!
However, we need your support. Where v1 of Learning Bitcoin was largely sponsored by Blockstream, v2 was done with our own resources. We hope that you can help us recoup those costs, so that we can continue to create open infrastructure of all sorts. If you think that education resources of this sort are important, please become an Sustaining Sponsor, or if you prefer, make a one-time donation at our BTCPay. As an individual, you can join as one of our many individual sponsors to financially support future development of Learning Bitcoin, other educational resources, and open infrastructure.
Thank you for your help in improving our techological commons for blockchain and Bitcoin users!
Blockchain Commons has released a feature-complete version of LetheKit, a do-it-yourself hardware platform that allows you to conduct cryptographic operations on an airgapped device. Complete information for creating your own LetheKit and downloading its software can be found in Blockchain Commons’ LetheKit repo.
Because you build LetheKit yourself and use open-source software, you know everything about your kit, and can depend on it for safe Bitcoin seed generation.
In summer 2020 (Q3), Blockchain Commons really came together as both a professional organization and as a collective to support open infrastructure for blockchain.
This quarter, in addition to the ongoing financial contributions from our Sustaining Patrons, we’ve begun receiving our first funds from Github Sponsors, which has totaled more than $8,000 to date, including mostly contributions from small sponsors. We’ve in turn been able to use those additional funds on a wider variety of projects. Simultaneously, we’ve also been revising our vision, strategy, marketing, and branding plan, to both set the future of Blockchain Commons and to explain its benefits to the wider world.
Blockchain Commons has been accepted into the new GitHub discussion program, allowing for more freeform discussions within the context of our GitHub repos. As we are a GitHub-centric organization, we are now using this as the main venue for discussions about philosophies, goals, standards, and projects. Please join us!
We are currently focusing on three different discussion areas:
- Gordian System Discussions — for users and developers of the Gordian system, including the Gordian Server, Bitcoin Standup technology, QuickConnect, and the Gordian Wallet. If you want to talk about our linked full-node and wallet technology, suggest new additions to our Bitcoin Standup standards, or discuss the implementation our standalone wallet, the Discussions area of the main Gordian repo is the place.
- Wallet Standard Discussions — for standards and open-source developers who want to talk about wallet standards, please use the Discussions area of the Airgapped Signing repo. This is where you can talk about projects like our LetheKit and command line tools such as seedtool, both of which are intended to testbed wallet technologies, plus the libraries that we’ve built to support your own deployment of wallet technology such as bc-bip39, bc-slip39, bc-shamir, Shamir Secret Key Recovery, bc-ur, and the bc-crypto-base. If it’s a wallet-focused technology or a more general discussion of wallet standards,discuss it here.
- Blockchain Commons Discussions — for developers, interns, and patrons of Blockchain Commons, please use the discussions area of the Community repo to talk about general Blockchain Commons issues, the intern program, or topics other than the Gordian System or the wallet standards, each of which have their own discussion areas.
We of course will continue to use the Issues and the PR features of GitHub for discussions of repo-focused topics and for individual fixes, respectively, but the discussion areas are a great place to talk about more general topics.
Come join us in our new Blockchain Commons community!
Building on Libbitcoin
Today we are announcing the availability of the open source Bitcoin framework for iOS. We have been working with veteran iOS developer Wolf McNally on wallet apps for iOS that will support airgapped transaction signing and BTCR Decentralized Identity (DID). As part of this effort we chose to build on the open source libbitcoin library.
Our first #SmartCustody workshop will be on Tue, January 29, 2019, 10:00 AM – 4:00 PM PST, at 554 San Antonio Road, Palo Alto, CA 94040-1217, Map.
You can signup for the Workshop on EventBrite.
This is the first of three different #SmartCustody workshops. This workshop is designed for individual holders of digital assets, in particular cryptocurrency traders and those high net-worth individuals who are already familiar & working with digital assets, but are seeking to learn best practices for protecting themselves and their business from theft, fraud, or loss.
- Are you considering all possible threats to your digital assets?
- Do you have comprehensive procedures to assess your risk profile?
- How does your system stack up against others in industry?
Future workshops will be focused on holders of digital assets that have fiduciary responsibility to others, such as small investment funds & family firms, or those who are required to use third-party qualified custodians for management of digital assets due to the amount of funds held.
These #SmartCustody workshops are a project of Blockchain Commons, which supports blockchain infrastructure, internet security & cryptographic research.
The goal of social key recovery is for the user to specify groups of individuals that together possess the ability to recover the root secret of a wallet. A good social key recovery protocol should not just reflect what cryptographic primitives happen to be available for use, but rather instead should be designed to correspond with the structure of trust in the user’s social network, while balancing the technical tradeoffs involved under the hood.
The most popular social key recovery algorithm, Shamir Secret Sharing is considered information-theoretically secure. That is, any combination of shares less than the necessary threshold convey absolutely no information about the secret. However, all secrets have equal weight and once a sufficient threshold is achieved the secret can be reconstructed. In social contexts this can cause a number of problems in common real-world scenarios. In addition, Shamir Secret Sharing has a history of being naively implemented including a number of serious vulnerabilities.
To quote Bitcoin Core Developer Greg Maxwell:
I think Shamir Secret Sharing (and a number of other things, RNGs for example), suffer from a property where they are just complex enough that people are excited to implement them often for little good reason, and then they are complex enough (or have few enough reasons to invest significant time) they implement them poorly.”
Ideally an implementation of social key recovery should balancing numerous competing goals: