Next.js logo

A trust-minimized solution designed to scale Bitcoin and extend the Lightning Network.

Outline
  1. Spark TLDR
  2. Why?
  3. How does it work?
  4. Build on Spark
  5. FAQ

Spark TLDR

Spark is a Bitcoin L2 that enables instant, dirt-cheap, and unlimited self-custodial transactions of bitcoin and tokens while also enabling users to send and receive natively via Lightning. It's open-sourced and secured by Bitcoin.

Spark Diagram

Spark is purpose-built for payments, and as such enables the following:

  • Native BTC

  • Full self-custody

  • Instant settlement

  • Extremely low fees

  • Native tokens (e.g. stablecoins)

  • Native Lightning interface without needing to run a Lightning node

  • Ability to scale to billions of users

  • 1/n trust assumptions (or minority/n) with the risk only at the time of transfer, not in perpetuity

  • Unconditional unilateral exits

  • Capital efficiency (no pre-funding, liquidity lockups, etc.)

  • Exists without the need for a new Bitcoin OPcode or any Bitcoin changes (although improves when they're available)

What Spark is not:

  • 100% trustless on day one

  • A new Bitcoin L2 launching a token

Why?

Bitcoin will be the payment protocol for money on the internet. Nearly 16 years after the Bitcoin whitepaper was published, its full vision of seamless peer-to-peer “electronic cash” efficient payments remains elusive.

Somehow, it's almost as if Bitcoin needed to gain prominence, resilience, liquidity, and regulatory clarity to evolve into its original purpose of digitally facilitating payments on its open, neutral, and decentralized network.

Bitcoin started the creation of the entire crypto industry. Inspired by both the whitepaper and the inefficiencies of Bitcoin L1, many competitive networks and assets were launched in the last decade. Some for totally different purposes than money movement, but many are attempting to become better versions of Bitcoin, either from a performance or developer capabilities standpoint.

Stablecoins are now gaining traction as a form of stable, digital money, albeit mostly centralized. They address the core need for stability as a suitable medium of exchange, and for some, serve as a novel form of mostly USD/fiat-denominated “bank accounts”. While there are signs of promise, the current combination of fragmented networks with a proliferation of new stablecoins entering the market will have a hard time making a real dent at the scale of payment volumes taking place on legacy rails.

Self-custody wallets for payments are gaining solid traction, allowing developers to build novel experiences faster than ever. For end-users, it's becoming less about "crypto" and more about a simple payment or financial service experience. Being able to build and spin up wallets for users with minimal regulatory and compliance overhead is one of crypto's most significant advantages, just as the internet has made the development of non-linear breakthroughs possible.

Bitcoin is the only network that will likely be around on every timeline; it's the natural bedrock for a radically new global payment network. Yet, as it is, it can't scale to meet global demands because it's too slow and expensive. Lightning solves this for custodians, enabling ultra-fast and ultra-cheap BTC transactions. But once you want to onboard millions of users with self-custody wallets, Lightning's design makes scaling economically difficult, if not impossible. The same is true when introducing stablecoins or any other assets. New protocols have emerged, but they haven't reached escape velocity; it's always too expensive and slow to scale.

Spark is built to address Bitcoin and Lightning's remaining challenges, focusing on scaling self-custody wallets and enabling stablecoins on Bitcoin. Combining these two features unlocks Bitcoin's fullest potential, helping it become the SMTP for money (Bitcoin, stablecoin, fiat). Spark is simple to implement and use, dirt-cheap, and fully interoperable with the current Bitcoin ecosystem. With it, developers can build novel applications once thought impossible on Bitcoin.

How does it work?

Spark brings together several concepts introduced to the Bitcoin community over the past few years and is heavily inspired by Statechains. With a lot of empathy, since we've gone through the same process ourselves, we'll take the time to explain each concept, making it as clear and enjoyable to read as possible. This section is still relatively high-level. For the technically savvy, we invite you to read our technical overview which gets into the weeds of Spark.

The general idea of Spark is that it allows assets on Bitcoin to be spent off-chain instantly. In Spark, the user sends funds into a shared-signature address, where the user retains full control of their funds and the ability to exit without any interaction from any other party. The participants of this address are the user and the Operators of Spark. When a user wants to transfer ownership of these funds, the Spark Operators adjust their keys so the new owner takes control, while the overall signature key remains static. The beauty of this is that at every moment, the current owner remains in full control of their funds and can exit at any time without needing permission from anyone. While users look to SOs to validate transactions by adjusting keys to reflect those transactions, the SOs do not assume control over users funds.

There are several ways to interact with Spark:

  1. Move funds in and out of Bitcoin
  2. Move funds within Spark to other users
  3. Move funds in and out of Lightning

Key Definitions

To fully understand how these transactions work, it helps to know who's doing what and how everything fits together.

Spark Entity

Spark Entity (SE)

A group of entities (individually called SOs) that help facilitate the transfer of UTXO ownership between users on Spark. Their job is simple: they generate, manage, manipulate, and delete their keys. This group can add and remove more operators via consensus to improve trust and performance.

Spark Entity

Spark Operator (SO)

One of the operators within the SE. They're mainly responsible for signing transactions and enabling transfers; they collectively make up the SE.

Spark Entity

Spark Service Providers (SSPs)

SSPs make transfers on Bitcoin and Lightning to/from Spark cheaper and more efficient. Anyone can be an SSP, though we expect these will largely be wallet providers, exchanges, market makers, etc. Some entities will likely be incentivized by charging a small fee for their services.

Spark Entity

Leaf/Leaves

These are virtual representations of a UTXO within Spark.

Moving funds into, within, and from Spark

Now that you're familiar with the key terms, we can dive into Spark and see how everything comes together. As mentioned earlier, there are a few ways to move funds in and out of Spark.

Bitcoin -> Spark

From your existing wallet, all you have to do is send some BTC to a deposit address shared by both you and the SE.

Before you transfer funds into Spark, you and the SE will sign an exit transaction. This is so that if the SE ever goes offline, you can reclaim your funds on L1 to your preferred address. Once your deposit is confirmed on-chain, you're all set—congratulations, you now have funds on Spark!

Spark Diagram

Spark <-> Spark

You can transfer ownership of a leaf to other users within Spark by coordinating with the SE. A transfer is only considered valid when the receiver holds a fully signed Bitcoin transaction they can use to unilaterally exit.

Spark Diagram

Lightning <-> Spark

Users within Spark can always send and receive payments directly via existing Lightning Network rails.

Importantly, Spark users don't need to run a node, manage Lightning channels, or lock up liquidity themselves. This eliminates almost all the overhead associated with traditional Lightning operations while providing true offline receive, which isn't available in typical Lightning.

All Lightning payments are facilitated by SSPs, who accept funds on Spark to send Lightning payments or receive Lightning payments in exchange for funds on Spark. These transactions are executed through atomic swaps, ensuring that neither the SSP nor the user is at risk of losing funds.

Spark Diagram

Spark -> Bitcoin

Spark is designed in a way that ensures users are able to exit to Bitcoin L1 whenever they want, without needing permission from anyone. There are two ways to exit Spark to L1:

The Cooperative Exit

This is the cheapest and fastest way to exit Spark. Similar to Spark-Lightning transfers, cooperative exits are executed through atomic swaps with an SSP, exchanging Spark funds for on-chain Bitcoin.

Spark Diagram
The Unilateral Exit

This represents the most pessimistic scenario and can occur at any time. While there doesn't need to be a specific reason to unilaterally exit, users might choose this option if a set of Spark Operators (SOs) goes offline or if they've lost confidence in the Spark Entity (SE) itself. Unilateral exits are more expensive than cooperative exits because more than one transaction needs to be published to prove ownership of the most recent state.

Spark Diagram

This solution requires no cooperation, and can be done by any user at any time. This is core to the design of Spark.

Tokens on Spark

Spark enables any assets on L1 to be spent off-chain instantly. This means that LRC-20s, BRC-20s, and Taproot Assets can be used on Spark, enabling the fastest and cheapest token experiences on Bitcoin, paving the way for stablecoins and novel applications.

Tokens on Spark are moved just like any other asset, with the same level of trust and security.

Risks

As you've probably understood by now, Spark Operators play a crucial role in Spark. They facilitate the sending and receiving of funds on the network.

It's important to understand that the trust model in Spark is time-bound and specific to each transaction. In a non-threshold setting, the system requires only 1 honest operator out of

nn
participants at the time of transaction. With a threshold configuration, this increases to a minimum number of honest operators, represented by
((nthreshold)+1)/n((n-threshold)+1)/n
, which is still a minority of SOs.

Crucially, once a transaction is complete, the risk dissipates. If the minimum number of operators (or 1/n in a non-threshold setting) delete their last key after a transaction, the user is completely protected from any potential loss of funds or malicious actions. This means that while there is a trust requirement at the moment of transfer, it doesn't persist indefinitely.

The threshold configuration offers a balance: it increases the number of operators that need to be trusted momentarily, but it also enhances the network's robustness by reducing the need for every single SO to be online at all times. This makes the system more resilient from a network perspective while maintaining strong security guarantees for users.

Build on Spark

Spark is built with simplicity, security, and performance in mind, so end-users and developers can have the best experience possible.

It's still the early days, but Spark already unlocks applications that were previously thought impossible on Bitcoin.

Here are things already being built on Spark:

  • Bitcoin-native stablecoins
  • Bitcoin-native self-custody exchange
  • Bitcoin miner payouts
  • P2P payments
  • Bitcoin rewards
Spark enables developers to create nearly any experience on Spark.

Spark UX
If you're interested in building on Spark, register for the beta release here.

FAQ