Scaling Bull Bitcoin’s non-custodial services with the Lightning Network

Francis Pouliot
Bull Bitcoin
Published in
3 min readSep 7, 2021


Bull Bitcoin users can now buy Bitcoin using their account balance and receive the payment in their own Bitcoin wallet using the Lightning Network.

Users can also sell their Bitcoin using the Lightning Network and receive fiat payments the same day in their bank account, or pay any third party biller in Canada using the Bylls payment services, and buy Gift Cards.

The software developed for Bull Bitcoin’s lightning network integration, LNURL-Cypherapp, is entirely open-source and we encourage other Bitcoin exchanges to implement it, fork it and contribute to it. The software is part of the Bull Bitcoin’s Cyphernode self-hosted API stack and uses C-Lightning. In addition, Bull Bitcoin developed and open-sourced its own LNURL implementation as a Cyphernode plugin (cypherapp) with a unique feature: fallback addresses.

When purchasing Bitcoin, by default we encourage the user to use our LNURL withdrawal protocol which most Lightning wallets are compatible with. The Bull Bitcoin application will generate an LNURL withdrawal code that the user can redeem for a short window of time (can be configured). If the user fails to redeem the Lightning Network payment before the expiry time, the LNURL withdrawal voucher will be deleted and the payment will be sent on-chain to the users’ fallback address.

This system was designed so that Bull Bitcoin does not accidentally become custodian of its users’ bitcoin if they fail to redeem the Bitcoin after they have made their purchase. The user provides a fallback address in his user profile and can change the fallback address every time they make a Lightning Network bitcoin purchase using LNURL.

Cypherpunk at all cost

Non-custodial exchanges are faced with a particular challenge: every buy and sell order requires a Bitcoin payment to take place. Custodial exchanges, on the other hand, let their users buy and sell bitcoin an unlimited number of times and bitcoin payments only occur when the user makes a deposit or withdrawal. This implies that non-custodial exchanges (and their users) are disproportionately affected by Bitcoin Network fees.

Bull Bitcoin expects network fees to gradually increase over time. As this happens, it becomes uneconomical to do transactions of small sizes, which excludes many users with a wide variety of use-cases from using our service. This would incentivize custodial payments platforms, a significant regression for Bitcoin’s privacy, security, censorship-resistance, decentralization and trust minimization. This is unacceptable. Bull Bitcoin’s primary objective is to develop sustainable solutions to Bitcoin self-custody and scalability problems without compromising on our cypherpunk principles.

We first mitigated this problem by coming up with an on-chain Bitcoin transaction batching system, but this only reduces the transaction fees up to around 75% (in most cases, much less). The benefits of on-chain transaction batching comes with significant payment delays: instead of receiving the payment right away, users must wait for the batch to be completed, which can take up to a couple of hours. In addition, we were also one of first exchanges to integrate the Liquid Network as a transactional method to buy and send Bitcoin. However, this payment network is significantly less popular among users than the Lightning Network, and does not provide the same security guarantees as the Lightning Network.

We believe that by integrating the Lightning Network, we have successfully future-proofed our non-custodial business model when it comes to Bitcoin Network transaction scalability. We couldn’t be more excited to finally join the Lightning Network community as a major contributor to the ecosystem!