Bcoin: A Bitcoin Full-node Implementation in JavaScript

Many hardened developers and coders, after having read and been enthused by Satoshi Nakamoto’s whitepaper, decided to have a look under the hood and check out the Bitcoin code written in C++, and that is usually where the love affair ended. Notoriously difficult to work with, there are probably just a few dozen people in the world that are competent at manipulating and working with the Bitcoin Core bitcoind full-node C++ code.

All this changed when the Chief Technical Officer at Purse.io, Christopher Jeffrey released in the wild what started as an in-house project called Bcoin, open sourcing it on Github under a MIT licence.

Bcoin is a JavaScript implementation of a Bitcoin full-node. It is touted as a JavaScript bitcoin library which does a lot of the hard bitcoin things for you. No longer the exclusive domain of a narrow band of Bitcoin Core developers, JavaScript full-node implementations open the doors to web and app developers for new use cases. JavaScript is a language that a lot more developers are familiar with, and it now is a full featured stack on its own, known as the MEAN stack. Bcoin can be used on node.js and in browsers.

A JavaScript implementation of bitcoin brings along some controversy as it comes with veiled warning from none other than Satoshi himself, I don’t believe a second, compatible implementation of Bitcoin will ever be a good idea. So much of the design depends on all nodes getting exactly identical results in lockstep that a second implementation would be a menace to the network. The MIT license is compatible with all other licenses and commercial uses, so there is no need to rewrite it from a licensing standpoint.

Peter Todd also chimes in, I don’t believe there is anyone who is competent enough to do this. … Even the Bitcoin Core devs aren’t good enough to do this.

Initially started in 2014 by Fedor Indutny, a core node.js team member, the Bcoin reigns were then taken over by Christopher Jeffrey who was hired by Purse.io to work on the JavaScript library. In an interview on The Bitcoin Podcast, Christopher describes how he has been working on Bcoin mainly by himself for over a year before opening the project up to the open source community on Github in an effort to encourage more developers to get involved.

Bcoin packs a punch. It is compatible with all the major BIPs, SegWit and work has started to make it work with the Lightning network, a project pet named ‘blight’.

It looks like plenty will be watching this space as it develops, including heavyweights in the industry like Paul Puey from Airbitz.