When you broadcast a transaction to the bitcoin blockchain, it goes through several stages before it becomes a confirmed transaction. This can be a nerve-wracking process for anyone who has moved their first UTXO on chain, and you’re checking the wallet or the block explorer and wondering where your money has gone. What makes this wait worse is that there are no middlemen, there’s no bitcoin helpline you can call, and there is no tech support to help you through the process.
You might be waiting for the first confirmation or eagerly awaiting those six confirmations, so you can rest easier knowing your funds are safely secured by the network in a wallet where you hold the seed phrase.
Preparing a transaction
Once you prepare a transaction, you submit the public key address, the amount you want to transfer, the fee you’re willing to pay, and the UTXO you want to spend, and you signal to the bitcoin network that you’re ready to transfer funds to that specified public address.
That bitcoin transaction is then relayed to nodes in the bitcoin network but has not yet been incorporated into a block and mined onto the chain. Zero-confirmation transactions are also known as “unconfirmed transactions”. A zero-confirmation or unconfirmed transaction is defined as an exchange that has not yet been recorded or verified on the chain by consensus rules. The transaction is considered to have zero confirmation until a block is mined and the transaction has been confirmed by other network participants.
Since we cannot speed up the block time, these transactions are often used when a seller releases goods before a bitcoin payment has been confirmed on the network, assuming that such confirmation will occur. It is also a sign of trust that the buyer will not double-spend the Bitcoin that has been sent.
Another popular use case for zero-confirmation transactions is the creation of Turbo channels, which allow you to create Lightning channels on the fly if and when you need them.
What is considered a zero-confirmation transaction?
A blockchain is a distributed ledger composed of an ongoing sequence of blocks. The blockchain is maintained by a network of distributed nodes that arrive at a consensus about the integrity of the data recorded on this common ledger. Any bad actors that intend to manipulate the blockchain would have to control at least 51% of the computing power on the entire network to sabotage its integrity.
After sending data to the blockchain, users must wait for one of the modes that maintain the network to register and then verify the data before adding it to a block. As the blocks are connected to one another, each verified block confirms all prior blocks as well.
A zero-confirmation transaction refers to a transaction that has not yet been confirmed on the blockchain and, as such, is not yet part of the blockchain. You can think of this as a transaction that has already been initiated but has not yet been confirmed by the network’s miners.
It’s also important to note that with any bitcoin transaction, the confirmation time will vary depending on the volume of transactions on a given network, so your zero confirmation transaction can remain outside bitcoin block verification for more than the average of 10 minutes.
Zero-confirmation transactions are not in bitcoin consensus
Zero-confirmation transactions have gained attention to enable fast payments in bitcoin, shortening the time for performing payments, for instance, when buying in vending machines, fast food restaurants, or withdrawing from a Bitcoin ATM. Still, even then, with protocols like the Lightning Network, these use cases are made absolute.
Despite being quickly propagated through the network, zero-confirmation transactions are not protected against double-spending attacks since the double-spending protection bitcoin offers relies on the blockchain. By definition, such transactions are not yet included in it.
How convenient could improve zero confirmation transactions
In bitcoin, we preach the mantra of verification over trusting, so bringing trust back into the bitcoin ecosystem, might not sit well with most maximalists. Code is law, and if you don’t have the confirmation from the time chain and the hash power to back you up, you have no foot to stand on.
One way to bring zero transactions back into consensus would be with BIP 119, which brings covenants to the bitcoin base chain. Using a combination of OP_CHECKTEMPLATEVERIFY and creating a covenant that doesn’t allow that bitcoin to move before certain conditions are met. This covenant rule would be secured by the network and need to be enforced even before the transaction is added to a block, adding a layer of security to transactions.
Don’t trust, verify
If you do plan to conduct a bitcoin transaction that requires a certain speed to achieve the transaction, you might not want to take the risk of zero-confirmation transactions and would rather use a route that can provide you with a faster settlement. Keeping funds in the Liquid Network with L-BTC or having a Lightning Channel setup will make it much easier to transfer funds at speed, and neither party will need to make any trust assumptions.
The Liquid Network offers two-minute settlement speeds, and the receiver will need nothing more about a Liquid public address. At the same time, Lightning will provide instant settlement, but the receiver will need to have a Lightning Wallet along with the inbound capacity to process the funds.
Depending on the size of the transaction or the technical competence of the parties involved, you could use these alternative routes to bypass the need for trust in a zero-confirmation transaction.