At Bringin, we are committed to providing the most efficient and secure self-custody solutions for our users. We are excited to announce our migration from the Liquid Network to the Spark protocol. This transition represents a significant upgrade in how you manage, spend, and secure your Bitcoin within the Bringin app.
The Foundation: Why We Migrated to Spark
Previously, the Bringin self-custody wallet operated on the Liquid Network (using L-BTC). While Liquid provided a robust secondary layer for Bitcoin, we have decided to migrate to Spark to offer a more streamlined, scalable, and user-centric experience.
Why Spark?
Reduced Complexity: Spark simplifies the user experience, while remaining self custodial.
Improved Scalability: Spark is designed for high-frequency transactions, making it ideal for daily Bitcoin use. Transactions are executed instantly and are extremely cheap. Also, by integrating Spark the Bringin wallet can now handle larger on-chain and Lightning transactions more efficiently.
Future-Proofing: By moving to Spark, we are adopting a protocol specifically optimized for the next generation of Bitcoin financial services.
How Your Funds Are Stored and Secured
Spark is a protocol built to give you control over your Bitcoin without requiring you to manage a full Lightning node.
Think of Spark as a "smart ledger" that sits on top of Bitcoin. When you receive funds in your Bringin wallet, they are stored as Spark units (“leaves”). Let us explain what this means in practice.
The Spark protocol is a trust-minimized scaling solution for Bitcoin. Unlike a traditional "wrapped token” like L-BTC, Spark units maintain a 1:1 parity with Bitcoin through a sophisticated cryptographic architecture. When BTC is moved into the Spark protocol, it becomes a digital cash instrument whose value is mathematically backed by Bitcoin held in a secure, verifiable state. This allows for instant, cheap, high-frequency transactions that inherit the security properties of the Bitcoin mainnet.
Your wallet generates a standard BIP39 mnemonic phrase—those 12 words represent your private keys. These keys control your Spark units on the protocol, just as a Bitcoin wallet's keys control BTC on the main chain. The crucial point here is that you, and only you, have access to these keys. Bringin never sees them, stores them, or has any ability to access your funds.
The Lightning Connection: How Submarine Swaps Work
The magic that makes our Lightning wallet feel seamless happens through Submarine Swaps, specifically using the Boltz Exchange.
Submarine swaps are trust-minimized atomic swaps of off-chain BTC (on Lightning) for Layer 2 BTC (on Spark) and vice versa. A payment secured by a Hash Time-Locked Contract (HTLC) is routed over the Lightning Network (LN) to a service provider who creates a corresponding output on the Spark protocol. Now let’s see how this works in Bringin.
The service provider we use for making these swaps is Boltz, an instant, account-free, and non-custodial service built on top of the Lightning Network. Boltz operates without collecting user data or requiring identity verification, maintaining the privacy and sovereignty principles of self-custodial Bitcoin.
Receiving Payments
When someone sends sats to your Bringin wallet via the Lightning Network, the payment goes to Boltz first. Boltz simultaneously creates two linked transactions: a Lightning transaction receiving the payment and a Spark transaction sending Spark units to your wallet.
These transactions are atomically linked through HTLCs. Before funds are transferred, your wallet generates a preimage (a random 32-byte secret). This secret is hashed and used to construct the HTLCs for both the Lightning and Spark payments. Either both complete successfully or both fail—there is no scenario where funds get stuck. Behind the scenes, the Lightning payment has been converted to Spark units and deposited in your wallet in just a few seconds.
Sending Payments
The same process works in reverse for sending payments. When you scan a Lightning invoice, your wallet creates a Spark transaction sending units to Boltz. Boltz then completes the Lightning payment to the final recipient on your behalf. This is atomic and trustless: Boltz cannot steal funds because the protocol ensures they only receive the Spark units if they successfully settle the Lightning payment using the preimage provided by the receiver.
Please note that submarine swaps allow you to send and receive BTC to/from any layer, not just the Lightning Network. For example, with your Bringin wallet, you can send BTC to your on-chain address too.
Technical Implementation Details
We leverage the Breez SDK for our Lightning functionality, utilizing its "nodeless" Spark implementation. This provides a self-custodial Lightning experience directly on your mobile device without the need for you to host any infrastructure or manage third-party dependencies.
However, unlike traditional mobile Lightning wallets, we don't actually maintain Lightning channels or deal with complex channel states. Instead, the Breez SDK interfaces with our submarine swap system and the Spark protocol to provide the Lightning experience without the Lightning complexity.
One of the key advantages of Spark is its instant settlement. While sidechains like Liquid process blocks every minute, Spark's statechain design doesn't rely on block confirmations for internal transfers, meaning your transactions settle as soon as they are executed. This makes the Lightning experience feel truly instantaneous. Furthermore, Spark preserves the native integrity of Bitcoin while enabling off-chain scalability, providing a modern privacy-centric alternative to traditional sidechain models.
For developers interested in the specific implementation, the wallet utilizes standard derivation paths to manage Spark units and Bitcoin states securely on-device. The Breez SDK handles the low-level communication with Spark Entities (SE), ensuring reliable access and cryptographic verification without requiring the mobile device to run a full resource-heavy node.
The Trust Model Explained
It's important to understand exactly what trust assumptions you're making when using our wallet. With the Spark protocol, you are utilizing a trust-minimized statechain architecture. While this is different from Bitcoin's base-layer model, it is significantly more secure than a custodial service because you retain ownership of your cryptographic keys.
The security of Spark relies on a co-signing mechanism between your device and a Spark Entity (SE). When you perform a transaction, the SE acts as a coordinator to ensure the validity of the transfer. This entity is a specialized infrastructure provider designed for high availability and security.
Additionally, Spark has built-in emergency recovery mechanisms. If a Spark Entity ever became unresponsive, the protocol's design includes time-locked backup transactions that would eventually allow you to reclaim your underlying Bitcoin on the mainchain. While the protocol is designed to avoid such scenarios, these "unilateral exit" paths provide a critical safety net for your funds.
You can always verify your funds independently, and because Spark is built on standard cryptographic primitives, your recovery phrase (seed) remains the ultimate key to your sovereignty. If you ever wish to move your Spark units back to the Bitcoin mainchain, the protocol supports a withdrawal process that settles the value back to a standard Bitcoin address.
The primary risk in the Spark protocol is known as the Key Deletion Assumption. Because Spark uses a statechain-based architecture, every "leaf" (your balance) is secured by a 2-of-2 multisig between you and the Spark Entity. When you receive a payment, the Entity "tweaks" its key to match yours and is then required to delete the old key share it held with the previous owner. If the Entity is malicious or compromised and fails to delete that historical key, it could theoretically collude with the previous owner to sign a transaction and steal your funds.
Privacy Considerations
Our implementation provides significant privacy benefits compared to both mainchain Bitcoin and custodial Lightning wallets. Because Spark transactions occur on a specialized Layer 2 protocol rather than the public Bitcoin blockchain, your financial activity is shielded from general outside observers. This architecture ensures that your transaction amounts and internal protocol movements are not broadcast for the world to see.
However, it is important to note that transaction metadata—such as the timing of your interactions with the Spark Entity—is technically visible to the coordinator facilitating the transfer. This is still far superior to custodial solutions where a service provider sees every detail of every transaction and holds your funds.
From Bringin's perspective, we cannot see your transaction history, total balances, or final payment destinations. When you make a Lightning payment, we don't know who you're paying or the specific breakdown of your Spark units. This privacy is baked into the protocol’s architecture—it is a technical constraint that ensures your sovereignty, not just a policy decision.
How can I migrate my existing Bringin wallet?
A seamless migration is key to ensuring you can take advantage of Spark’s speed and efficiency without any interruption to your self-custody.
Upon updating the Bringin app, users with an active Liquid wallet will be greeted with a dedicated migration prompt. This guided process allows you to transfer your existing L-BTC balance directly into the new Spark protocol. Because both systems are self-custodial, the app will facilitate an atomic swap to move your funds securely. Once the transfer is initiated, your Bitcoin is "re-locked" into the Spark statechain, appearing in your wallet as Spark units ready for instant Lightning payments.
Sources and References
Submarine Swaps & Atomic Swaps
Breeze SDK (Spark)