 In this segment of Down the Rabbit Hole, I want to talk about a particular problem that occurs fairly often with new users who are trying to either recover or migrate a wallet from one wallet to another. For example, from a smartphone wallet to another smartphone wallet or from a smartphone wallet to another hardware wallet or from a hardware wallet to a hardware wallet or any combination of the above. Now, we have a standard that has actually made such things much, much more interoperable. This is where I put on my grandpa voice and I go, in the old days, back three years ago when we didn't have BIP39. Yeah, and that standard is BIP39 and it makes life a lot easier, but it does have some weaknesses. As part of BIP39, which is the mnemonic phrase standard, which allows you to move a whole tree of keys from one wallet to another using just the English word mnemonic phrase. As part of that standard and the related standards, there are some nuances that often cause problems with newbies. The underlying standard is called BIP32, which is hierarchical deterministic wallets. Hierarchical deterministic wallets define a system of wallets that are organized in a hierarchy that looks like a tree, where you have a root key that is generated from the mnemonic phrase or can be generated and these days is almost always generated from the mnemonic phrase, the BIP39 mnemonic phrase. And that root key can then be used through a series of hashing operations to derive billions and billions and billions and billions of potential private keys that can each derive an address. And this works across different cryptocurrencies and it works with different other systems that can generate entropy for things, et cetera, et cetera, et cetera. Now within that system, there is a further specification which is called BIP43 and a further specification called BIP44 that tell you how to find where your keys are hanging on the branches of this tree. Now if you think about it, the reason this is complex is because the tree itself at the first level has four billion branches. Each one of those four billion branches has four billion branches coming out of it and so on and so forth to an infinite depth. And of course that gives us a lot of flexibility, but it also means that if you don't know which branch your keys are on, you could be searching for centuries. Almost all wallets, like 90 plus percent of them, put all of their keys on a very specific branch. For Bitcoin wallets that would be the m44 prime, 0 prime, 0 prime branch. And what that stands for is 44 prime designates that this is compliant with the BIP44 branch derivation path scheme. 0 prime specifies that this is a Bitcoin wallet and you can have others, 1 prime, 2 prime, et cetera, which are other wallets for other cryptocurrencies. And then 0 prime after that means the first sub-account, the 0th sub-account because it's a multi-account system. Now if your money is on that path, m44 prime, 0 prime, 0 prime, then you can find it fairly easily. Most wallets are going to look there first when you import them, but what if your wallet was weird and put it somewhere else? Or what if the wallet you're importing to is weird and is looking somewhere else? Well, then it will come up with a different address and it's going to find zero money at that address, which if you're a newbie causes the following reaction, where's my money? And then you go to Reddit and a lot of people will tell you, you know, use this website or use this tool. And that's when the problems really start because a lot of people will go in and type their seed into a web page and lose their money properly because they went to the wrong place. People are squatting on typos of web addresses. They're compromising generators. They're building software that they're launching on the Android and the App Store and storing as zip files and executables all over the web for you to stumble across these. Think they're the legitimate or original software you were looking for. Type in your seed and promptly watch your money be taken away. Don't worry, they know how to find the derivation path where your money is very, very quickly. So one of the things I've been thinking about is how do we fix this problem? And I came up with an idea and then I funded this idea as a software bounty. And just about a week ago, a developer finished building this and I'm very excited because I'm hoping that it's actually going to be merged into a very popular piece of software called the Electrum Wallet. Now, the Electrum Wallet is a desktop wallet that runs on Mac, Linux and Windows. It's cross-platform and it's very, very featureful. I use it for a variety of my own activities. By keeping it on your desktop, it's not as perfect as other security mechanisms, but you can also combine it with a hardware wallet in which case your keys are safe and safely stored in a hardware wallet. Electrum, however, expects you to know where your derivation path is. So if you give it a seed or if you simply attach it to a hardware wallet and say, look, my seed is on there, you can't see it, but you can talk to it and ask about the master public keys, then it needs you to tell it where the derivation path is. And the bounty that I funded was a bounty to create a wizard that scans the most popular derivation path of the most popular wallets. Now, this is based on another great project called walletsrecovery.org that's managed by Jeanine Romer and Robert Novak, who have, and I hope I got those names correct, NVK and J9ROM. That website has basically a table that lists hundreds of wallets and all of the derivation paths they have been known to use in different versions and iterations of that software. And most of them are M44 prime, 0 prime, 0 prime, but some are some very weird alternative options. And yeah, so that plugin will basically go scan. It will look through and see if it can find money hanging on various branches that have been previously identified as popular ones. And by investigating 20 or 30 branches and picking an address from each to see if it's being used, it can basically say, hey, there's actually some money hanging off these three branches. Which one would you like to import? And that way you don't need to know your derivation path. I'm really excited about this because I think it actually gives newbies a much more secure way to do that search. And in fact, just yesterday I helped a friend figure that out and recover some money for their father who did not know how to import from a derivation path that was unknown. Luke Childs is the developer who developed this particular feature. You can see the pull request on the Electrum GitHub repository. I am delighted this worked out. And I'm also really excited about the possibility of helping newbies with this little problem that happens with not knowing your derivation path and trying to migrate wallets. And that's my little down the rabbit hole, the section where I ask myself a question about something that I'm interested in, in this particular case, something I'm really excited about because it just finished. And then I talk about it.