Du kannst diesen Artikel auch auf Deutsch lesen.
Puoi leggere questo articolo anche in italiano.
Since December 30, 2024, the “Transfer of Funds Regulation” (ToFR), also known as the “Travel Rule” came into effect in all member states of the European Union, with the goal of combating money laundering and other criminal activities making use of cryptocurrencies. To comply with this new regulation, many brokers and exchanges are starting to implement verification steps when withdrawing or depositing bitcoin and other cryptocurrencies from and to your exchange account.
While these regulations do not directly affect you as a BitBox customer, since the BitBox02 is an independent and self-custodial wallet, the mentioned verification procedures can still be annoying and lead to problems, many of the service providers may not have thought of. Let’s take a look at what “Satoshi Tests” even are, what to keep in mind when creating a test transaction and, most importantly, how this verification process could be greatly improved using the Address Ownership Proof Protocol (AOPP).
Satoshi Tests
When sending or withdrawing crypto from your exchange account, the exchange may need to verify you are actually in control of the receiving or sending wallet before proceeding with the withdrawal. For example, because they want to comply with the ToFR or other local restrictions. From a technical perspective, there are multiple ways to achieve this, though none of them actually truly fulfill their purpose, as we will find out later.
“Satoshi Tests” are arguably the most primitive way of performing a verification like this. The user, who wants to verify they’re in control of a Bitcoin address, creates a test transaction with a small amount to the exchange. Upon receiving this test transaction, the exchange knows their customer is in control of the withdrawal address and can proceed with the withdrawal as requested.
Apart from a worse user experience, this creates bad incentives for the user’s privacy. Given that test transactions are expensive and take time, users are actively encouraged to reuse their withdrawal addresses several times, which is a privacy compromise.
The UX nightmare
While easy to implement for the exchange, Satoshi Tests can cause a horrible experience for end-users of hardware wallets like the BitBox02. This is due to not just one, but several reasons, which are important to understand if you find yourself in the situation of having to perform a Satoshi Test yourself.
Chicken-and-egg problem
To be able to create a test transaction, you first need some bitcoin. This creates a challenge for those who never bought bitcoin before: To withdraw bitcoin, they would need to verify their wallet address first, which they can’t, because they have no coins yet.
If the exchange does not provide the user with a few satoshis for the test, this circular logic forces users to either use a different service with a different verification method to buy a small amount of bitcoin, or ask a friend to lend them some. If you are in need of bitcoin for a test transaction, feel free to try out the integration with Pocket Bitcoin in the BitBoxApp! In any case, this is annoying from the user’s perspective and creates an unnecessary entry barrier to self-custody.
Change addresses
Things become even more annoying once we take a closer look at how Bitcoin wallets work: When someone “owns” bitcoin, they control an output of a transaction that hasn’t been spent yet, an unspent transaction output (UTXO). Just like real banknotes in your physical wallet, these UTXOs can only be spent in full, introducing the concept of change. When the inputs of a transaction are too large for the payment you want to make, modern Bitcoin wallets automatically create a new change output back to your wallet.
Now, when you create a test transaction to verify your wallet address, your wallet will automatically decide which UTXO to spend for this transaction. This is usually not random, but based on factors like optimizing for fees or privacy. However, this means that the UTXO you spend for the Satoshi Test could be from a change address by chance.
Change addresses are regular Bitcoin addresses, but wallet software like the BitBoxApp and many others treat them differently in the user interface. To avoid confusion and cluttering, payments to change addresses are not included in your transaction history, but only added to the total balance. This means that future withdrawals from the exchange to this change address would not be displayed in the transaction history.
To avoid this, users of the BitBoxApp must use Coin Control to manually select a suitable UTXO for the test transaction. Because the app labels UTXOs on change addresses as “Change”, you can simply avoid using these UTXO for test transactions altogether. Instead, pick any other UTXO to verify your withdrawal address.
Double Deposits
Things can get even more tricky when exchanges enforce Satoshi Tests for deposits as well. First of all, test transactions for deposits are arguably redundant, since the deposit itself is already proof of ownership over the wallet, but still, there may be services that enforce it anyway.
Let’s imagine a wallet user with a single UTXO of 1 BTC, which they want to deposit to their exchange account. The exchange asks for a test transaction from the address they will use for the deposit, which the user does. Remember how the concept of change works in Bitcoin? The user now creates a small payment to the exchange, e.g. 0.00001 BTC, and their wallet will automatically create a change of about 0.99999 BTC to a new change address – because that’s how Bitcoin wallets work.
The newly verified deposit address is now empty because of this, and the user would have to send the remaining balance back to the verified address in yet another transaction, resulting in a total of three transactions for a single deposit. Aside from the transaction overhead and the higher fees that come with it, this mainly causes unnecessary confusion among users who do not understand the complex inner workings of Bitcoin transactions.
Signing messages
Strictly speaking, a Bitcoin transaction is just a digitally signed message – the message being the transaction itself. But in the context of a Satoshi Test, signing the transaction simply serves the purpose of saying “Yes, I am in control of this wallet”. So why not just sign this message directly with the private key of the Bitcoin address, instead of creating an actual bitcoin transaction?
This is exactly what some services do, by requiring users to manually sign a message to confirm ownership of the Bitcoin address they want to use. While signing messages does not come with the downsides mentioned above, as well as no transaction fees, it still requires some technical knowledge from users who have to go through the entire process manually and may even force them to install additional software. Again, this creates an avoidable barrier of entry for users who want to take control over their own coins. You can find out how to sign messages with Sparrow Wallet and your BitBox02 here.
AOP protocol
The Address Ownership Proof Protocol (AOPP) was designed to automate the process of signing messages, creating a seamless experience for the end-user. The BitBoxApp supports this protocol since 2021, but adoption among exchanges, brokers and other wallets has been rather slow as up until now, no address verification was required for most services. We believe the AOPP could greatly improve the situation of complicated Satoshi Tests or manual message signing many users find themselves in.
From the user’s perspective, verifying an address using the AOPP in the BitBoxApp is very straight forward:
- Click on “verify address” on the website of your exchange
- The BitBoxApp opens and asks whether you want to proceed
- The BitBox02 asks you to confirm before signing the message
- Once confirmed, the address and the signed message are automatically sent to the exchange
- Done!
You may have used AOPP yourself in the past, if you set up an order on Pocket Bitcoin or Bittr with your BitBox02 before.
In short, it’s very similar to signing a Bitcoin transaction, with even less steps the user has to worry about. Contrary to some misconceptions, AOPP does not worsen the user’s privacy. It only exchanges data the user would have to share with their exchange anyway – a single Bitcoin address and a digital signature. It is simply a tool to make self custody easier. Because verifying an address can be done within just a few seconds using AOPP, it removes the burden from manually verifying new addresses regularly, which can ultimately improve the user’s privacy.
We believe self custody is the most important aspect of Bitcoin. It’s what differentiates Bitcoin from the traditional financial system, and in times of strict regulation for address verification, AOPP can help to make self-custody more accessible for everyone.
Pointless verification
From a technical perspective, you would be right in saying there is no point at all. It’s impossible by design to truly verify who is in control over a Bitcoin wallet. Private keys are merely large numbers that don’t contain any information about who created them or who they were shared with. Even if they did, it would be impossible to verify such claims, since there is no central authority in the Bitcoin network that “registers” users.
While a test transaction or signed message does confirm that someone knows about the address verification process, they do not reveal who that someone is, which means they offer no new information at all. The user of the exchange could simply forward a verification challenge, i.e. the address for the test transaction or even an AOPP request, to someone else, who then performs the required steps. This is not far-fetched at all, since the two would have to communicate with each other anyway to exchange a Bitcoin address.
Money launderers, terrorists and criminals in general, who are targeted by these regulations, can easily bypass any of the technical verification steps if they really wanted to, which arguably makes them pointless in the first place. This is neither an endorsement of criminal activity, nor is it an argument against the noble goal of fighting against it, but simply a technical reality of how the Bitcoin network works.
Conclusion
We hope this article helped to clear up some confusion you might have had about Satoshi Tests and what to keep in mind when you have to perform one yourself in the future. Complying with regulations like the ToFR can be annoying, both for individual users and service providers, but technical improvements like the AOP protocol already exist and are ready to improve the user experience and ultimately make self-custody accessible for anyone.
Your favorite exchange does not support AOPP? Reach out to them directly and provide feedback! You can point them to the open source AOPP repository containing the specification.
Frequently asked questions
Does AOPP reveal information about my wallet?
No, signing messages with AOPP does not reveal private information about your wallet. It only shares a Bitcoin address along with a digital signature with the service provider, which you would have to share with the exchange anyway, if you want to use their service.
Is AOPP owned by BitBox?
No, the AOP protocol is an open source standard BitBox helped to specify together with 21 Analytics, but it is independent of BitBox. While already being supported by the BitBoxApp, but we would love to see other wallets and services to integrate AOPP as well.
Why does my exchange not support AOPP?
If you would like your favorite exchange to support AOPP instead of cumbersome Satoshi Tests or manual message signing, you should reach out to them directly and provide feedback. Together, users of exchanges can have a more powerful influence on feature requests like this.
Don’t own a BitBox yet?
Keeping your crypto secure doesn't have to be hard. The BitBox02 hardware wallet stores the private keys for your cryptocurrencies offline. So you can manage your coins safely.
The BitBox02 also comes in a Bitcoin-only version, featuring a radically focused firmware: less code means less attack surface, which further improves your security when only storing Bitcoin.
Shift Crypto is a privately-held company based in Zurich, Switzerland. Our team of Bitcoin contributors, crypto experts, and security engineers builds products that enable customers to enjoy a stress-free journey from novice to mastery level of cryptocurrency management. The BitBox02, our second generation hardware wallet, lets users store, protect, and transact Bitcoin and other cryptocurrencies with ease - along with its software companion, the BitBoxApp.