Learn

How can you actually verify your ownership of bitcoin?

Tom Honzik
How can you actually verify your ownership of bitcoin?

If you believe you own bitcoin in self-custody, how can you know for sure that this is the case? You might see your balance on a computer screen, but what if your wallet software has been compromised, and isn’t reflecting the truth?

Being able to verify ownership of your bitcoin savings can be important for peace of mind. Additionally, for businesses that hold a bitcoin treasury on their balance sheet, knowing how to perform such a verification can be helpful when engaging with third-party auditors. In this article, we’ll cover what you need to know in order to succeed in proving a bitcoin balance belongs to you.

Defining bitcoin ownership

Throughout human history, the concepts of property and ownership have been recognized as complex. Questions like “can I consider this location or item to be my belonging?” are not always straightforward. Answers to such questions have varied across time and place, affected by cultural, ethical, economic, and legal thought. 

The more recent advent of scarce digital property like bitcoin has introduced some new questions in this realm. Units of bitcoin are not physically stored at any specific location, because they are merely amounts on a distributed ledger. Bitcoin can be transferred or spent by whoever possesses the controlling keys, which are merely secret information in the form of a number, or representative words. This secret information can be stored on a physical premises, but exclusive ownership of a secret number or a combination of words can be a bit of an abstract idea.

Therefore, creating a precise, universal definition of bitcoin ownership is challenging. In practice, it will be determined by each legal jurisdiction. However, a colloquial understanding of bitcoin ownership is possible. In the context of self-custody, you might be considered to own bitcoin if:

  1. You possess the controlling keys to an address that holds a bitcoin balance; and
  2. The bitcoin balance has been acquired by you through lawful means

This article will focus on the first aspect—how to prove a bitcoin address has a balance, and that you possess the controlling keys to that address. The second aspect about how the bitcoin was acquired may not come into play unless there is a dispute, and would need to be dealt with on a case-by-case basis.

Verifying the balance of an address

All bitcoin balances (in the form of UTXOs) are tracked by the bitcoin blockchain. While transactions can transfer balances from one address to another, transactions are only recognized as final after they have been included in a new block. This means that as long as you know the current state of the blockchain, you can check the accurate balance of a bitcoin address.

The current state of the blockchain is tracked by bitcoin nodes. A bitcoin node is software that connects to the bitcoin network and relays information about transactions and blocks with other nodes on the network—this architecture is what makes the bitcoin blockchain ledger decentralized and distributed. A node isn't especially expensive or difficult to set up, so you can run one yourself, enabling you to have your own copy of the blockchain and interact with the network directly.

Third-party nodes and self-hosted nodes

Running your own node is not required to check the balance of an address. You could instead use a third-party node. The easiest way to do this is by visiting a blockchain explorer website, which allows you to use the provider’s node to search for address balances and other transaction information. Some popular examples of blockchain explorer websites include mempool.space and blockstream.info, but there are many others to choose from as well. When you’ve arrived at a blockchain explorer of your choice, you can paste a bitcoin address into the search field to check the balance (both current and historical).

Using a third-party node would mean you’re relying on information from someone else. Well-respected blockchain explorer websites are likely to provide accurate information, but you’d still be trusting them rather than independently verifying the information yourself. If you’re concerned about receiving false information from a blockchain explorer, one strategy to mitigate this would be to cross-reference several different explorers. If they all report the same address balance, it’s even more likely to be correct. However, privacy is another consideration—by searching for an address in a public blockchain explorer, you might be associating a bitcoin address with your IP address.

Running your own self-hosted node is preferable, because it allows you to use open-source software on your own equipment to truly verify an address balance independently. Prudent financial auditors are learning to set up their own bitcoin nodes, and run their own blockchain explorers. Plug-and-play nodes available for purchase include Start9 servers, Umbrel Home, and MyNode. Alternatively, node software like Bitcoin Core can also be installed directly onto a laptop with enough memory space.

Verifying control over an address

Anyone with a node can check the balance of all bitcoin addresses. This means that being shown an address with a verifiable balance doesn’t imply anything about who that address belongs to. Someone can easily make a false claim that any address with a balance belongs to them (or to you).

Therefore, to verify ownership of bitcoin attached to an address, you must also be able to confirm that you possess the private keys controlling that address. There are a few different approaches to this, depending on if you are trying to verify your control over an address for your own peace of mind, or to demonstrate your control of an address to a third party. We will discuss the following methods: confirming an address with a hardware wallet, sending a transaction, and signing a message.

Method 1: Confirming an address with a hardware wallet

If you’re following security best practices and protecting bitcoin in cold storage, then you are necessarily managing your private keys with one or more hardware wallets. Many hardware wallet models offer the ability to confirm control of a bitcoin address on the screen of the hardware wallet itself. To explain why this is a powerful verification procedure, we will examine the process of how it is used.

First, your wallet software interface on the screen of your laptop shows you a bitcoin address, and claims the address is controlled by your private keys (which are stored separately in your hardware wallet). Instead of trusting this claim, you’d prefer to verify it. To do so, you connect your hardware wallet and initiate an address confirmation. Next, information about the address passes from your laptop to your hardware wallet, and your hardware wallet internally uses the private keys to verify that the address was indeed constructed with one of those keys. Finally, the screen of your hardware wallet will display the address, and you must confirm that it matches the address shown on your laptop. If it does, then you know your private keys were involved in building the address. If it doesn’t match, or if the hardware wallet indicates a failure, then something is wrong, and your laptop might be showing you an address that was built with someone else’s keys.

If you’re suspicious that your laptop and your hardware wallet might both be lying to you, it’s important to remember that most hardware wallets are open source. This means that you (or watchdogs in the technical community) can check the code used by the hardware wallet, to ensure the device is programmed to be honest and accurate.

Confirming an address is primarily intended to be used before receiving bitcoin into your wallet. To receive bitcoin to self-custody, you must provide an address for the sender to use as the payment destination. If you are gathering the address from the wallet interface software on your laptop or phone, but haven’t yet verified that the address was legitimately produced by your keys, it’s possible (though unlikely) that you could be sharing a malicious address controlled by an attacker, who will then receive the payment. You can learn more about how to confirm an address with a Trezor, with a Ledger, or with a Coldcard, among other hardware wallet manufacturers. Multisig wallets like Unchained vaults and loans can also support this feature, and it’s a major reason why we believe holding a key to a collateralized bitcoin loan provides stronger safety guarantees.

It’s also possible to perform an address confirmation with a hardware wallet after the address has already received bitcoin, for your peace of mind. However, this verification method is best for personal use, and isn’t conducive to demonstrating control over an address to a third party. After all, the third party would need to be in the room with you and your hardware wallet (not ideal from a security perspective) and be convinced that you haven’t altered the hardware wallet device in some way.

Method 2: Sending a transaction

One way to confirm your control of the funds in a bitcoin address is to use your keys to perform a test transaction that spends some of the bitcoin out of the address. This exercise can be a straightforward way to provide you with the peace of mind that you do indeed have the ability to transfer your bitcoin, should the need arise.

This method can also be used as a demonstration for third parties. For example, if you want to demonstrate control of the funds in an address to someone, you could do this by sending a small amount out of the address to a destination specified by the third party. If you are willing to perform this action, then everyone can independently observe the successful occurrence of it on the blockchain, using nodes and blockchain explorers.

If you use this transaction method to demonstrate control over an address, there are some things to be mindful of. First, it will come at a cost, due to transaction fees and potentially sending a some amount of bitcoin to an address outside of your control. Second, the transaction will publish information to the entire bitcoin network about the locking script (such as the multisig quorum) for the address you are withdrawing from. This has privacy implications, though its direct effect on security is minimal—many of the richest addresses holding tens of thousands of bitcoin have endured this tradeoff. Third, it's common for wallet softwares to try to bypass this privacy issue by helping you construct a transaction that facilitates your tiny withdrawal, but also moves the remaining bitcoin on the address to a fresh, unused address in your wallet (as change). You could avoid this by constructing your transaction manually, otherwise you may need to move the bitcoin back to the original address in yet another transaction.

Ultimately, while sending a transaction is an available tool worth consideration, it’s far from an ideal solution. It can have a negative impact on your bitcoin balance and your privacy, and the act of transferring bitcoin always opens the door to the possibility of careless mistakes with more catastrophic consequences. It’s important to take your time when moving bitcoin, and ensure you aren’t receiving advice from scammers. Furthermore, sending a transaction has some limitations regarding what it can actually prove to a third party, which we will explain in further detail below.

Method 3: Signing a message

The idea behind signing a message is very similar to signing a transaction—but without actually broadcasting anything to the bitcoin network or transferring any funds. Instead, you can use your private keys to sign a message (especially one provided by a third party) in conjunction with the locking script for an address. This cryptographically demonstrates your control of the private keys associated with that address in a more private manner, and without spending or risking any funds. For these reasons, signing a message is the ideal approach to demonstrating control of funds to a third party.

For a simple singlesig wallet, the standardized implementation for message signing is laid out in BIP137. The implementation is available as a feature within several wallet softwares, such as in Trezor Suite and Sparrow Wallet. The steps involve selecting an address for the wallet that you want to verify, providing a message you want to sign, and then following the prompts on your hardware wallet to execute the signature, which will appear to you as a bunch of letters and numbers. Then, if a third party knows the address, the message, and receives your signature, they can use any software that supports BIP137 to verify that your signature came from the same key that controls the address.

For other wallet types beyond a simple singlesig wallet, such as a multisig wallet, BIP137 will not work. BIP322 is the leading proposal to standardize message signing for these other wallet types, but at the time of writing this article, it has not been made an official standard, and is not widely supported in wallet software. Unfortunately, this means that the message signing approach to verifying control over an address is not readily available for multisig wallets, and users should consider the other methods listed above. (There are a few other methods as well, involving PSBTs or extracting public keys from the redeem script, but these are either too risky or too technical for typical users.)

Important limitations on what signatures can actually prove

The second and third methods above both involve cryptographic signatures—either applied to a transaction accepted as valid by the bitcoin network, or upon a message that can be validated independently. Signatures are non-sensitive information, and are therefore useful to demonstrate to other people that you have access to particular private keys, without actually revealing the private keys themselves.

Often, these methods utilizing cryptographic signatures will be seen as satisfactory evidence of your control over an address. However, they fall short of being absolute proof, for a couple of reasons:

  1. A signature itself doesn’t prove who made the signature. For example, if a bitcoin custodian holds private keys to bitcoin on your behalf, it’s technically the custodian that controls the address, not you. They might agree to create signatures at your request, but they also have the power to revoke your access to the bitcoin or attribute the same address to other clients beyond yourself.
  2. A signature only proves access to private keys at the moment in time the signature was created. It’s possible for the private keys to become lost or destroyed immediately afterward, and there’s no good way to prove otherwise except by performing yet another signature, which would incur the same dilemma. This creates an infinite loop, and explains why many entities who maintain a policy of demonstrating “proof of bitcoin reserves” will create new signatures on a periodic basis. Furthermore, this concept is the reason why third party auditors ought to specify the message being signed or the destination address in the transaction being signed (otherwise the signature could have been produced in the distant past). 

Since there are no bitcoin-native ways of circumventing these limitations, cryptographic signatures remain the best available method to demonstrate access to particular private keys in response to a request from a third party.

Final remarks

Knowing how to verify your ownership of bitcoin is an important element of secure self-custody, and it can be a requirement in the context of institutional bitcoin treasuries. Learning about bitcoin nodes and the cryptographic capabilities of hardware wallets can set you on the path to navigating this task with ease. However, you don’t need to be alone in your bitcoin journey—with a collaborative custody partner like Unchained, you can access education and technical expertise when you need it, so that you can be confident in your security model and your ability to transact safely. We invite you to schedule a free consultation to learn more!

None of the above is legal, tax, or security advice. This article is educational only, and not catered to the specific reader. Neither Unchained Capital, Inc. nor any of its affiliates can make any representations regarding any bitcoin wallet. Vault statements provided by Unchained may not fully represent the bitcoin wallet and its control. We encourage any audit firm to cryptographically verify the existence of such bitcoin through use of its own methods. Unchained does not represent that the techniques, software, and/or hardware referenced by this article are appropriate for your given use case or legal in your given jurisdiction. Please do your own research before using any specific technique, software, or hardware for purposes of storage or transmission of any bitcoin.

Related Articles