A journey into the World of Bitcoin Lightning Development
Having been involved in the tech scene since 2002 and traversed my way through a jungle of development, this year I decided that it was time to pursue one of my greatest passions. Bitcoin.
I’ve been following Bitcoin from a distance for many years and have been very much taken in by the ambitious goals of the project as well as the vibrancy of the community that surrounds it. I can’t think of any better use of my time than using my experience and appetite for Open Source development to take part in something really big and potentially world changing.
So after a year of planning and positioning myself to step away from a CTO role at a tech startup that I helped to form several years ago, I am now three months into life as a Bitcoin developer…
Getting Started
First, I had to take a step back and ask myself a number of critical questions:
- What are my skills?
- How can my time be best put to use within the Bitcoin ecosystem?
- Where are the major gaps in my knowledge?
- How could I get involved?
1. What are my skills?
I started out as a graphic designer back in the late 90s and through the early 2000s I moved onto web design, web development, and general programming. From HTML to CSS to PHP to Python to Ruby to Node to Mongo to Docker… I’ve been around the block.
It wasn’t until 2009 though that I started to get into the Open Source aspects of development through the Drupal community, which at the time was (and still is to this day) one of the biggest Open Source projects on the planet.
I tried to open source as much of the work that I did over the years, and by the end of a seven year stint I was the author and co-maintainer of hundreds of widely used Drupal modules I attended and spoke at some pretty large developer conferences and really got a kick out of being able to learn from others in the space and openly share my own knowledge.
Around 2015 I shifted gears from Drupal and PHP into the world of full stack JavaScript, once again becoming immersed in the communities that surrounded the new tools and platforms that I was leveraging on a daily basis.
For me, it’s the Open Source source stuff that really piques my interest. Being able to contribute as part of a globally diverse distributed community with a shared vision, purpose, and passion.
2. How can my time be best put to to use within the Bitcoin ecosystem?
After the multi-year long Bitcoin scaling debate, I became a firm believer in the Lightning network as a scaling solution. It has some real potential and after years of being in the making, it is only now starting it’s journey into the wild.
So — in my view — the best way to further the evolution of Bitcoin is to help bring the Lightning network to it’s full potential.
I don’t see myself as a protocol developer per-se, so I’m probably not going to do too much work directly on the Bitcoin or Lightning protocols, not at this stage at least. But the Lightning network is far bigger than just a protocol. It’s an ecosystem, and one that is very much in it’s infancy.
I would liken the state of the Lightning network to the state of Bitcoin several years ago. There are wallets but they are not great. There are some merchant tools but they are not widely used or even known about. The protocol itself has many shortcomings but they are being worked on. The whole thing is still very much beta. To me, beta means opportunity.
3. Where are the major gaps in my knowledge?
Now I knew a thing or two about Bitcoin, but mostly at a conceptual level, and whilst by this point I did understand the inner workings of the protocol at a pretty deep level, I hadn’t done any real hands on development work with Bitcoin or it’s supporting technologies.
The first obvious thing was to plug some of these gaps in my knowledge. So right off the bat I set up a Bitcoin Core full node and and LND node so that I had an always on Lightning wallet under my control and at my disposal.
Next, I read the Lightning white paper so that I could better understand how it functions. I felt even more excited and energised by the end of this process.
4. How could I get involved?
If the Lightning network is to become a widely used consumer facing payment network we are going to need decent wallets. I wanted to get a sense of what state the existing Lightning GUI wallets were in. I had been following the progress of the Zap wallet for a while and liked the direction that they were going in. So I downloaded their beta release and took it for a spin.
I was generally pretty impressed. The Zap team had done a great job of making an innovative product with a focus on user experience.
But there was something missing. I wanted to use Zap to control my always on LND instance and this wasn’t an option with the current version of the software…
As I started to dig around the source code for the Zap wallet I found that it was all pretty familiar — Javascript. It’s built in React and delivered as an Electron app.
Now I have never touched React or Electrum before, but I do know my way around JavaScript and I’m well versed in Node.js, Angular and other such libraries. This seemed like a great place for me to get stuck in…
A couple of days later and I had my 1st Pull Request ready.
Moving On
Three months on and I’m just about to submit my 46th Pull request!
In a relatively short space of time I have become a very active contributor to the Zap wallet project and I’m helping to build out a vibrant community of developers who are as excited and eager as I am to see the Lightning Network live up to it’s potential.
We have a long way to go, but it’s clear to me that the number of passionate people in this space is vast. The world is ripe for change and at this stage, any half good programmer can make a real difference.
If you want to get involved with Zap, join us over in our Slack community, download the wallet and give us your feedback, or just get stuck in and start coding!