One of bitcoin’s most prolific developers is attempting to help with one of the payment network’s longest-running issues.
Today, bitcoin is known for the new digital control of money it provides to users, not for it’s usability and convenience. And if you haven’t experienced it yourself, you’ve probably at least heard stories about users losing their private keys, accidentally sending bitcoin to the wrong address due to a typo, or some other gaffe.
To date, ideas to get around the direct use of public and private keys – long strings of characters that control bitcoin accounts – look like they’re some years away. One fuzzy idea, for example, is to somehow bury them completely so that users don’t even realize they’re using bitcoin.
For now, though, cryptocurrencies are stuck with confusing addresses.
This is where Bitcoin Core developer Pieter Wuille’s latest project Bech32 (which he is co-developing with Blockstream CTO Greg Maxwell) aims to at least steer addresses in a more user-friendly direction, if in a less revolutionary way.
The end game is a new kind of bitcoin address with capabilities baked in to help users detect when they type the wrong address.
The opportunity to make the improvement arose when bitcoin developers realized that they would need to invent an entirely new addressing scheme anyway with the possible future integration of SegWit – a controversial change proposed for bitcoin’s code.
The tech upgrade, if ever implemented, works best with a new bitcoin address format.
Wuille told CoinDesk:
“Given that we’re forced to define a new standard anyway for native SegWit addresses, why not take the opportunity to introduce something better?”
He added that SegWit can also be used with existing addresses, but with “slightly lower efficiency and security.”
It’s important to note, though, that the new format won’t replace the old one. Rather, it’s an alternative that would be used for SegWit transactions, should they be deployed on bitcoin.
“The old-style addresses will remain in use for all purposes they were used for before. Only native SegWit outputs will use Bech32 addresses,” Wuille explained.
To recap, a bitcoin address is a version of a user’s public key to which users can send value. Its unique identifying information is similar to a credit card number, and you can post this string on a public page or send it to a person in order to receive funds.
Right now, bitcoin addresses are encoded in the format Base58, meaning the unique ID is displayed as a string of letters and numbers.
This format already builds in a form of user protection because it cuts out six characters that look similar to each other. The subtle difference between ‘0’ and ‘O’ might unintentionally trick users copying their bitcoin address from a computer screen, for instance. Rather than risk a mixup, both letters are removed completely.
Base32, a part of Bech32, takes the ‘human-readable’ element even further. Letters in the new addressing format are either all lower case or all upper case (not a combination).
Here’s an example of the old format:
And, here’s an example of an address in the new format:
Next, the new format builds in a form of error detection.
Wuille has put together a demo that actually flags key entry mistakes. If you mistype the address – say you write an incorrect letter – it knows, sometimes even highlighting the erroneous letter in red.
The bitcoin improvement proposal (BIP) describing the new scheme also highlights other technical details that are more likely to interest wallet developers aiming to implement the format.
For example, Bech32 requires less space for QR codes, a barcode that you can scan with a smartphone (or other device) to retrieve a bitcoin address. Further, decoding the new format is faster than with Base58.
Today, this scheme is tailored toward bitcoin addresses, those which users can make public to receive bitcoin. Yet, Wuille said at a recent meetup that the same technique could also one day be used for private keys.
A number of developers, such as the teams behind some capacity boosting Lightning Network implementations and bitcoin wallet Electrum, are looking into using the new format. Litecoin developers are, too, as the lesser-known cryptocurrency adopted the SegWit update on Wednesday.
On the other hand, while this new format was created for bitcoin, Wuille emphasized it isn’t just for the cryptocurrency world, and could have applications where similar formats are used.
Base64, for example, a widely used format that doesn’t necessarily have human-readability in mind, is used for encoding all kinds of data.
If the address scheme is ever implemented, Wuille added, he expects that it will take time for users to pick up and use the new technology, since both senders and receivers need to support it to make a successful transaction.
This has been the case for pay-to-script hash (P2SH) addresses, which are addresses for more advanced (and less used) bitcoin transactions types, such as those that require two out of three participants to sign off on sending money.
“The point is just that if we ever want to be able to use native SegWit, a standard for its addresses needs to be defined and available for a long time beforehand.”
Correction: An earlier version misstated that SegWit “requires” a new format. This has been corrected.
Pieter Wuille image via Pete Rizzo for CoinDesk