Every year new users join the bitcoin network, securing their value by creating private and public key pairs and moving UTXOs to wallets where they have signing rights. Each time you perform an on-chain transaction, you compete with everyone else who wants to transact at that time; there can be far more people keen on getting into the next block compared to the amount of block space available.
When transactions pile up in the mempool, they can clear with time, but there is an upper limit to the amount of transactions bitcoin can clear. The more competition for block space, the more expensive bitcoin transactions become, and network congestion is a poor reflection of bitcoins’ ability to scale.
Bitcoin is regularly touted as a potential replacement for the global financial system or an alternative to state-backed currencies like the U.S. dollar; the Euro should either suffer a crisis. While bitcoin would provide an alternative medium of exchange and store of value to users, realistically, the bitcoin network could not handle nation states demand and manage the daily transfers of its citizens.
Bitcoin cannot meet the demands of billions of users due to its 1-4MB block size (and 4-7 transactions per second) limit, which causes congestion and high transaction fees.
That situation remains the same unless tethered second-layer solutions are created to handle the load instead of the blockchain itself. While the base chain continues to operate and offer a reliable final settlement, other layers can offset the need for block space by performing off-chain transactions that can be consolidated to the base chain later.
We have functional examples of this in the form of the Liquid Network and Lightning Network, but these second layers are not the only options in the works. Another possible solution for offsetting the need for block space is the idea of a CoinPool, pitched in 2020 but formalised with a white paper written by Antoine Riard and Gleb Naumenko in 2022.
What is a CoinPool?
CoinPool is a work-in-progress second-layer Bitcoin protocol allowing users to perform bitcoin transfers cheaper and faster. A CoinPool would use a multi-party construction to improve bitcoin onboarding and transactional scaling by orders of magnitude.
CoinPool allows many users to share a single UTXO and make instant off-chain transfers inside the UTXO while allowing withdrawals at any time without permission from other users. The CoinPool is constructed with one UTXO, and as far as the bitcoin base chain is concerned, all it sees is a balance held in a multi-sig wallet like any other.
While the single UTXO backs the CoinPool, inside the CoinPool instance state, you will find a defined set of public keys and the associated balances, which are debited and credited during pool operation. The CoinPool enables UTXO-sharing among many (from 2 to hundreds) participants and can communicate with other CoinPools.
When users transfer funds between them, they sign PSBTs (Partially Signed Bitcoin Transactions) and balances are updated between participants and held in the Merkle tree. Should you wish to leave a CoinPool, you could sign the current PSBT balance to the base chain and claim your funds to an on-chain wallet.
What are the benefits of CoinPools?
CoinPool allows making more Bitcoin payments with lower fees, instant confirmation, and an alternative approach to privacy. In some sense, it is an alternative to the Liquid Network, supposedly more efficient and usable in certain cases; instead of having a federation of members, you will have CoinPool operators, and instead of having a fork of the base chain backed by a pegged asset, you have a Merkle tree backed by the pegged UTXO.
CoinPool transactions need not be another environment to deal with but could simply be another route to complete a transaction.
If both users are inside a pool, two users could update their balances based on the user you’re sending to, as your wallet seeks the best route to pay someone. It improves bitcoin onboarding and transactional scaling by orders of magnitude by allowing CoinPool operators to manage transfers in their Merkle tree instead of on the base chain.
If you prefer the final settlement
If you’re not a fan of the CoinPool idea and prefer to pay the premium for holding your own UTXO, CoinPools can still help you. Those who don’t utilise CoinPool get more block space for their individual transactions, which lets them make their transactions at a lower cost.
CoinPools could be used selectively with certain communities or applications where users are transacting with one another regularly. Instead of broadcasting several daily transactions, exchanges, custodial wallets, and bitcoin-based applications can use a CoinPool to settle smaller and reserve the base chain for large-scale transactions.
What is needed to create a CoinPool
In the design’s current form, CoinPools leverage several bitcoin upgrades and Op Codes. It requires Merkle trees nested in taproot addresses, constantly updated partially signed bitcoin transactions, and a few OP codes:
- SIGHASH_GROUP,
- SIGHASH_ANYPREVOUT,
- and OP_MERKLESUB.
Combining the above variables would enable a covenant structure that makes CoinPools possible. Most importantly, the ability to transfer partial UTXO ownership off-chain.
The creation of smart corporations
The white paper suggests that CoinPools would have applications for trading pools, commodity contracts, and “smart corporations”, a similar idea to that of the DAO.
CoinPool groups can transact freely within the group, run additional protocols like payment channels, or even connect to other CoinPools and the Lightning Network—while leaving only a minimal record of their actions on the blockchain.
While pool operators may do these things for members of these pools, it’s limited to participants only. A CoinPool does nothing to improve bitcoins’ actual scaling situation that would make it more feasible for everyday users short of wallets providing routing through CoinPools.
How CoinPool works with Lightning
CoinPool instances being backed by an on-chain UTXO could be deployed standalone, as well as to enhance the Lightning Network. In theory, an In-pool account can be used for advanced protocols (e.g., payment channels) to fund Lightning channels.
Connecting them to other CoinPool instances or the Lightning Network makes in-pool funds highly liquid and could facilitate off-chain transactions at several magnitudes. The ability to easily update Merkle tree balances could make it far easier to rebalance Lightning Channels and provide an alternative to Channel Factories.
How does CoinPool compare to Channel Factories?
CoinPool and Channel Factories optimise the Lightning Network by utilising the block space more efficiently. The biggest difference between Channel Factories and CoinPool would be when users wish to exit the collective fund.
In a CoinPool, a single user can leave without affecting the pool, while one user withdrawing from a Channel Factory forces all other users to leave, significantly limiting its usefulness and potential savings.
Could CoinPool be used today?
No, we are still far off before seeing a CoinPool in action on a “testnet” or in the wild. Even the simplest CoinPool version requires SIGHASH_ANYPREVOUT, which many anticipate being the next Bitcoin soft fork. However, this simple version would only be a stepping stone and not enough in practice.
The CoinPool would not be scalable beyond 20 users and require balances with uniform amounts, which isn’t very practical.
Considering the various upgrades needed to create a CoinPool, it might take some time before we see one created. It might be better suited to creation on the Liquid Network, which can accommodate the needed scripting languages.
Do your own research.
If you want to learn more about CoinPools on bitcoin, use this article as a jumping-off point and don’t trust what we say as the final say. Take the time to research and check out the resources below.