Installing a wallet
Once an app is opened for the first time a new Bitcoin wallet gets generated randomly. That wallet is not tied to your device in any way.
This is particularly important as it means that simply reinstalling an app and generating another wallet won’t restore your previous balance: you will get a completely new zero balance wallet instead!
There is, however, a reliable way to preserve your balance across app reinstalls and even across multiple devices: you need to write down a recovery phrase once a new wallet is created.
It is a secret phrase comprising of 12 random words which is provided to you by the app once a new Bitcoin wallet is created. Recovery phrase alone is sufficient to restore your Bitcoin wallet balance so whoever knows it also fully controls your funds.
In a nutshell: only recovery phrase can restore your balance back in case you lose your phone or simply uninstall it by accident! Make sure to write it down and then keep it in a secure place.
In order to use Tor first install an Orbot app which would function as a Tor proxy on your phone. Once installed: open Orbot, enable VPN mode there and add SBW to the list of apps which should use it. After doing that all SBW traffic will be obfuscated and it will be able to connect to Tor nodes.
RBF and CPFP
RBF and CPFP allow to speed up pending transaction confirmation times by increasing its fee. CPFP can be applied to incoming transactions while RBF is used with outgoing transactions. Additionally, RBF allows to cancel a pending outgoing transaction and get its value back to wallet.
This technique allows to filter out spendable outputs and is primairly used as privacy enchansing tool when sending Bitcoin transactions or opening Lightning channels. Besides that coin control allows to save on chain fees by arranging spendable outputs such that there is no change.
It’s possible to compose a single Bitcoin transaction which spends funds to many addresses, doing so will greatly reduce chain fees. This feature is activated by sharing a list of
<address> <amount>; pairs with an app. List to be shared should look like this:
bc1q053q30qhmxwh256z7s6203dlpvzx0nwxsujs5l 11,000,000; 3BtbpxM4RPq9reMChx1EhTPKgbcMefRZ71 550,000; 3HoEwvrqYRnrizFN7gTg5ouSbV3Tek9pab 0.00491500
Amounts can either be provided as Satoshis separated by comma or as Bitcoins with decimal point.
Users can see their cold storage balance, generate receive addresses, spend money and fund Lightning channels directly from their hardware wallets through SBW. We use QR-based, air-gapped, single-signature style of communication in accordance with Uniform Resources (UR) standard.
A number of tutorials:
Using Lightning Network
Once Bitcoin wallet is created, you can then start opening Lightning payment channels with peers of your choice to send, receive and route payments across the Lightning network.
Lightning payments are denominated in BTC and typically happen much faster than regular Bitcoin transactions while taking smaller fees.
You might be interested in using Lightning if you plan to send and receive Bitcoin payments frequently or if you want to earn something on routing.
What is payment channel
Technically speaking, a payment channel is a multisig lockbox on a blockchain which is mutually controlled by you and a peer of your choice. A certain amount of bitcoins is locked into the channel and you can then use those coins to send and receive Lightning payments.
You can close a payment channel and get the rest of your locked coins back to your Bitcoin wallet at any time, either by agreeing with a peer on a mutual closing transaction (which occurs quickly) or via forced channel closing if your peer does not respond or becomes uncooperative.
Forced channel closure
Both you and your peer always have an option to forcefully close a payment channel, without the other’s permission. This will refund your Lightning balance back into your Bitcoin wallet after a certain delay which is usually set to 1-14 days.
Receiving via Lightning
In order to receive Lightning payments, some conditions must be met:
Nothing can be received immediately after creating a new payment channel, as ‘room’ for incoming funds has to be made by spending some funds first. A payment channel can be thought of as a full bottle of water: in order to pour something in one first has to pour something out.
Each channel implicitly contains a reserve which is unspendable and typically takes about 1% of the channel’s capacity. You must spend an amount matching that reserve to make receiving possible.
Unlike regular Bitcoin address, a Lightning payment request is disposable, it can not be reused. So you will need to issue a new individual payment request for every incoming payment you wish to receive.
Wallet app needs to be open and online in order to receive Lightning funds.
Wallet can be moved from one phone to another without closing payment channels and this can be achieved in the following way:
- Make sure you have wallet recovery phrase saved, if not then obtain it in wallet settings.
- Make sure channel backup file is present at
Downloadfolder, if not then enable local backup in wallet settings and check again.
- Close SBW and copy
encrypted.channels-mainnet-<hash>.binbackup file to some place outside of phone; putting it to public places is safe becase backup file is encrypted with your recovery phrase.
- Copy backup file to a new phone.
- Install SBW on a new phone, then open it and choose
Restore existing walletand then
Backup + recovery phrase.
- Once file picker appears: point it to backup file on a new phone and then provide a recovery phrase, that’s it.
Important: unlike Bitcoin wallet, same Lightning channels can not be used on many devices at the same time. Doing so will eventually lead to forced channel closure so make sure to delete an app from an old phone once channels are restored on a new one.
If you only use Bitcoin wallet then recovery phrase alone is enough for full balance restoring.
If you also have Lightning channels and there is no backup file then you’d need to reconnect to remote peer you have those channels with (by scanning a peer node QR for example). Once connected there will be a popup asking you to force-close locally missing channels. Once accepted you’ll shortly get the rest of missing channels balance back to local Bitcoin wallet.