top of page

Satoshi Nakamoto’s earliest collaborator Martii ‘Sirius’ Malmi has released his entire email correspondence with Bitcoin’s creator.

Spurred by an ongoing lawsuit in the U.K., the new emails are the most significant addition to the canon of what we know about Bitcoin’s still anonymous creator. 

Here are the most important new findings.

EMAIL #1: SATOSHI’S BITCOIN SCALING ASSUMPTIONS

Custom alt text

When asked how Bitcoin might scale in the future, Satoshi theorized the network might have a maximum of 100,000 nodes. 

Here he goes into the calculations assessing the economics of bandwidth costs to nodes (read: miners) in propagating transactions across the network, the economic costs that would incur, and how that could be cost effectively passed on to users. 

He also discusses the implementation of users paying fees, and hints at the potential for the fee necessary for confirmation of your transaction being market driven due to the processing capacity of the network.

All in all, it’s interesting napkin math, though nothing out of the ordinary for those who have read Satoshi’s full Bitcoin forum posts. 

There Satoshi talked frequently about his vision for how the network might grow larger, and it’s notable much of his ideas were not proven to be viable based on subsequent development work.

Custom alt text

EMAIL #2: Bitcoin Doesn’t Waste Energy

Though he wouldn’t stick around to see the tremendous uptick in Bitcoin mining using stranded resources, it turns out, Satoshi knew the network was greent.

One of the first criticisms to be lobbied at his new creation, Satoshi spent time addressing the idea that Bitcoin mining was wasteful on the forums, most notably saying that not having a currency like Bitcoin would be the bigger waste. 

Here, however, he expands on the idea in more detail, and in a more vivid and descriptive way than we’ve seen before. 

Custom alt text

EMAIL #3: Satoshi on Time-stamping 

A headed debated today remains whether Bitcoin is money, or whether it can or does have other ancillary uses. 

In this email exchange, Satoshi seems to offer some insight on the debate, noting his belief the blockchain can be used as a distributed time-stamping server. This is akin to what has happened in Guatemala, where the blockchain has been used to certify contentious elections in recent years. 

Custom alt text

EMAIL #4: Satoshi Talks DigiCash

Satoshi describing the differences between #Bitcoin and DigiCash, David Chaum’s failed e-money.

This is notable as Chaum’s work had a profound impact on the cypherpunks, including Hal Finney. He specifically discusses the differences in privacy properties of the two models, and notes that unlike Chaum’s scheme did not support an offline model, requiring all participants to be online to make use of the system. 

He also explains the finite supply cap of bitcoin. 

Custom alt text

EMAIL #5: Satoshi Was Concerned About Promoting Bitcoin

Satoshi was concerned about his legal risk in launching #Bitcoin, noting he was “uncomfortable” with explicitly labeling it an investment. 

Note: Here also we see he didn’t come up with the term “cryptocurrency” himself.

Custom alt text

EMAIL #6: Satoshi Got Burned Out on Bitcoin

By July 2009, Satoshi was tired, saying he “needed a break” from Bitcoin. Here, he also explains Hal’s absence from the work. He also mentions spending a period of 18 months at that point developing Bitcoin. 

A curious note as well, he asks Malmi if he had any ideas for applications people can actually use Bitcoin for. 

Custom alt text

EMAIL #7: Bitcoin, A Way to Get Free Money

Satoshi discussing how #Bitcoin might gain adoption. Of note is his emphasis that Bitcoin was easy to obtain given that you could mine it on a computer. He also goes to postulate how the nature of a market trading for Bitcoin would evolve, discussing how skeptical people might be of its value, stating he was confident the increasing mining difficulty would prove its scarcity to people. 

Very different from how we think about BTC today in terms of acquiring it, but demonstrating a prescience of how people would mentally value it in the future. 

Custom alt text

EMAIL #8: A Mysterious Bitcoin Donor Emerges

In June 2010, someone offered to donate $2,000 to Satoshi for his #Bitcoin work. Notably, he had the donor send it to Martti’s address. He also communicated care that the donor’s privacy was respected.

Custom alt text

EMAIL #9: Satoshi Was a Fan of Free Transactions 

Already known, but Satoshi was pretty adamant that early users consider #Bitcoin “free.” Here he is discussing removing transaction fees from the UX of an early software. 

It’s interesting that his reasoning was to obscure this feature from users, but simultaneously acknowledged its necessity in the far future. 

Custom alt text

EMAIL #10: Satoshi Was Dedicated to His Bitcoin Work

Satoshi worked on #Bitcoin on Christmas day. There are some interesting implications here to consider regarding his personal life. 

Custom alt text

EMAIL #11: Bitcoin, A Web Currency for Currency Trading?

Satoshi saw #Bitcoin taking hold as a way to trade other internet currencies like Liberty Reserve. He also goes on to discuss the potential for markets selling gift cards for bitcoin, which wound up becoming and is to this day a significant market for bitcoin. 

Note: Liberty Reserve was later shut down by the US.

Custom alt text

EMAIL #12: Satoshi’s First Disappearance 

Satoshi had a mysterious leave of absence from #Bitcoin in 2010. Here he is talking about it with Martti, though it’s notably also short on details.

Custom alt text

EMAIL #13: Satoshi Realized Bitcoin Wasn’t Anonymous

It was Satoshi who removed the language that Bitcoin was “anonymous” from http://Bitcoin.org. He worried it made Bitcoin sound “shady.” This echoes his later sentiments around Wikileaks announcing their acceptance of bitcoin for donations. 

Custom alt text

EMAIL #14: Satoshi Gives Praise to His Protege

Worth noting given the historical revisionism around this, Satoshi thought very highly of Gavin Andresen. Here he is praising Gavin and referring to someone else as a “goofball.”

Custom alt text

EMAIL #15: Satoshi Says Sayonara 

We finally have a copy of the email Satoshi sent other developers before taking his name off the project website. As they’ve said, Satoshi doesn’t mention his intention to step back from the project at all.

Custom alt text

Overall no substantial new information is brought to light, but the emails do give a new angle to Satoshi’s interactions with others involved in the project before his departure. 

 
 
 
Custom alt text

The Passport Batch 2 is the second-generation Bitcoin hardware wallet from Foundation Devices. Passport is built in the U.S., air gapped and utilizes open-source code. In this guide, you will see how simple self custody can be with a device like this, the differences between the Founder’s Edition and Batch 2 of the wallet and a walkthrough of select, advanced features.

Custom alt text

Self Custody Made Simple

“Self custody” means that you are in control of your private keys: this is how you maintain unrestricted access to your bitcoin. By extension, unrestricted access to your bitcoin means that you can send or receive bitcoin with anyone in the world for any reason at any time. You don’t need anyone’s permission, you won’t be held against any financial institution’s moral standards and nobody can stop you from making the transactions that you want to make.

With great power comes great responsibility, however, and self custody also means that you are taking radical responsibility for your bitcoin. You and you alone are responsible for managing your private keys in a way that allows you to access them, but not your adversaries. There is no 1-800 help line, there is no reversing of transactions and there is no one who can help you recover lost or forgotten information. This may sound intimidating or complicated, but tools like Foundation’s Passport make self custody very simple and relatively easy to manage.

Passport makes it possible to self custody your bitcoin on a cold-storage device; this way, your private key is kept on a device that never makes a connection to the internet. Through the use of QR codes to sign transactions and the accompanying Envoy app, using the Passport to receive, secure and send bitcoin is easy and intuitive, even without an internet connection directly to the device.

Unboxing

Passport is shipped in a nondescript white box. There will be a shipping label (peeled off for privacy reasons in this demonstration) and a blue, tamper-evident seal on the outside of the box. The tamper-evident seal will be placed over the opening flap of the box and the seal will have a number on it that starts with “B799,” “B862” or “B863.” The full-length unique numbers are not saved by Foundation Devices, but the prefix is used to identify the production batch that the device was manufactured in. You can find a maintained list of these prefixes here.

Privacy tip: Consider using a P.O. Box and an alias to avoid connecting your personally-identifiable information to Bitcoin-related items.

Security Tip: If the security seal shows any signs of tampering, contact hello@foundationdevices.com.

Inside the shipping box is the device box, it should be wrapped in bubble packaging.

Inside the device box you will find:

  • A Passport Batch 2 Bitcoin hardware wallet

  • 8 gigabyte (GB), industrial-grade micro SD card

  • USB-C-to-USB-C charging cable

  • Micro-SD-to-Android port adaptor

  • Micro-SD-to-iPhone port adaptor

  • “Getting started” literature

  • Seed phrase and backup code card

  • Foundation stickers

Downloading Envoy

Envoy is an open-source companion app for Passport. This app is available for iPhone or Android and enables a secure, guided setup experience for your Passport. While it makes for a convenient companion app, it is not required to use the Passport. You can use any wallet you want to monitor balances, build transactions or generate receive addresses.

With Envoy, you can also install the latest firmware updates from your mobile device using the included micro SD adapters. The security validation to ensure that your Passport has not been tampered with in transit can also be completed from the Envoy app. There is a beginner-friendly Bitcoin wallet built into Envoy that enables you to easily receive bitcoin to your Passport. You can also create transactions in Envoy, ready to sign with your Passport using the QR code communications, all while your private keys remain secured on the Passport. Envoy connects to the internet via Tor by default.

This guide will cover how to download Envoy from the F-Droid repository on an Android mobile device. The cool thing about F-Droid is that you can get apps from it without the need for a Google Play store account. The F-Droid security model enforces that all apps have a valid signature over the entire contents of the Android package (APK file), so you know you are getting the app intended for you by the developers who control the signing key of the repository you are using.

  • With your mobile device, scan the QR code on the included notecard and it will take you to the Foundation Devices start page.

  • Click on the device you are setting up. In this case, Passport Batch 2.

Custom alt text
  • This will bring you to the Foundation Devices startup guide, which features helpful and detailed step-by-step instructions and videos.

  • Scroll down to the “Downloading Envoy” section and click on the “Envoy Download Links” link.

  • Then click on the F-Droid icon.

Custom alt text
  • You will be brought to the instruction page for downloading Envoy from F-Droid.

  • Scroll down to step two under the QR code and click the link there.

  • This will bring you to the summary page of the Foundation Devices F-Droid repository. Copy the link on this summary page.

  • Then, open your F-Droid app, click on “Settings” in the lower right-hand corner, then click on “Add additional sources of apps” under “Repositories” near the top of the menu.

Custom alt text
  • You will be presented with a list of your currently available repositories. Click on the “+” sign in the upper right-hand corner.

  • Then paste the link you copied previously. The fingerprint is optional and can be verified at any time against the repository summary page. Then click on “ADD.”

  • Once the repository is added, you can use the search function in F-Droid from the magnifying glass icon on either the “Latest” tab or the “Categories” tab to then search for Envoy. Once found, click on the download icon.

  • Once downloading is complete, click on “INSTALL.”

Custom alt text
  • Once installed, the Android system will ask you if you want to install this app, click on “INSTALL.”

  • Then you should be able to find the Envoy app in your app tray and you can click and hold to drag it onto your home screen if you want. Then you can open it.

  • You will be greeted with the introduction message.

Custom alt text

Supply Chain Validation

The first step is to complete the supply chain validation. This ensures that your device has been delivered to you as the manufacturer intended, authentic and unmodified.

  • Open the Envoy app on your mobile device.

  • Select “Set up a new Passport.”

  • Review and accept the terms of use.

  • Select “Next.” You should see an animated QR code start cycling.

Custom alt text
  • Power on your Passport.

  • When prompted for how you would like to set up your Passport, select “Envoy App.”

  • Then select “Continue on Envoy.”

  • Select the “>” arrow to initiate the Passport camera.

  • Then scan the animated QR code on your mobile device. You should see the Passport start counting the percentage completed until 100% of the information is received.

Custom alt text
  • In the Envoy app, select “Next.”

  • On the Passport, select “>” for next and a QR code should appear.

  • In the Envoy app, select “Continue” to initiate your mobile device’s camera.

  • Scan the QR code on the Passport with your mobile device.

  • You should receive a notification in the Envoy app that your Passport is secure. If your device fails the supply chain validation, it may have been tampered with or swapped out with a malicious device while in transit to you. In the unlikely event of a failure, contact the Foundation team via email at hello@foundationdevices.com. If your Passport supply chain validation was successful, then select “Continue” in the Envoy app.

  • On the Passport, select “Passed.”

Custom alt text

PIN Code

A PIN code on the Passport can be between six digits and 12 digits in length. Using a PIN that is easy to guess is not recommended. There is no way to recover a lost PIN. In the event that an incorrect PIN is entered into the Passport Batch 2 21 times, the device will self destruct and become permanently useless. If that occurs, your bitcoin is still safe, so long as you have your seed phrase (covered in the next section), it just means the device itself is ruined.

You can also enable security words which add a layer of protection in the event that your device is ever tampered with. If you enable security words, you will enter your PIN in two parts, a prefix and suffix. After entering the prefix, you will be presented with two English words, for example “moment auction.” Because of the way that these words are generated, if anything has been tampered with on your Passport hardware or software, then these words will be different than the ones you were expecting. If the words are the ones you were expecting, then you enter your PIN suffix and complete the login process.

  • On the Envoy app, you can just select “Continue” when you see the prompt to enter a six- to 12-digit PIN. The actual PIN setup will be carried out on the Passport.

Custom alt text
  • On the Passport, use the “>” arrow when you see the prompt to set up your PIN, which should be the first prompt you get after the supply chain validation procedure.

  • Using the “>” arrow, acknowledge that there is no way to recover a lost PIN. You may want to consider writing your PIN down on paper or stamping it into metal and then storing it in a safe and secure location.

  • Using the “>” arrow, acknowledge the warning to record your PIN somewhere safe.

  • Then, using the numeric keys, enter your desired PIN number.

  • Then enter it again to confirm.

Custom alt text
  • Next, the Passport will cycle through “Setting initial PIN,” “Logging in” and, finally, you will receive a notice that the PIN was set successfully.

Custom alt text

Next time you turn on your Passport, you should be prompted for your PIN before being able to use the device.

Seed Phrase

The seed phrase is a human-readable representation of the initial entropy used to generate your Bitcoin private keys. Most commonly, seed phrases will be a list of 12 or 24 words. Backing up your seed phrase in a safe and secure way will enable you to access your bitcoin in the event your wallet is lost, stolen, destroyed, etc. So long as you have your seed phrase, you have access to your bitcoin. That also means that anyone else who gains access to your seed phrase has access to your bitcoin.

Take precautions to ensure you save your seed phrase in a safe and secure way. There are several methods, ranging from encrypted micro SD cards, to paper backups, to QR codes to steel plates or washers. Whichever method you choose, your seed phrase will work with a wide range of Bitcoin wallets. Many industry participants have implemented the BIP39 standard, which defines how seed phrases work. This allows users to recover their bitcoin on a number of mobile, desktop or hardware wallets, regardless of which wallet they used to generate the seed phrase. Taking a picture or screenshot of your seed phrase is not recommended.

  • Picking up where you left off, you will probably be at the prompt on your Passport asking you to upgrade the firmware. Since the Passport has not been connected to the Envoy app yet, this step will be skipped at this point and will be revisited after the seed phrase is created. You can update the firmware using the micro SD card at this point if you would like to do so before continuing on to create your seed phrase.

  • If you skipped the firmware update for now, then select “Create New Seed” on the Passport.

  • You will be asked if you want to generate a new seed phrase now, select the check mark.

  • You should see the Passport save the seed and then you will be notified that the new seed has been created and saved.

Custom alt text
  • Next, Passport will create an encrypted backup of your seed phrase and prepare to save it to the included micro SD card. Select the “>” arrow.

  • Part of having an encrypted backup is having the code to decrypt it. Passport will generate this code and it will be required to to open your backup file in the future. Select the “>” arrow.

  • Your Passport came with a perforated notecard, — on one side of the perforation is space to write down your seed words and, on the other side, is space to write down your code for the encrypted backup. Foundation recommends writing down the backup code on this notecard and it is considered a safe procedure because physical access to the micro SD card is required. Consider storing the notecard and the microSD card in separate locations. Select the “>” arrow.

For a more in-depth article on encrypted backups, check out this resource.

Custom alt text
  • Your backup code will be displayed. Copy this down on your notecard. Double check your work then select the check mark.

  • Passport will ask that you confirm that your backup code was written down correctly by having you re-enter it. Select the check mark.

  • Enter your code in the blank spaces using the numeric keypad.

  • Once entered, select the check mark.

  • You should receive confirmation that your backup code was entered correctly. If not, try again.

  • If you haven’t done so already, insert your included micro SD card into the Passport. It never hurts to look at the micro SD card on a desktop file explorer to ensure it is empty first. The Passport will alert you to insert the micro SD card if you have not already done so.

  • Select the cycle symbol if necessary and then the Passport will write the backup to the micro SD card.

  • Then you will receive a notification that the backup is complete.

Custom alt text

Now you have an encrypted backup of your seed phrase to keep safe and secure in case you need to recover your wallet on another Passport in the future. Ensure that you keep the backup code safe and secure as well because it is required to decrypt your backup. The encrypted backup also includes all device settings, accounts, account labels, etc. You can see all of the details here.

Storing the micro SD card and the backup code in the same location kind of defeats the purpose, since if they are found then an adversary could steal your bitcoin. If you want to save a plain-text copy of your seed phrase so that you have the option to recover your wallet using the BIP39 word entry on a number of other wallets, you can fill it in on the included notecard as well.

  • From the Passport home screen, navigate to the left for the settings menu. Then navigate to “Advanced,” then “View Seed Words” and then acknowledge the warning prompting that you are about to display sensitive information.

Connecting To Envoy

Having your Passport connected to your Envoy app enables you to retrieve the latest firmware, watch your account balances, connect to your own instance of an Electrum server, communicate over Tor and more. Your private key information never leaves the Passport, only the public information is shared with the Envoy app so that it can calculate receive addresses and monitor balances.

  • On your mobile device, in the Envoy app, select “Connect an existing Passport.”

  • On the next screen, select “Get Started.”

  • On the next screen, select “Continue” and then your mobile device’s camera should be initiated.

Custom alt text
  • On the Passport, you should be at the prompt that says “Now, let’s connect Passport with Envoy” after saving your backup. Select the check mark.

  • On the next screen, select the check mark to generate the QR code.

  • Then scan the QR code using your mobile device.

Custom alt text
  • In the Envoy app, you should receive a confirmation that the connection was made successfully. Select “Validate receive address.”

  • Then the Envoy app will display the first Bitcoin receive address so that you can confirm everything worked. Once scanned with the Passport and confirmed, select “Continue.”

  • When finished with the steps below on the Passport, you can select “Continue” in the Envoy app to confirm the address is valid and return to the home screen.

Custom alt text
  • On the Passport, select the “>” arrow to continue.

  • On the next screen, select the “>” arrow to display the receive address.

  • Using the Passport, scan the address QR code displayed on your mobile device.

  • The Passport will search for the address and check if it is one that belongs to your seed. You should receive the large check mark symbol indicating that this is an address belonging to you. Select the small check mark.

  • This completes the connection. Select the check mark.

  • Next, you will receive a notification that the Passport has been configured successfully. Select the check mark to be brought to the home screen.

Custom alt text

Firmware

Keeping the firmware up to date ensures that your Passport has the latest bug fixes, improvements, features and security patches. However, updating the firmware is not mandatory, your Passport will still work but just won’t have any updates.

There are a few different ways to get the latest firmware, from the Foundation website, from its GitHub repository or from the Envoy app. This guide will demonstrate the Envoy app method.

As a security precaution, the Passport will only install firmware signed by two out of four possible Foundation developer keys. Whichever method you choose, you will be saving the firmware file to the micro SD card and loading the update onto your Passport from there. This helps keep the device air gapped.

Make sure you have your micro SD card and included adaptor ready to plug into your mobile device. Also, you can always double check which firmware version your Passport has currently installed when you power the device on, it will show the firmware version number at the bottom of the screen during boot up.

  • Insert the micro SD card into the appropriate adaptor for your mobile device.

  • Insert the adaptor into your mobile device.

  • A blue light should start flashing on the adaptor.

  • Open the Envoy app, you should see the latest firmware version number in the lower right-hand corner of the Passport card on the home screen. Press that firmware version number.

  • On the next screen, press “Continue” to confirm you want to update the firmware.

  • On the next screen press “Continue” to confirm you have connected the micro SD card.

  • Then Envoy will ask you where you would like to save the firmware. Navigate to the micro SD card folder location.

  • Then press “Save.” Be sure to give your Android device a moment to finish writing to the micro SD card. If you have issues with the firmware file not being written in its entirety, delete the damaged file from the micro SD card, save the firmware file again, then after pressing “Save,” manually eject the micro SD card from the notifications drop-down menu to force Android to flush to disk.

  • That should save the firmware file to your micro SD card and bring you back to the Envoy app. Press “Finished” to return to the homepage.

  • Next, power on your Passport. Enter your PIN to unlock it.

  • Insert the micro SD card.

  • Navigate to the settings page and scroll down to “Firmware.”

  • On the next screen, select “Update Firmware.”

  • On the next screen, scroll down to the firmware “.bin” file and select the check mark.

  • Passport Batch 2 will ask you to confirm you want to install the firmware update and display the version number. Confirm by selecting the check mark.

  • Passport Batch 2 will cycle through the update and then reboot itself.

Custom alt text

This completes the initial set up for your Passport. From here, there are a number of features and configurations you can make that suit your unique needs best. The following section will compare the differences between the Passport Founder’s Edition and Passport Batch 2. Then the final section will demonstrate select advanced features.

Comparing The Founder’s Edition And Batch 2

The Passport Batch 2 offers many upgrades over the Passport Founder’s Edition. The following section describes these upgrades:

Dimensions

The Passport Founder’s Edition measures 100 millimeters (mm) long by 35 mm wide by 23 mm thick. The Passport Batch 2 measures 110 mm long by 39 mm wide by 19 mm thick.

Ports

The Passport Founder’s Edition features a single port, the micro SD card port. The Passport Batch 2 features a micro SD card plus a USB-C port to charge the battery. The USB-C port is power-only and cannot transmit data. The micro SD card port in the Passport Batch 2 has more depth so that the micro SD card can be inserted further, whereas the micro SD card port on the Passport Founder’s Edition leaves roughly half of the micro SD card sticking out.

Custom alt text

Keypads And Screens

The keypads on both Passports are similar in that they both feature alphanumeric keys. However, the Passport Founder’s Edition keys have more of an oval shape and the keys on the Passport Batch 2 version have more of a rectangular shape.

The navigation keys on the Passport Batch 2 are copper in color, rectangular for the power and select controls, and square for the up/down/left/right controls. Whereas on the Passport Founder’s Edition, the power button shares the same key as the delete button. The key to the left of the up/down/left/right controls is dedicated to the shutdown function. The navigation controls on the Passport Founder’s Edition are more rounded in shape.

The screen on the Passport Batch 2 is a high-resolution, color, IPS display, bounded to ultra-strong glass. The display on the Passport Founder’s Edition has a plastic screen and it is not a color display. The brightness can be adjusted on both Passports. The display when measured diagonally is 43 mm on the Passport Founder’s Edition and 50 mm on the Passport Batch 2.

Custom alt text

Batteries

The Passport Batch 2 features a rechargeable and removable lithium-ion battery with a 1,200 milliamp hour (mAh) rating. The Passport Founder’s Edition features two AAA batteries. The lithium-ion battery has a much greater battery life and an industry standard form factor known as “BL-5C” and it can be obtained from many different online vendors for less than $10. Both Passports feature a removable magnetic back piece to quickly access the batteries.

Cameras

Both Passports use the Omnivision CameraCube but the camera housing is a little different between the two. The Founder’s Edition is pictured on the left and the Batch 2 is pictured on the right.

Custom alt text

Software

Most of the menu options available on the Passport Founder’s Edition version 1.1.0 are also available on Passport Batch 2. Some of the folder configurations are a little different but most of the options are there with the exception of signing a text file. Passport Batch 2 also introduces extensions for Casa and Whirlpool, which add additional accounts in Passport that you can connect to. Both Passports can be connected to the Envoy app to make monitoring balances, generating receive addresses and building transactions easier. The next firmware release for the Founder’s Edition will be identical to the Batch 2 firmware.

This completes the comparisons section. In the next section, you will see how to use select features of the Passport.

Passport And Whirlpool

Whirlpool is a zero-link CoinJoin implementation supported by Samourai Wallet on Android mobile devices and by Sparrow Wallet on Linux, Mac and Windows desktops. Zero-link CoinJoin means that there are no deterministic links between the inputs and outputs of the CoinJoin transaction. Because multiple entities are involved with each CoinJoin, there cannot be any certainty as to which entity owns which transaction output. CoinJoins can be used as a technique to gain anonymity on a public blockchain, putting the decision to selectively reveal details about yourself back in your hands, thus giving you a layer of privacy separating your real-world identity from the transactions on a public ledger.

Passport supports Whirlpool accounts and this section will demonstrate how to setu p and use this feature on Bitcoin’s testnet. All the steps are the same for Bitcoin’s mainnet. There will be two wallets used in this demonstration; the first is Sparrow Wallet, acting as the hot wallet which is the wallet where the CoinJoin transactions will originate from, and the second is Passport, acting as the cold wallet where the outputs from the hot wallet CoinJoins will be deposited.

Using this technique offers a couple benefits. First, each deposit to the Passport will look like every other CoinJoin output to external observers on chain and, therefore, no one except for you will know that those unspent transaction outputs (UTXOs) are now in cold storage. So, as other CoinJoin participants continue mixing the other UTXOs from your CoinJoin transactions, the forward-looking anonymity set of your UTXOs in cold storage continues to grow.

Another benefit is that the Whirlpool account on Passport was designed in such a way that you can import it to a hot wallet at any time in the future and continue mixing those UTXOs as free-riders in Whirlpool, thus saving yourself from paying the coordinator fees a second time. Additionally, you won’t pay any additional miners fees when importing this account to a hot wallet in the future as opposed to sweeping UTXOs. Understand, though, that importing the Whirlpool account to a hot wallet exposes the seed to an internet-connected device and therefore it is recommended to use a separate seed on your Passport for any accounts you plan on doing this with.

Hot Wallet

This guide assumes you have already installed Sparrow Wallet on your preferred desktop. If you haven’t done so already, navigate to the Sparrow download page for detailed instructions. Consider your options for connecting to a public node, your own Bitcoin Core node or your own private Electrum server carefully.

Once you have your Sparrow Wallet application installed, open it and navigate to “File,” then “New Wallet”:

Custom alt text

Then, name your new wallet and click on “Create Wallet”:

Custom alt text

Next, you will have the opportunity to adjust a few settings. Unless you have a good reason to change these settings and you know exactly what you are doing, then it is probably a good idea to just leave the policy type, script type and script policy descriptor in their defaults, as demonstrated here. Then, click on “New or Imported Software Wallet”:

Custom alt text

A window will pop up, — click on the drop-down menu in the upper right-hand corner to select the number of words you want to use for your hot wallet’s seed phrase (also known as the “mnemonic phrase”):

Custom alt text

A 12-word seed phrase was chosen for this demonstration. Once you have made your selection, the corresponding number of blank boxes will appear in the pop-up window. Click on “Generate New” and Sparrow Wallet will generate a random seed phrase:

You can add a passphrase or leave that field blank. This is kind of like having a 13th or 25th word added to your seed phrase that only you know. There is no way to recover a lost or forgotten passphrase and this will be necessary to access your bitcoin going forward if you decide to use it.

Make sure to write down your seed phrase words in order and keep them safe. Also write down your passphrase if you decided to use one. Consider keeping your seed phrase and passphrase separate from each other to help prevent loss of funds in the event that your secrets are discovered. Writing this information down in a notebook or stamping it into metal to protect it against environmental hazards are common ways that Bitcoiners keep their backups safe and secure. Anyone who gains access to this information will be able to steal your bitcoin, so make sure you keep it safe. Double checking your backup information is a good way to ensure you have copied it all down correctly.

Once you are ready, click on “Confirm Backup…,” then you will be asked if you have written this information down. When you click on “Re-enter Words…” you will then prove you have written your seed phrase down correctly by entering the words in order.

Custom alt text

If you make a spelling mistake while entering your words, the dialog box will turn red to get your attention, for example, “word #9” below should be “metal”:

Custom alt text

Once everything looks good and you see the green check mark indicating a valid checksum, then click on “Create Keystore”:

Custom alt text

Then click on “Import Keystore” in the upper right-hand corner:

Custom alt text

Then you will be presented with a summary of your new wallet’s settings. If you used a passphrase, make sure you write down the master fingerprint along with your passphrase so you can confirm that you entered it correctly in the future. If everything looks good, then click on “Apply.”

Custom alt text

You will then be asked if you want to add a password. This password is optional but it will encrypt your wallet file so that if anyone gains access to your desktop computer and they attempt to open your wallet file, then they will need this password.

Custom alt text

Now that you have your hot wallet created, the Whirlpool accounts will automatically be added once you initiate your first CoinJoin. Alternatively, you can initiate the Whirlpool accounts manually from the settings tab where it says “Add Account…”:

Custom alt text

You will be presented with a list of accounts you can add; at the bottom of that list select “Whirlpool Accounts”:

Custom alt text

Then select “OK”:

Custom alt text

You will notice now that several tabs have appeared along the left-hand side of the user interface. These are the four accounts used to make Whirlpool work. The first one is the deposit account where you will want to send bitcoin that you want to CoinJoin. From the deposit tab, you can click on the receive sub-tab to display a QR code for one of your receiving addresses and you can send bitcoin to it.

Custom alt text

Once you have made one or more deposits to your hot wallet, you can click on the UTXOs sub-tab to see your available outputs. Select the ones you want to CoinJoin or use the “Select All” option to use them all. Just keep in mind that selecting all will link all of these UTXOs together on chain in the next step, prior to them being CoinJoined. If you don’t want them linked on chain, then just mix one at a time.

Custom alt text

Once you have your selection made, click on “Mix Selected”:

Custom alt text

A window will pop up and, if you have an SCODE for reduced coordinator fees, then you can enter it here. Then you can select your transaction priority or, in other words, the amount you are willing to spend on mining fees. Once you have these options set, click on “Next”:

Custom alt text

Then you can choose the pool size you want to join. There are four sizes to choose from, the 100,000 sat pool size was used in this demonstration which will create 20 UTXOs that are all 100,000 sats each. The coordinator fee for this is 5,000 sats. Click on “Preview Premix” once ready:

Custom alt text

Then you will see a summary of the transaction you just constructed. This transaction is called “tx0” and you will notice that all of the selected inputs of various sizes and from various addresses are consumed in this transaction and 20 like-sized outputs are created. These like-sized outputs from tx0 will be used as eligible inputs to Whirlpool CoinJoin transactions. There are three other outputs in a tx0 as well; the coordinator fee, the toxic change and the miners’ fee. If everything looks good, then click on “Broadcast Premix Transaction”:

Custom alt text

Then your wallet will send your transaction to the Bitcoin network:

Custom alt text

From the deposit tab and the transactions sub-tab, you will be able to see that the bitcoin you deposited to this account has been sent out:

Custom alt text

Then, if you click on the premix tab and the transactions sub-tab, you will see the bitcoin from your deposit account is now in your premix account:

Custom alt text

So long as your wallet is connected to the internet, then your available like-sized outputs in your premix account will be registered as eligible inputs for the coordinator to use in CoinJoin rounds. As more participants add liquidity, more of your premix outputs will be CoinJoined. After going through a CoinJoin round, each UTXO will appear in your post-mix account, which you can view from the post-mix tab and the transactions sub-tab. So long as you leave your wallet open and connected, the UTXOs in your post-mix account will remain available as eligible inputs to CoinJoin rounds as free-riders, where they get mixed again and again with no added fees to you:

Custom alt text

The toxic change from tx0 is sent to your “badbank” account, which you can view from the badbank tab and transactions sub-tab. You want to be cautious about how you handle these outputs because they are linked on chain to any inputs used in the related tx0 they came from. For example, don’t send some Whirlpool outputs and some toxic change to the same address because that would undo the anonymity benefits gained by using Whirlpool.

Custom alt text

Cold Wallet

Now that you have your hot wallet established and some bitcoin being CoinJoined in Whirlpool, you can set up the cold wallet extension on your Passport. This will be the account you are sending your CoinJoined outputs to for long-term cold storage. Using a separate seed from your primary cold storage seed for this process is recommended. If you want to import it to a hot wallet at any time in the future and continue mixing those UTXOs as free-riders, it will expose the seed to an internet connected device.

  • Power on your Passport and log into it.

  • From the main menu, navigate to “Extensions.”

  • Then toggle on “Postmix.”

  • With the right arrow control, navigate over to the newly-added post-mix account and scroll down to “Connect Wallet.”

Custom alt text
  • From the list of available wallets, select your choice (Sparrow Wallet in this case).

  • Select the “Single-sig” signature type.

  • Select “QR Code.”

  • Follow the prompt telling you this is going to display a QR code by selecting the “>” arrow.

  • Then an animated QR code will start flashing.

Custom alt text

Now you are ready to initiate the connection process in Sparrow Wallet.

  • Select “File,” then “New Wallet”:

Custom alt text
  • Then name your new wallet and click on “Create Wallet”:

Custom alt text
  • Next, you can leave the defaults for the policy type and script type but select “Airgapped Hardware Wallet” for the “Keystore 1” selection:

Custom alt text
  • A pop-up window will appear, select the “Scan…” option on the Passport line:

Custom alt text
  • Sparrow Wallet will launch your webcam, then you should hold the animated QR code from your Passport in front of your webcam:

Custom alt text
  • Once all the information is captured, Sparrow Wallet will display a summary of the watch-only wallet you are importing. If all the details look correct, then select “Apply.” You will be prompted for a password if you want to optionally encrypt this wallet file on your computer. You have the option to verify an address with your Passport for extra assurance.

Custom alt text

Now, with both your hot wallet and watch-only wallet open in Sparrow Wallet, you can navigate back over to your hot wallet tab and point it to your watch-only wallet so it sends Whirlpool outputs there.

  • In your hot wallet, navigate to the “Postmix” tab and “UTXOs” subtab.

  • At the bottom of the screen, select “Mix to…”:

Custom alt text
  • A pop-up dialog will appear, select your watch-only wallet as the mix-to wallet and then set the minimum number of mixes you desire each UTXO to receive before it is sent to cold storage:

Custom alt text

Once your UTXOs have gone through some CoinJoin rounds, they will start showing up in your watch-only wallet as they are deposited to cold storage. Make sure to leave your hot wallet open and connected to the internet to get continuous CoinJoin rounds.

Custom alt text

You can also monitor your Passport post-mix account from the Envoy app. Just like with connecting your primary wallet, simply select “Connect Wallet” from the post-mix account page on your Passport and then go through the animated QR code connection process using your Envoy app.

Custom alt text

You can create transactions to spend from your Postmix account using the Envoy app and then you can sign those transactions using the QR code method.

This concludes the selected features section.

In this guide you were introduced to Passport and shown the unboxing, supply chain validation, how to download the Envoy companion app, how to update the firmware, initial setup of your Passport, comparisons between the Passport Founder’s Edition and the Passport Batch 2, and how to use the Whirlpool feature to CoinJoin directly to your cold storage device.

This is a guest post by Econoalchemist. Opinions expressed are entirely their own and do not necessarily reflect those of BTC Inc or Bitcoin Magazine.

 
 
 


The story of the Bitcoin Infinity Day Keys spans seven months of my life. The story evolves and transforms until it reaches its final form, crystallizing forever like the root of a Merkle tree. Over these seven months, the keys went from a test design I threw together and forgot about to a project that consumed my every waking moment. I’m going to take you on a walk through my mind to observe the path from idea to reality.

As the idea spread through the Bitcoin community, serendipitous manifestations would arise, leading the project in unimagined directions. A message here, a tweet there. Each piece is a subtle nudge in the direction of mapping out the end result. The idea grew and blossomed over time, pushed from one boundary to another on its hero’s quest to actualization. I’ve tried to find those pivotal moments to share with you. This is the story of how it all came to pass.

The Idea

The idea for the keys presented itself in a sly, roundabout way. It didn’t arrive as a finished vision, but rather as a stepping stone from one level of skill to another. I had just completed The Bitcoin Full Node Sculpture 7.0 made out of silver mirror and was preparing to start on #8 (it is a series of 10 sculptures).

As an artist, I always want to grow with each new project. Not only because doing the same thing over and over can be boring (even when successful), it’s also a safe zone. The world and market motivate you to repeat your greatest hits but you do that at the expense of furthering your growth. I like to try things that I’m not sure I can pull off. I try to work at a level slightly above my current skill set. This is the way I grow. It takes a ton of experimentation and testing to obtain and grow the skills. It also takes a willingness to fail. Failing is fine and should be done hard and fast so you can move on to winning.

The next move for me was to see if I could use colored mirrors to create new dimensions in the node sculpture. I quickly put together a two-layer design. Then I engraved, cut, painted, and assembled the test pieces. I had four colors of mirror to work with — silver, gold, blue, and rose gold — so I made 16 pieces to test all the different color combinations. Check out the tweet for the original video.

I got a lot of encouragement and, surprisingly, people wanted to buy my test cut design as an art piece. I wasn’t prepared for this at all. I didn’t think of the design as anything other than a test for a future sculpture. People were breathing life into the concept that the keys stood as their own design. I quickly fell in love with the idea. An art piece for the Plebs. In an edition of 210.

On the same day, July 5, I

tweeted this video

and then, just as quickly as I fell in love with the idea, I forgot about it.

It’s easy to forget about things when I‘m working on a project. My attention gets sucked in like a whirlpool until I’m far too deep to pay attention to anything else. I spent the next month working like this, tirelessly. By August 7, 2021, I completed the Full Node Sculpture #8.

This was about two weeks before the first Bitcoin Infinity Day: August 21, 2021.

Before we go any further, I want to make sure you’re familiar with the origins behind the Infinity Day keys. I made them to help spread the meme created by Knut Svanholm, “Bitcoin: Everything there is, divided by 21 million” and the original article, released August 21, 2020, called “Deeper Down the Rabbit Hole.”

It’s fun to note — and Knut says it was unintentional — that the original article was published on August 21, 2020. That date can be written more succinctly as “8/21.” Notice that the “8” can be viewed as an infinity symbol (∞) standing on its end. So the date “8/21” can be read as Knut’s meme: “Everything there is (infinity or “8”), divided by 21 (million).” So August 8 is Bitcoin Infinity Day. This is astounding, considering it was published on August 8, a year before the Bitcoin Infinity Day meme even existed.The idea for Bitcoin Infinity Day seems to have arisen right around the time I finished the sculpture (August 10, 2021). This is only 11 days! Not much time to birth a meme holiday…

The First Transformation

The idea for the Infinity Day Key came during a private conversation with the collector who purchased the Full Node Sculpture #8. Without this one comment from @Protagonist4now at 5:21 on August 17, the Infinity Day Keys would probably never have happened. He was asking me why Knut didn’t have one of the Bitcoin Full Node Sculptures…

On August 19, just two days before Infinity Day, I was able to get sculpture #8 shipped out. With that project done I could work on a new one, but time was short. It was August 20, just one day left.

Not sure if I could pull it off, I knew it was a pass-or-fail idea. I’d either do it in time and it’d be awesome, or I’d end up empty-handed and no one would know this was ever an idea. The only way to find out was to try. Proof of work. I reached out to Knut to get the “look” he liked for the meme.

So now it was almost 2 p.m. on the day before Bitcoin Infinity Day — crunch time. Just 10 hours left until the first-ever Bitcoin Infinity Day. I worked through the night and into the next day. Almost 24 hours later, I was done. I tweeted this video at 3:41 p.m. EST. I thought this was the end of the Infinity Day key project. But, as we know, life has a way of reorienting us when we least expect it…

Original goal: Achieved! Here’s a photo of

Knut Svanholm

After posting the Infinity Day key video, I began to get a barrage of tweets and DMs of plebs asking to buy a key. Since I never planned to sell the keys, I made only five of them. I planned to make a few extras to account for errors and mistakes, but all five turned out great. I knew I wanted to give two to Knut as a gift, but I wasn’t sure what to do with the other keys. Also, I wasn’t sure how I’d price the key fairly, as my last piece sold for 15.1 bitcoin. So I decided to do a giveaway.

The contest went on for about a week and I realized I loved so many of the answers that I had more than two people I considered winners. I highly recommend

checking out the thread

, it’s densely packed with interesting Bitcoin trivia. You can see here where we jump from two keys as the giveaway to five and then to 21. I even added the idea to auction the last key here.

Originally I was going to auction key #21 of 21 on

Scarce.city

, but again the idea man, @Protagonist4Now came through with the vision — #8 of 21 would be the one to auction, as it is the physical embodiment of the “8/21” meme within the set.


video here

That was on September 11, and below

in this thread on October 9,

you can see I just finished the 21 private keys. I have

videos of each of the keys

in the thread. The

first video

shows all the pieces after being cut, engraved and painted, but not yet assembled.

You can see the list of the 20 Private Key winners

here

:

The Public Keys – One for the Plebs

I started thinking about it, and over a few days the idea solidified. We’ll get more into the design of the sale and how it works soon, but the important thing here was that I wanted to do a sale that was open to everyone. Anyone could get a key as long as they were able to get into the sale “in time.” I would not be doing something like this again, but I wanted to make sure everyone had at least this one chance to own an original FractalEncrypt art piece. But the window would be short, and people had to be ready and have bitcoin handy to pay (so I had to give people time to get sats out of cold storage, etc.).

Michael Saylor is probably the most famous of the key winners. Here’s a never-before-seen photo from Bitcoin White Paper Day 2021.Saylor owns Private Key #11 and is also the owner of one of the artist-proof versions of the Public Key.


Third Transformation — Holographic Rainbow Background

I was working on the

Bitcoin Full Node Sculpture #9 of 10

I made an

artist’s proof

The Auction and The Sale

As things took shape, I prepared for the auction of Private key #8 of 21 and the sale of the Public Keys. This was set for the weekend of October 31, 2021, the 13th anniversary of Bitcoin White Paper Day.

Scarce.city

with actualizing. I wanted the sale to be defined by the Bitcoin network. It would be a limited-time sale, but not limited by clock time, but rather the world’s first sale limited to Bitcoin block time. The sale wouldn’t run for a set number of hours or days, but instead for a set number of blocks mined in the Bitcoin network.

The duration of the sale would be entirely decided by Bitcoin block time. The edition size (how many keys I would need to make), was also left entirely up to bitcoiners. I would make as few or as many keys as were ordered, no more, no less. If people bought three, I’d make only three. If they bought 1,000, I’d make 1,000. The price would increase as new blocks were mined. This meant waiting had a cost. If you wanted a key, the longer you waited to buy one, the more expensive it got.

As the day of the sale got closer, I began to get concerned. I wasn’t sure if the sale concept would make sense to others, so I reached out to some collectors I know, (Eric Weiss and Jeff (@SatoshisArk), and asked for opinions. I explained the idea, but both guys seemed confused, so that made me more uncomfortable.

This is the explanation of how the sale would work on the Public Key Sale page on Scarce.City (the bitcoin-only auction site);

The idea for the sale was this:

It is a limited-time offer, but available not for a specified time, but rather a specified number of Bitcoin blocks. Bitcoin blocks are mined about every 10 minutes so 210 blocks would take about 36 hours, or a day and a half to elapse.

Anyone can buy at any time during the 210 block window and there is no limit on how many keys would be made.

The price will increase by about $5 every time a new block is mined (this turned out to be 8200 sats per block on the day of the sale).

Once the 210th block was mined, the edition would be locked at the final sale count.

The morning of Saturday, October 30 arrived full force. I woke up nervous. Was my idea too far out there. Would people understand? Does anyone even care?

The sale of the Public Keys started first. It was set to begin as soon as the first block was mined after 11:11 AM, which was block 707,443. The amazing thing is that collectors wanted to be the very first to click “buy” once the sale went live, so they could get lower edition numbers. The first buyer to click buy, would get key #1, the second would get key #2. However no one knew when the sale would begin, since it began only once a block was mined after 11:11 AM. The block was not mined until 11:17, a LONG 6 minute wait for plebs with fingers at the ready.

42 keys were sold before the next block was mined only 21 seconds later. The sheer dedication of those bitcoiners who were ready at the keyboard, and clicked “buy” before that next block was mined just seconds later, cannot be overstated. As we know from Douglas Adams’ writing, the number 42 in “The Hitchhiker’s Guide to the Galaxy,” is the “Answer to the Ultimate Question of Life, the Universe, and Everything”. I took this to be a good sign, but I’m not one to declare victory before the end of the battle, so I remained cautious.

By the time the Private Key auction started at 3:33 p.m., just over 100 of the Public Keys were sold. Bidding on the Private Key went live and we were at 0.1 BTC within an hour.


I woke up excited. Not only would both the auction and the sale end today, but I was going to a fancy invite-only bitcoiner BBQ for Bitcoin White Paper Day. I arrived just before noon, made the rounds and settled in at a table by the pool while I tried not to look too anti-social watching the auction on my phone. Around 1 p.m., with only two hours left before the end of the auction, we hit 0.25 BTC. A bidding war broke out between ObiWan, willebra and TH pushing us over half a bitcoin. What happened next shocked everyone.

In disbelief I say, “This must be an accident!” Eric inhaled, thought for a second and agreed. No. No way the bid went from 0.575 BTC to 6 BTC. I took some deep breaths, calmed down and in a few moments the page updated. The world zoomed back into focus. Not 6.0 BTC. One-tenth of that: 0.6 BTC. Okay.

The bidding went on for another 30 minutes. Hitting 1.0 BTC was a beautiful moment and the auction came to a climax with a bid at 1.05 BTC by pekf73.

Now with the Private Key sale over, the adrenaline rush hit me hard. I switched focus back over to the Public Key sale. The Public Key sale edition amount would be entirely decided by how many plebs bought keys.

I checked the current total and we were at 199 keys. I saw

from Glenn Hodl and I saw the vision immediately. 210. I certainly didn’t know how much work it would be to make that many keys.

With hours to go, and the price increasing every 10 minutes… is it going to hit 210?

It was a long weekend and the sale was going to close in about hours. I needed some sleep. My heart wanted to stay awake but my mind was not having it. By this time the counter was at 206 keys. I couldn’t stay up anymore. I gave up on the dream of hitting 210 keys. The fact is, the price got higher with each passing block, so selling more keys became less and less likely with each block mined. I couldn’t keep my eyes open any longer. I went to sleep. 206 was a good run, nothing to be ashamed of.

The next morning I woke up to a Bitcoin miracle. By the very last block of the sale, block number 210, only 208 keys had sold. It was over and done with, we weren’t hitting 210.

Then, literally in the nick of time, in that very last block

bought both 209 and 210, forever cementing the edition in at a perfect 21:210 ratio of Private Keys to Public Keys. Absolutely beautiful.

The anon pleb who bought #210 created this

.


Now you might think the story ends here, but there’s so much more. Once the 210 keys were sold, I needed to make and ship them all. On the sale page, I wrote that it would take me 4-6 weeks to have the keys completed and shipped. Later I realized that I set this time frame before I even knew how many keys I would sell. Making the 21 Private Keys took longer than I thought, but making 210 keys took the amount of work required to a whole new level.

We’ll jump into the creation process and I’ll share some insights into the journey, but first we have the next transformation.

Fourth Transformation — Taproot Keypairs

It all started with this question:

It got me thinking. I had what I thought was an answer, but it wasn’t a very good one. In the end, things got much deeper and far more interesting. Take note of the date, it’s Oct 31. Things take time to percolate.

About two weeks later,

on the Bitcoin network at block height 709,632. This block was mined just before midnight on November 14 in my timezone and while I was sleeping, cypherpunks were playing. By the time I woke up, many interesting taproot transactions had been sent and then discovered by other cypherpunks. I began exploring everything I could find.


Click on the image below and take a look at this transaction. Take note of the vanity addresses of course, but also the values transacted. 0.1337 BTC sent and then the first 3 inputs have values of 340, 341, and 342, these correlate to the Bitcoin Improvement Proposals related to taproot.

Whaaaaaaa?!?!

— FractalEncrypt ∞/21M (@FractalEncrypt) November 14, 2021

The fourth transaction contained the first 2-of-2 scriptpath spend.


Looks like I found this around 9:23 AM.

Then just eight minutes later I get a message from

, “Hey Fractal”;

These two puzzle pieces clicked and fit together perfectly. Combining an on-chain Certificate-of-Authenticity for the keys using taproot vanity addresses with an OP_RETURN (hidden message)… a fire was lit within my mind.

First things first, I needed to download the new version of Bitcoin Core so I could get the new taproot functionality and begin teaching myself how to do this.

. It has links to all my educational sources and screenshots as well.

because that functionality is not yet released. You know when you’re trying to do something and you run into a wall? Well, we can’t give up, this is Bitcoin. There’s either going to be a way to do this or an explanation as to why we can’t.

!



Now that I had a few hours’ worth of foundations in taproot, I needed to find out how to generate vanity addresses. I looked at several methods before landing on the

. It was created by Bitcoin Core developer

. (again, Andy to the rescue, and he will become much more helpful soon.)

Link in hand, I downloaded the program, excited to get rolling and immediately ran into a series of errors that took me hoursof hard work to get past.

I installed Rust and a bunch of other dependencies, but nothing was working. No matter what I tried, I couldn’t get the program to do anything. So what do I do? Request help through Twitter DMs from the guy who wrote the software. I know this is probably not “the way” I should do it. It’d be more polite to ask via a post on StackExchange or BitcoinTalk, but luckily, within a very short window, I got a response, and it was exactly what I needed.

With this simple, magnificent piece of info, I was rolling! I’ll note that this step is nowhere to be found in the Readme on Github.



However there is something in Bitcoin known as the “dust limit” it’s an anti-spam feature of Bitcoin, and also helps avoid “blockchain bloat.”

Instead of looking up the dust limit myself, I decided to “

”, not something I’d usually do. This post is at 4:07 p.m. on Nov. 18 about 30 minutes after I figured out the last step (constructing and importing taproot descriptors into Bitcoin Core).

At first, I wasn’t getting any helpful answers so I did what any good bitcoiner would do, verify the shit myself. I constructed a transaction with a one sat output in my Bitcoin Core QT wallet.

Then at 4:31 p.m., Michael Moffit posted this.

Then he dropped

and cemented the path forward for the taproot keypairs.

That lead me to Vijay Boyapati’s

(which I copied; steal like an artist they say!):

The timing of events here is an astounding unfolding. Consider the vanity taproot address generator software was released on November 10, 2021, just days before this. Vijay’s tweets were from September and October 2021, just weeks from this moment of realization. These building blocks are critical and necessary for the Bitcoin Infinity Keys to find their final form. And the building blocks themselves are forged by both the code and human facets of the bitcoin network.

Mining the Vanity Taproot Bitcoin Addresses


Here’s how the process of mining the vanity addresses works. The software asks you to define the vanity words or phrases you want to find. Imagine you wanted to say “Hello World.” You’d enter that into the vanity address software as “bc1pHelloWorld.” The “bc1p” prefix is required for all taproot bitcoin addresses (also known as “bech32m” addresses), and then your vanity words go after the prefix. The software then begins searching for any Public/Private key combination that results in a bitcoin address with your prefix.

Depending on how many letters or characters are in your search, your search may be quick or take an eternity. The more characters, the longer it will take. To find the 3-letter “key” addresses didn’t take long at all, however, to find an address with bc1pFractal it took me almost 5 days to find a single key pair. Finding bc1pEncrypt took me another 7 days and I almost quit looking for it as I was running out of time. Finding a bc1pFractalEncrypt address may have taken me more than my lifetime so I didn’t even attempt it.

Once I mined 210 “key” addresses I was ready to go. Or so I thought. As I started looking at the addresses, I noticed that some had numbers following the word “key.” This meant that I could have addresses like “Key1, Key2, Key3, …, Key210” I began searching and sorting my addresses to see what I had. I quickly saw that I already had many addresses that followed this format and I began organizing them.

Once done, I went back into the vanity address generator and began trying to find the missing addresses. I was missing “key1” so, of course, that was the first one I tried to mine. Immediately I hit a brick wall. “1” is a restricted character in taproot addresses, so mining any address with a 1 would be impossible. So that ruined that whole idea. I can’t do a series of numbers without “1” 1, 11–19, 21, 31, …, 100–199, etc. I was screwed. I had an okay idea, but it just wasn’t actually possible.

After a few minutes of thinking, I came up with the idea to try a lowercase “L” in place of the “1”s and see if that would work. It did. Okay, back in business!

Mining the addresses in a series like this was extremely time-consuming and I only made it to 50 before the addresses became too hard to mine, and I ran out of time. So keys 1–50 are special for this feature alone.

After “50” the only numbers I was able to mine the “numbered key” vanity addresses for were these:

Testnet Transaction

To create a Bitcoin transaction, I used a simple text editor called Notepad. I just typed it all out (or copied/pasted in the case of addresses). I’d never written a transaction this big before, it was intimidating. 210 outputs! Each output was one of the bitcoin vanity addresses I mined. But before I used the precious vanity addresses and spent real bitcoin, I needed to test things out. Mistakes on-chain are forever, so I didn’t want to look like an idiot to far-future generations.

The good thing is, once I created the testnet transaction, I could use that same text file as a template to create my “real” mainnet transaction later. In my testnet transaction, I didn’t use my precious vanity addresses, I just used regular bech32 addresses (taproot are bech32m addresses). The raw bitcoin transaction simply states what inputs are being spent and how they are spent. Here we see 2 inputs followed by the first 26 testnet addresses.

as well.

In addition to not writing out a specific fee amount (meaning you can make a big expensive mistake without realizing it), the fee is based on how many characters are in your transaction. This is called “sats per byte” and you pay your fees in a specific amount of satoshis for each letter or number you want to include on-chain.


For comparison, a regular transaction with two inputs and two outputs averages 150 – 250 bytes. I made a guess and figured for 200 outputs, maybe this would be about 105,000 bytes (half of 210, then multiplied by 100). In my guestimation, I paid out 109,467 testnet satoshis (or 0.00109467 tBTC) in fees. I knew if I was too low, my node would not send the transaction. There is a minimum of 1 sat/byte that is enforced by my node, so it won’t send a transaction with a smaller fee than that. An error is my indication that I’ve underestimated. If you overestimate, well, too bad, you just overpay for your transaction. That’s why we do this on testnet.

only turned out to be 6996 bytes. I thought it was going to be closer to 100,000 bytes. Sending these batch transactions is very economical in terms of both onchain data and the cost to place it there.

I did make a mistake in the testnet transaction and if I hadn’t caught it, I would’ve looked like an idiot to all my descendants and brought shame to my family. I had two outputs paying 1003 satoshis. Whoops, but this is why we do things on testnet first. Luckily I did catch this and was able to fix it before sending my “real” mainnet transaction.

Making the Keys


).


and scroll down in the thread to see a video of the laser machine cutting the clear back pieces. I covered the Private Key plates in the video with the microfiber glove.

Once the pieces are cut, I have to paint each one. I also custom cut and apply double-sided industrial adhesive that welds the pieces together.

Painting all the pieces was a much larger job than I expected and I needed to acquire new tools and skills to pull it off. I also needed this big bounce-house-inspired inflatable paint booth!

Here are a few pics of painting the key pieces. This was my first time using a professional auto paint sprayer and I have to say the results came out fantastic.


The Art of The Transaction

While I was busy making the physical key parts, I put off sending the mainnet bitcoin transaction. I just took the risk and engraved all the Public Addresses into the mirrored plates and painted them. Heck, I even had the private keys all cut, engraved, and painted too. Failure here would be disastrous. If anything went wrong and I wasn’t able to send the transaction and use these keypairs, all that work would be wasted. Time for the acid test. I needed to send that transaction!

I took a few days to get the file set up correctly, checked, double-checked and ready to send. By the time it was done, I felt the transaction itself was a work of art. I encoded all kinds of Easter eggs into the transaction, not only what you could see in the text of the transaction, but even the fee amount. I had calculated the fee to the exact satoshi (we talked about the fee amounts before — remember, this is something you do not write into the transaction, it’s implied). I don’t think I could say this for many transactions, but even the

is beautiful.

Bitcoin Is Time

Let’s back up one second here. Before I was able to send the main transaction, I had to pre-fund my vanity addresses. It took me almost two weeks to mine these two addresses, and I wanted to fund them with exactly the right amount of satoshis, no more, no less. This must be executed with surgical precision.

This is the pre-funding transaction. I want to spend frommy “FractalEncrypt” addresses to all the Public Key Addresses. To do that I needed to make sure I had the right amount of bitcoin in the right addresses.

to have the transaction mined at a specific time, to add to the magic, but that was not to be. That’s okay, we take our wins where we can take them.

I wanted the transaction to be sent at a cool date and time. The date was December 21, 2021, so 12/21, and



The clock was running down. It was getting close to 8:21. I didn’t want to submit my transaction too soon or too late. A bitcoin block can be mined at any time, so I was afraid to send my transaction too early. It was a risk, but one I had to take. It was 8:20, and no block had been mined in the past 9 minutes, it was almost perfect. The tension was insane. I had to send it right then.

I clicked to send and… FUCK!

The transaction wouldn’t send! I didn’t have enough in fees. Fuck! My testnet transaction was 6996 bytes, so I thought by sending 8,888 satoshis in fees, I would be overpaying, not underpaying! This was a disaster of the highest order. I didn’t have

any more satoshis in my vanity addresses and sending more to them just wouldn’t look the way I want onchain. The feeling of defeat at that moment cannot be explained.

I got myself together and began thinking. Maybe 8:21 was something of an illusion. Maybe I just see that in block explorers because that is my local time…if this is true, then it’ll be 8:21 in one more hour, one timezone to the west of me. Back to Twitter. And, yes. That’s how it works.

So now I knew I had another 50+ minutes to figure out some way to get my transaction sent without ruining any of my encoded Easter eggs. I knew I could mine a new simple vanity address and send funds to that. I’d use those new funds to pay the missing fee amount. Instead of having my send addresses be the “Fractal” and “Encrypt” addresses, I could add a third address that contained the fees and I could make it say anything I wanted.

I went to my list of vanity keys that I’d already mined, but not yet used. I found one of the keys was a “bc1pkeys” address. Using this would make the send addresses:

“Fractal Encrypt Keys”

This was cool, I liked it, but now I needed to decide how much in fees to pay. I knew I needed to pay at least 9248 in fees because of this error, but that number had nothing to do with the “8/21” meme, so…

My prior fee amount was 8,888 but since that was too low, I pondered other numbers like 21,888 and 21,821 but settled on 88,888 to dig into the “Infinity” part of the meme deeper. To do this, I had to construct a new taproot descriptor for the private key of this new address, import it into Bitcoin Core to be able to spend to and from it and then send some sats there. I had to do all this quickly, as I had under an hour left.

Judging by the timestamp on

, it took me about 15 minutes after the first transaction failed (from 8:21 p.m. when the transaction failed to 8:36 p.m. when this transaction was confirmed) This may seem quick, but it was an intense and terror-fraught 15 minutes. Notice I didn’t put any fancy messages in this one. Stressed!

With this transaction confirmed, I had 80,000 satoshis in my “keys” address, allowing me to add these new funds to my transaction as an input. By doing this, I could spend the full amount. Adding the new 80,000 sats to the 8,888 I already had in my transaction would bring my total to 88,888. This is why I said that the amounts in the addresses had to be handled with surgical precision. An error of a single satoshi would ruin the magic.

Now I just had to wait for 9:21 p.m. EST, which would be 8:21 CST. Also, 8 p.m. is 20:00 in military time (or 24-hour time), this makes 9 p.m. 21:00 so if I could get it at 21:21, that would be magical! It was not to be, I was off by seconds, and it went through at 21:20. Here’s the transaction. See how many Easter eggs you can find yourself or just continue reading for the spoilers.



We can see the transaction is recognized as a taproot transaction, but this was also my first-ever RBF transaction. I’d been wanting to learn that for a while, and never did until now. I’m proud of this RBF flag!

The three inputs in the transaction have the vanity addresses reading “FractalEncrypt Keys”:

And here we can see the two input values of “8” and “21”



A Path Not Taken: 21-of-210 Multisig Treasure Hunt

I thought it would be cool to combine all the addresses on all the keys into one huge multisig “pot” that could only be accessed by possessing access to 21 of the keys. I wanted to make it so all keys are part of a 21-of-210 multisig scheme so that if any one person or group of key owners assembled any 21 of the 210 keys they could spend all the sats in all 210 of the addresses. This may not be worthwhile today, but in 20 – 50 years, it may be a treasure worth hunting down the keys to unlock (literally!).

I can imagine a dedicated collector hunting down 21 of the keys, or convincing a group of other key owners to join forces to unlock generational wealth. It was a nice daydream, but the fact is, writing this transaction (if possible) would have been a huge undertaking! I quickly found out that I could not use 210 keys together in a giant multisig.

.

Shipping The Keys

Once I had all the key pieces cut, engraved, painted and ready to assemble, it took me almost two weeks to get them all completed. I had hoped to ship them in time for the 2021 winter holidays but didn’t have them shipped until early January 2022.

Even putting the labels on the boxes took me a full weekend of non-stop work. When you’re trying to get precisely numbered sculptures matched to 200+ shipping labels, it takes attention to detail. It also takes patience. I also ran into unexpected supply chain issues. The Private Keys were shipped using a laser-cuttable foam. I was able to custom-cut the foam to fit the boxes and the sculpture.


But when I tried to order enough of the foam to ship 210 keys, I ran into supply chain issues. The foam wasn’t available in any size, at any price. So I ended up buying a bubble wrap-making machine and making the packaging myself. My whole art room was filled with rolls of bubble wrap that I filled myself. It was a pretty interesting process and, in the end, I now have a new cool machine.

By the end of the weekend, my front porch was filled with boxes ready to go out into the world.

The UPS driver wanted to know what I was shipping. I said marijuana. Just kidding. I tried to explain the keys without mentioning bitcoin or anything too specific (for opsec). She was like, “oh cool, art.”

And with that, the keys were sent to their new homes and this story comes to a close. As the keys arrived in their homes, I saw many delightful posts and received messages from the new owners. I’m sure the close of this story is the beginning of many others. Thanks for sharing the journey with me. Happy Bitcoining!

 
 
 
bottom of page