Bitcoin has a scaling issue. Many people are either unaware of this or in denial, if you are one of these people I hope this article can inform or convince you. And if you have already realised bitcoin isn't perfect, perhaps I can tell you about some of the potential solutions.
First we must understand the problem bitcoin faces, and game out the potential futures if we fail to improve. In it's current form, the bitcoin blockchain allows for around 260 million transactions per year. On average there are 144 blocks per day, and 52,560 blocks per year. Each block can, at most, fit about 5000 transactions inside. Most blocks actually contain significantly less than this however. This means 260 million people could make a single transaction per year, we could imagine this being a lightning channel open, or a transfer into cold storage. Clearly this isn't enough transactions for 8 billion people world wide to be able to either self custody or use the lightning network. It would take 30 years to onboard the world to self custodial lightning, and that is assuming you have 0 channel closes or any other types of transactions, which obviously won't be the case.
You may be thinking that this is okay, as we can use custodians or "bitcoin banks" as a way to make payments with bitcoin, however I will try to explain why this is not a solution to scaling. If too much bitcoin ends up being stuck inside closed custody systems, outside of the base chain, we could have a repeat of the gold standard, where promises to exchange the banks IOU for real bitcoin get broken. This could occur if the individual base layer fees are too high and no new self custodial scaling solutions are introduced to bitcoin, meaning people have to use custodians by necessity. Paper bitcoin can then be created, leading to a fractional reserve system with inflation all over again. While we may be able to audit a bitcoin bank's reserves, if they disclose the addresses, we won't be able to audit their liabilities without trusting what they say.
Another issue that comes with having too much supply not being self custodied, is centralising the consensus of the network and potentially allowing the network rules to be changed by a central entity. Consensus is determined by the economic majority of nodes. If not enough capital, in bitcoin terms, is held self custodially then the custodians with their own nodes may be able to alter the system against the will of the users. We need regular people to continue to run nodes and verify their transactions, if they end up needing to use a custodian it's likely they will stop running a node. Mining pool centralisation has similar issues, and bitcoin’s lack of scaling can also make this worse. As fees increase, fewer and fewer miners will be able to claim their payments from the pool due to not reaching the withdrawal thresh-holds.
So, what are some proposed ways for solving this issue? Lets first discuss what options currently exist, without any consensus changes to bitcoin.
Lightning Network. The lightning network is currently the only truly self custodial scaling solution for bitcoin. By using a 2 party multisig, called a channel, you can make many off chain transactions with only 2 on-chain transactions. While lightning is a great tool and will likely serve a crucial function for a very long time, it does have limitations and is not the final solution to scaling. In order for someone to use lightning they must make a layer 1 transaction to open a channel. And in order to be truly self sovereign, your money is not settled until it is put back on L1 with a channel close transaction. As we mentioned earlier there is a limit on how many transactions can be done on layer 1. I believe lightning will most likely end up as a settlement layer between businesses or other large entities.
Federations. A federation, in regards to bitcoin, is a group of individuals or entities that each hold a key to a multisig containing bitcoin. This bitcoin can then be 'pegged' to a system or network that is off chain, the liquid network is an example of a federation. While a federation may be an improvement for some people versus a traditional bank custodian, ultimately it is still custodial. A relatively small group of people can conspire together to take your money or limit how you can spend it, and the government could easily control this small group. You cannot take your bitcoin out of the liquid multisig without permission from a majority of the key holders.
E-Cash Mints. An E-cash mint is another form of custodian, where you send your bitcoin to the mint in exchange for a predetermined amount of their E-cash tokens. This mint could also be a federation multisig, or controlled by an individual. By using E-cash you don't have to create layer 1 bitcoin transactions every time you want to spend. E-cash transactions can also be very fast, cheap and private. Some examples of E-cash projects are Fedimint and Cashu. Once again though, this is still a custodial solution and doesn't solve the issues we described above. I do think there is one very interesting use case for E-cash mints, and this is community or family banking. The so called “Uncle Jim model”, where a family or small local community entrusts their bitcoin with a trusted and technical member. This could be used as a custody method and also a scaling solution, where the transactions in the local town just use the local E-cash token, to avoid L1 or lightning fees.
Merge Mined Sidechains. This is another blockchain that is secured by bitcoin miners, as it uses the same proof of work mechanism that bitcoin uses, double SHA-256. Rootstock is an example of a merge mined sidechain. However there are 2 issues with this approach, there is no way to trustlessly withdraw from the sidechain, and more blockchains don't actually scale the base layer. While there are small improvements over traditional custody, unfortunately, you essentially have another form of a custodial network, which inherits the scaling issues of the base chain.
Now lets talk about the proposals that aren't currently possible, and would need new OP codes for bitcoin script, requiring a soft fork.
Covenants. A covenant is a contract you can voluntarily choose to be a part of, some spending limits can be applied to an address, where if you choose to accept bitcoin to it, new rules are applied that must be met for coins in that address to be spent. Some types of covenants already exist in bitcoin, such as time-locks, you can choose to make your bitcoin un-spendable for a predetermined amount of time.
OP_CTV is the most basic covenant proposal, it stands for Check Template Verify. If you are using CTV your transaction must have a template that matches the previously set template, the spending conditions must be met. Once applied these contracts cannot be changed by anyone, they allow for provably trustless payment structures such as payment pools, where multiple people share a single UTXO. Lightning is essentially 2 people sharing a UTXO, with covenants we can increase that to many people, potentially thousands, sharing a UTXO. This also comes with privacy benefits, as many people will share a single footprint on L1. This function can also be used to create batched channels, where many lightning channels can be opened with a single UTXO. In fact, covenants can improve lightning in many ways.
Vaults are another important potential tool that could be created with many different covenants, allowing things like claw-backs of bitcoin if you get robbed, or putting limits on where your bitcoin can go. Another use case is having an automated inheritance setup, where if you die and don't respond to a notification for a period of time, your bitcoin is moved to a wallet controlled by your heirs. Some other covenant proposal examples are; OP_CAT, OP_TXHASH and OP_VAULT.
We may also be able to create trust minimised or even trustless sidechain two way pegs, allowing people to deposit to and withdraw from a sidechain without anyone's permission, one proposed method for achieving this are called spacechains.
Covenants are very powerful upgrades to bitcoin, although relative to the greater world of programming, they are still very limited. Many years have been put into testing, researching and debating these proposals, however we must still be very cautious when making any changes to bitcoin's consensus rules. Ultimately the new tools created with covenants would all be opt-in, voluntary. Just like how you could send you bitcoin to an address nobody controls and lose it, or time-locking your bitcoin for hundreds of years, with covenants you could send your bitcoin to an address that prevents you spending your bitcoin, so caution should be taken when first using them. But over time, just like the lightning network, these tools can be developed and improved, to become simple and secure for the average person.
I believe we should make small steps towards the end goal of giving self sovereign to everyone on the planet. We don't need to scale to 8 billion next week, we have time, however we can't become complacent and believe bitcoin never needs to change and adapt again. OP_CTV is a very safe first step, it has been around for several years, with lots of testing. It can also be upgraded with further OP codes in the future, to allow for greater flexibility and improved scaling.
I highly recommend reading BIP119, which you can find here:
https://github.com/bitcoin/bips/blob/master/bip-0119.mediawiki
And a follow on article I wrote for bitcoin magazine, which goes into the activation process and the current community efforts for CTV:
https://bitcoinmagazine.com/culture/rubins-reubens-and-the-push-for-ctv
Some other useful websites to learn about covenants:
https://utxos.org/
https://covenants.info/
Lightning Network.