How to automatically track a wallet’s multiple addresses through its XPUB?

“XPUB” may sound scary for non-technical beginners, but as you will see with this step-by-step tutorial, it is in reality a very easy and useful tool.

What is a XPUB?

To put it simply, many modern Bitcoin wallets (called “HD” for “Hierarchical Deterministic”) generate many addresses automatically, to provide users better privacy and convenience. To put it simply, all these addresses are directly connected to a secret “main key”, from which they are generated. This main key is of course private and secret (it allows anyone who knows it to spend the coins!), but it also creates a public version of this main key, which allows to generate only public addresses (that cannot be used for spending, but can be used for receiving only.)

Why would you use an XPUB?

Say for example you want your employer to pay your salary in BTC, but for better privacy you would rather avoid giving them a single unique address that they would reuse many times. By giving them the XPUB of a wallet you can ensure each transaction will be sent to a new unused address, yet the addresses generation is automated, it matches your wallet’s addresses, and you don’t have to provide them with a new address manually every time.

In Satpile, tracking an XPUB allows you to keep an eye on a whole wallet instead of a bunch of single aaddresses you would need to manually add every time you make a transaction. It can be convenient in the case of DCA (“Dollar cost averaging”) recurrent buys for example, or to keep an eye on a remote hardware wallet (eg Trezor, ColdCard, Ledger…) you don’t want to physically fetch all the time, or to keep an eye on the wallet of a child learning how to use Bitcoin, etc.

As often with Bitcoin features, it looks quite simple, but the possibilities are varied and numerous. It is service providers, and yourself, who will be creating and discovering how this asymmetrical tool can be used for improved convenience, control, and privacy. For now, we will focus on Satpile obviously.

A little word of warning

XPUB are a very powerful and useful tool for any companion service to a wallet, as it allows incoming flow and tracking, but not spending. But beware who you give your XPUB to, because it can also act as a peephole to your wallet for prying eyes. They might not be able to spend your coins, but they can identify all your addresses and follow their movements! For example, it can be a good idea to create a new wallet, separate from your main one, specifically for using this XPUB publicly.

How to use XPUB in Satpile?

It couldn’t be easier, as XPUB work almost exactly like folders, except automated.

1. Create a new wallet, here we are using Blue Wallet, and creating a SegWit native wallet, but it works similarly with any HD wallet with XPUB support. In this case, because of its nature, the wallet will generate a “ZPUB”, which is of course compatible with Satpile too. Name your wallet, and save.

2. Once you have created the wallet and written down the backup seed words, you can now start using it, and its XPUB. Tap the options button to access configuration and export tools.

3. Here you find the ‘Show XPUB’ button, just tap to open.

4. The wallet will now show you the XPUB address, as well as a QR code version of it, for convenience. Again, keep in mind that whoever sees this can view all the addresses and transactions of this wallet forever, so even though they can’t spend your funds, be cautious.

5. Now, open Satpile and tap the ‘+’ button, as if to create a new folder.

6. The sub-menu will open, allowing you to choose between a folder (in which you will be able to add individual addresses manually), or a XPUB. Tap XPUB to open the input screen.

7. Here is where you will enter the details of your XPUB address. Give it a name, and either paste the address you copied from your wallet, or simply tap ‘Scan QRcode’ to scan it (if your wallet is on another device for example). Then tap ‘Save’.

Note: For advanced users, there are options to change the derivation scheme used by the wallet to generate the keys, but in most cases you should not have to edit this, as it is setup automatically by the app.

8. Be patient: it may take a few seconds for the app to generate the first addresses of your wallet and interrogate the Blockchain explorer for their balance. By default, the app will display the first addresses by bunch of 10, until it reaches the most recent unused ones. The addresses are displayed in reverse-chronological order, with the most recent one at the top, and older ones below all the way to the first address of the wallet.

Upon refreshing the screen (manually, automatically, or when opening the app), the Blockchain will be interrogated for balances of these addresses and update them accordingly. If recent unused ones have received a transaction, a series of 10 new addresses will be generated and added at the top, until the next unused ones.

If you want to display more addresses, you can create new ones manually too. Simply tap the ‘+’ button. (Normally, you should not need it, but for example you want to monitor addresses that your wallet already generated, but because previous addresses have not been used yet, Satpile stopped displaying new addresses when it reached them.)

9. Then, tap once ‘Generate new addresses’ to create a batch of 10. The new ones will be displayed at the top. It may take a few seconds to interrogate the Blockchain for all their balances, so please be patient while they’re loading.

Et voilà! You can now use Satpile to not only track individual addresses, but also for keeping an eye on whole HD wallets, with all their future and past transactions. And even though it’s totally OK that you don’t know precisely how XPUB addresses work under the hood, you can see that they are not that scary and can be quite convenient. 😉

Download the app on the App Store: click here.

Questions? Comments? Reach us by email or on Twitter @satpile.