- How do I connect my node?
- How do I create a wallet?
- How do I delete a wallet?
- What is a single signature wallet?
- What is a multi signature wallet?
- What is a recovery wallet?
- What is a import wallet?
How do I connect my node?
When you open Fully Noded it will automatically check if you have any nodes added, if not it will automatically prompt you to add one:
You have two choices, the easy way is to scan a Quick Connect QR code, if you do not have one you may enter your nodes credentials manually. The Quick Connect QR code simply puts your node credentials together into a url which can be easily interpreted by a QR scanner. Nodl, myNode, BTCPayServer, Raspiblitz and Embassy node manufacturers all make it easy for you to connect by displaying a Quick Connect QR for you.
To enter your node’s credential’s manually tap the “manual” button which will prompt you to add your credentials:
Fully Noded is entirely powered by your own node, in order to communicate with your node it needs to connect to your node’s rpcport. Controlling your node’s rpcport requires you to add your RPC username and password which can be located in your bitcoin.conf file on your node’s computer. Its very important to note no special characters are allowed in your RPC username or RPC password, this is because all the information together forms a url, like a website address, putting anything other then url compatible characters will break the url and will result in an “unknown error” when trying to connect to your node.
Opening up your rpcport for remote control is not something that should be taken lightly, if an attacker were to gain access to your node’s rpcport they would get full control of your node. For this reason Fully Noded requires that your node’s rpcport is accessible by only the most secure means possible which at this time is a Tor V3 hidden service.
To read about how to setup your own Tor V3 hidden service to control your node’s rpcport here is a guide for mac.
Once you have your Tor V3 hidden service up and running you will need your Tor V3 hidden service’s hostname, it will look something like this
qndoiqnkajsbkawoiqunf8h3nd3rd.onion. The hostname can be found wherever you specified it in your torrc file’s
HiddenServiceDir. To read more about locating your torrc file read this.
Once you have your hostname you will need to append the hidden services port to the end of it so that it looks like
qndoiqnkajsbkawoiqunf8h3nd3rd.onion:8332. Again that port number is also located in yout torrc file where you created the hidden service to begin with, look for the
HiddenServicePort 8332 127.0.0.1:8332
Here 8332 is the port number we want.
Once you have added all the necessary credentials just tap save and Fully Noded will give you a success alert and automatically connect to your node.
How do I create a wallet?
First ensure your connection to your node is alive by allowing the home screen to completely load, you know it has finished when the spinner disappears and it looks like this:
Then tap the “Active Wallet” tab button on the bottom tab bar, then tap the “Create a Fully Noded Wallet” button in the form of a plus sign in the top left of the “Active Wallet” view:
How do I delete a wallet?
There are two fundamental wallet types you can access in Fully Noded:
- Fully Noded Wallet
- Bitcoin Core Wallet
A “Fully Noded Wallet” is a wallet you create from this screen:
Creating a Fully Noded wallet allows the app to remember important things about your wallet which enables more functionality. You may delete these wallets from the device by tapping the info button from the “active wallet” tab and tapping the trash can.
“Bitcoin Core Wallets” are any wallet that exists on your node, you can create wallets on your node with Bitcoin Core itself and a number of other apps, including Join Market, Electrum, Specter and many more. One of the great things about Fully Noded is it allows you to access all of these wallets incase you need to, allowing you to spend from them if they are hot or by adding a bip39 seed words to FN.
For every single wallet you create there is always what is called a wallet.dat file on your node. This can *never* be deleted from Fully Noded!
It has to be deleted *from your node*, because that is where the wallet exists.
Fully Noded is a remote control for your node and accessing “Bitcoin Core Wallets” in Fully Noded via the advanced tab simply shows you what is on your node.
To permanently delete a “Bitcoin Core Wallet” you must do so on your node via accessing the .bitcoin directory finding the wallet and manually deleting it. The same goes for “Fully Noded Wallets” as deleting them in the app simply hides them, to actually delete it you need to delete the corresponding wallet.dat file, FN conveniently displays this filename for you so you may easily identify it on your node and then delete.
Single Signature – Fully Noded Wallet:
A Fully Noded single signature wallet only requires one private key to sign a transaction. From a users point of view this means you only need one set of seed words to spend from the wallet.
Fully Noded first will use the devices cryptographically secure random number generator to create a seed for your wallet, it then converts that random data into a bip39 mnemonic (seed words) so that you may easily back the wallet up by writing those words down and easily recover the wallet by inputting those words.
FN first creates a wallet on your node which explicitly disables private keys. FN then derives 2500 public keys from the seed using the bip84 derivation path and imports each address type for each public key into your node. It does this twice once for receive keys using your “Receive descriptor keypool” and then again for your “Change descriptor keypool”. These keys get added to the nodes wallets keypool so that we can use Bitcoin Core in the simplest and most direct way to build transactions for us where we rely on Bitcoin Core to generate the change keys and invoice addresses.
What makes this wallet different is that you can go to “advanced” > “invoice format” and choose any address format you would like, FN will be able to receive to and spend from any address type for this wallet not just segwit bech32. This is possible because it uses the “combo” prefixed descriptor type when importing keys.
Its critically important to note that these wallets follow the bip84 derivation scheme but can generate/receive to and spend from segwit, segwit wrapped and legacy addresses.
FN holds the encrypted seed for the wallet and offers you the ability to at anytime delete those words to make the wallet “cold”, you will not be able to spend from the wallet if you do this! It will build psbt’s for you instead of signed raw transactions.
Under the hood FN uses
bitcoin-cli walletcreatefundedpsbt to build a psbt. This means we rely on Bitcoin Core’s sophisticated coin selection algorithm and fee estimation. It returns a psbt to us, FN then decrypts the seeds on the device and checks to see if it can sign the psbt or not, if it can it does. If after signing the psbt it is indeed complete the app then finalizes the psbt which converts it to a raw signed transaction which can be broadcast to the Bitcoin network using your node.
Multi Signature – Fully Noded Wallet:
Creating a Fully Noded multi signature can either be an automated process or a manual one, the choice is yours. It is incredibly flexible and powerful. An important point is that currently the derivation for the multisig creator is hardcoded to be
m/48'/0'/0'/2' which is compatible with Electrum and Coldcard. They will only ever produce and spend from bech32 addresses. They are by default bip67 meaning all the keys are derived lexicographically, this means the order of the xpubs does not matter.
Step one is adding signers, tap the plus button to add one.
As you can see FN automatically creates a seed, derives its xpub and its fingerprint. It then also converts that xpub to a Zpub which is what you would use to import this multisig signer into Electrum for example. Th xpub and the Zpub are the same thing, the Zpub is simply a way of telling other wallet software that this is a pay to witness script hash address format. Under the hood the Zpub always gets converted to an xpub, for example in Bitcoin Core you can never import a Zpub, it always needs to be converted to an xpub first. Here we give you both to save you the hassle of having to convert it.
Conversly you may delete all of the data for the signer by tapping the “clear” button. Then you may add either your own Zpub (again FN will convert it an xpub and display it for you), xpub, or seed words.
If you only add a xpub or Zpub you will *need* to add the fingerprint that represents the root master key of thet seed that the xpub was derived from, this is to ensure devices like a Coldcard will sign it, if you supply a Coldcard with an incorrect fingerprint it will not sign even if the seed is correct.
When adding your own seed of course FN will just derive all the info it needs using the supplied seed words.
You may *always* delete the seed words and the other data will persist. This way you can enure the correct xpub and fingerprint are derived yet not add a signer to the device.
To be clear you must always either add seed words or xpub or Zpub. A fingerprint must always be present.
Once you have done that and you have added as many signers as you desire FN will then prompt you to choose the number of *required* signatures. Once you select that number then FN will go through the wallet creation process, first creating a wallet on your node then importing 2500 public keys using you multisig descriptors.
The major difference between single signature and multi signature (other then requiring multiple seeds to spend) is that multi signature keys can not be added to the keypool on your node so we simply use the descriptors to derive them on the fly. This means FN always keeps track of the index of your last used address or utxo and increments it by one so we never reuse addresses. You can view and access to tools for the wallet by tapping the info button on the “active wallet” tab.
Once the wallet creation process completes and all the keys have been successfully imported to your nodes wallet you will get a success message, from that point on using multisig is just as easy as using single sig, FN will again try and sign every psbt the with the seeds on the app, if it can it will sign. If the psbt is complete the transaction gets finalized and you may broadcast it, if not you may export the partially signed psbt to other signers.
If the day comes where you want to spend all the funds in the wallet you can always independently add signers to FN, once you have added the amount of required signers that can sign for the wallet you will get a signed raw transaction returned when sending funds instead of a psbt which you may broadcast to the Bitcoin network.
Recovery – Fully Noded Wallet:
Import – Fully Noded Wallet: