I’m excited to finally release Juggernaut to the world. Juggernaut is a messenger application built entirely on top of Bitcoin and the Lightning Network. It allows you to send and receive censorship-resistant, end-to-end encrypted, onion-routed, peer-to-peer messages and payments. This means there are no Juggernaut servers, no phone numbers, no banks, and no accounts needed to participate. There is no token. All you need is an up-to-date LND node and some Bitcoin to get started.
I knew the world had changed the moment it became possible to add custom data fields to a lightning payment. This meant that for the first time ever you could send a payment and any associated data in a single request.
When something that was previously impossible becomes possible it is usually something to pay attention to. Juggernaut is what I believe to be the first step along a new path exploring what has been enabled with this technology. I am excited to think about what kind of future we can create with it.
A familiar messenger
At it’s core Juggernaut looks and feels a lot like other messengers you are used to. You can start new conversations with other users, send messages, receive messages, etc. You’ll see unread message counts, most recent message previews, and timestamps. You’ll be able to search conversations, delete conversations, and quickly scroll back to the bottom of a conversation.
A lightning wallet
After implementing all of the core messenger features it became clear that there was a lot more functionality required to make the product truly usable.
You can’t send messages if your lightning wallet is empty, you aren’t connected to the network, or your fee rate is too low to route a payment.
This means Juggernaut needed to include most of the functionality you would often find in a lightning wallet. You can use Juggernaut to fund your wallet, open lightning channels, close lightning channels, and adjust fee rates.
Messenger with native payments
With the Lightning Network at its core, Juggernaut is able to integrate payments directly into the messaging functionality.
Send & Receive Payments
As easily as you can attach a file to an email you can attach a payment to a message. Just specify how many satoshis and an optional memo and click ‘Send’. The payment will instantly settled in the receivers wallet and appears in the conversation as just another message.
Send & Pay Payment Requests
Simply specify how many satoshis and an optional memo and the request is generated and sent to the recipient. You will see a spinner while the request is pending and once it is paid it will automatically update in the chat window. The receiver of a request is presented with a “Pay Request” button that they can settle in a single click without leaving the chat window.
How it all works
The text of each message you want to send gets embedded in the custom records field of a lightning payment and then sent to the recipient using a keysend payment. A keysend payment is a new way to send a lightning payment directly to a node’s public key without requiring them to generate an invoice first.
At its core Juggernaut helps you craft these message-embedded keysend payments as well monitor incoming payments for new messages sent to you. On top of this core we built a familiar messaging interface to make it easier to use.
This means that each message you send will actually pay the recipient 1 satoshi and each message you receive you will earn 1 satoshi. Juggernaut manages these ‘balances’ for each conversation you have and attempts to keep the net satoshis spent at 0.
For example, imagine a scenario where Alice sends two consecutive messages to Bob before he responds: “Hey” followed by “How are you?”. Alice will spend 1 satoshi for each message leaving her with a net balance of -2 satoshis.
If Bob responds with a single message“Hi Alice, I’m great” instead of sending the default 1 satoshi with this message, Juggernaut will know to send 2 satoshis in order to bring both participants net spend back to 0.
Despite this balancing act you will still need to pay routing fees for any nodes that charge them along the path to your destination. Juggernaut displays these routing fees next to each message so you always know how much you paid for each message.
Ideally you will open channels with ‘message-friendly’ routing nodes. A node might be considered message-friendly if it advertises low fees for low valued payments. This means you could pay as little as 1 millisatoshi per message. At current exchange rates that would allow you to send over 13,000,000 messages for $1. Talk about unfairly cheap.
If you’d like to avoid routing fees entirely you could instead pay a one-time on-chain fee and open a direct channel with your chat partner to enable unlimited free messages.
A messenger focused lightning wallet is just the first step of many for Juggernaut. We have lots of features that need to be built out in order to flesh out both the messenger and the wallet functionalities.
As for the messenger short term roadmap, you’ll find things like contact management, avatars, emojis, and reactions. On the longer term roadmap there are things like group, voice, and video chat functionalities.
As for the lightning wallet short term roadmap, there are things like paying lighting invoices, regular bitcoin transactions, and handling lightning/bitcoin protocol urls. On the longer term roadmap there are things to help with channel balancing and maintenance as well as lots of work to be done around onboarding users into lightning.
This is all still just scratching the surface as to what is possible with the lightning network. We’re excited to explore what we can build once a full-featured messenger + wallet application is in place.
This would not have been possible without the help of all the amazing companies and people helping to build out the Bitcoin and Lightning Network infrastructure and services.
Thank you to Alex Bosworth for all the questions that you’ve answered in the LND slack channels.