Introducing Fully Noded Wallets
By: Fully Noded
Tags: Full Node, Bitcoin, Bitcoin Wallet, iPhone, Tor

I am proud to announce the addition of some highly demanded features to Fully Noded!

A bit of backstory first:

Fully Noded has always had the ability to create wallets, however this ability was directly powered by your nodes bitcoin-cli interface and nothing else (except for in the case of HD multisig but we won’t go there). Fully Noded acted “dumb”, it allowed you to create Bitcoin Core wallets without offering anyway to back the wallet up via the apps user interface.

This meant users needed to know how to back up their node’s wallet’s, create a seed, derive keys from a seed, import them correctly etc… etc… Not ideal at all! Not to mention storing your private keys on your node (usually a general purpose computer) is not a good idea from a security perspective.

That has all changed! To be clear Fully Noded still offers all of its original functionality via the “Wallet Manager”, nothing has changed there, Fully Noded still allows unfettered access to your nodes capabilities for those who want it (me).

The major change is now visible from the “Active Wallet” tab. In the top left corner you can see a new plus button and a button in the form of a stack of squares.

To try it yourself you can join the new TestFlight here: https://testflight.apple.com/join/a6GWxet2

Tapping the plus button will present this view:

Now you have the option to create or recover a “Fully Noded Wallet”.

If you want to create a fresh wallet tap “single-sig” and let the magic happen. Fully Noded now uses a wonderful open source library called LibWally (https://github.com/ElementsProject/libwally-core) (https://github.com/blockchain/libwally-swift/blob/master/README.md) which allows us to utilize BIP39 directly in the app meaning you can easily recover your Fully Noded wallet with Electrum for example. Now when you create a wallet you will get a 12 word recovery phrase (no passphrase by default) to backup and keep safe.

Fully Noded Wallets are smarter. They create a wallet on your node that can only hold public keys, meaning your node can not spend your bitcoin on its own. Fully Noded imports BIP84 keys into your node but also imports each address type for each public key so that you can receive to and spend from every kind of address, this is handy in a world where not all popular wallets/bitcoin service providers are capable of sending btc to a bech32 segwit address (shocking I know).

The derivation paths used to import your public keys are:

m/84'/0'/0'/0/0–2500 (added to receive keypool)

m/84'/0'/0'/1/0–2500 (added to change keypool)

For each of the above paths we import each address script; bech32 (p2wpkh), segwit wrapped (p2sh-p2wpkh) and legacy (p2pkh).

Your node knows to watch 5,000 public keys and 15,000 address script types for the wallet by default. It will see all your utxo’s and in this way can build psbt’s with them. Your node will utilize Bitcoin Core’s excellent coin selection algorithm, fee estimation and you get to rely on the most peer reviewed peice of software in existence to build your transactions and manage your funds (Bitcoin Core), it is literally just you and your node.

When you go to send btc your node builds the psbt which is not signed at all, Fully Noded then takes that psbt and signs it locally (no internet required), converts it to a raw transaction and gives you the option to broadcast it. Because everything that happens on Fully Noded is happening on Tor the privacy and security benefits are huge.

Your encrypted seed words are stored independently of your wallet using your devices secure enclave to encrypt the seed, this way your seed can sign for any derivation path you hand it.

Fully Noded now acts like a hardware wallet, it can sign anything 100% locally with no internet required at all.