The news is by your side.

Software Wallets

0 1

Get real time updates directly on you device, subscribe now.

Bitcoin wallets are apps that can at least:
• Create new Bitcoin addresses and store the corresponding private
keys
• Display your addresses to someone who wants to send you a
payment
• Display how many bitcoins are in your addresses
• Make Bitcoin payments
Let’s explore each of these capabilities.
Address Creation
Creating new Bitcoin addresses is an offline operation and involves
creating a public and private key pair. You can do this, if you like, using
dice141. This is different from any other account creation process where
you have to ask a third party to create an account for you, for example
asking your bank or Facebook to assign you an account.
• Step 1: Generate some randomness and use it to pick a number from
1 to 2256-1. This is your private key.
• Step 2: Do some maths on it to generate a public key.
• Step 3: Hash your public key twice to create your Bitcoin address.
• Step 4: Save the private key and its corresponding address.142
So you assign yourself an address without asking or checking with anyone
to see if it already taken. This sounds scary. What if someone else has
already chosen your private key? The short answer is that this is
extremely unlikely. 2256 is a big number, 78 digits long, and you can pick
any number up to that. Your chance of winning the UK lottery is 1 in
13,983,816—which only has eight digits. A number with seventy-eight
digits is astronomically large. In theory someone could deliberately
generate millions or billions of accounts per second and check them for
coins to steal, but the number of valid accounts is so humongous that
they’d be doing it forever before finding a single account that has been
used before. In practice, however, weaknesses can exist, and they rely on
exploiting flaws in the random number generation for the private keys. If
there is a flaw in the randomness when generating your private key, this
flaw could be exploited to reduce the search space for a thief143.
Address Display
When someone wants to send you bitcoins, you need to tell them your
address—like telling someone your bank account number so they can
send you money. There are a few ways to do this. One popular way is by
showing it as a QR code.
Example Bitcoin address: 1LfSBaySpe6UBw4NoH9VLSGmnPvujmhFXV
Equivalent QR code:

QR codes are not magic. They are just text, encoded in a visual way that
makes it easy for QR code scanners to read the code and convert it back
into text.
Another way is just to copy and paste the address itself:

Account Balance
The wallet needs to access an up to date version of the blockchain in
order to be aware of all the transactions going in and out of the addresses
it is keeping tabs on. The wallet, software can do this by either storing the
entire blockchain and keeping it up to date (this is called a full node
wallet) or by connecting to a node elsewhere which does the heavy lifting
(this is called a lightweight wallet).
A full node wallet would contain over a hundred gigabytes of data and
would need to be constantly connected over the internet to other Bitcoin
nodes. So in many cases, especially on mobile phones, this is not practical
so the wallet software is lightweight and connects to a server which hosts
the blockchain. The wallet software on the phone asks the server ‘What’s
the balance of address x?’ and ‘Please give me all the transactions related
to address y’.
Bitcoin Payments
As well as reading the account balances, the wallet needs to be able to
make payments. To make a Bitcoin payment, the wallet generates a
bundle of data called a ‘transaction,’ which includes references to the
coins that are going to be spent (transaction inputs consisting of unspent
outputs of previous transactions), and which accounts the coins will be
sent to (new outputs). We saw this in an earlier section. This transaction
is then digitally signed using the relevant private keys of the addresses
holding the coins. Once signed, the transaction is sent to neighbouring
nodes, via its server node if it is a lightweight wallet, or directly to other
peers if it is a full node wallet. The transactions eventually find their way
to miners who add them to blocks.
Other Features
Good wallet software has more functionality, including the ability to back
up private keys (encrypted with a passphrase) either to a user’s hard drive
or to a cloud storage server somewhere, to generate one-time use
addresses for privacy, to hold addresses and private keys for multiple
cryptocurrencies. Some are even integrated with exchanges to allow users
cryptocurrencies. Some are even integrated with exchanges to allow users
to convert between one cryptocurrency and another directly from within
the wallet software.
Often wallets will allow you to split keys or set up addresses that require
multiple digital signatures to spend from.
You can split a private key into several parts so that a certain threshold
number of parts are needed to create the original private key. This is a
process known as ‘sharding’ or ‘splitting’ a private key and a common
example is 2-of-3 sharding where a private key is split into 3 parts, any 2
of which can be combined to regenerate the original key. Similarly you
can have 2-of-4 or 3-of-4 or any combination of parts and total shards,
generically m-of-n. One algorithm to do this is using Shamir’s secret
sharing144. This lets you split a key and store parts of it separately in
different places, but with some resiliency in that, if you lose one or more
pieces, it may not be catastrophic.
You can also create addresses that require multiple digital signatures to
make payments from them. These are known as ‘multi-sig’ addresses145.
Again, you can have 1-of-3, 2-of-3, 3-of-3, or generically m-of-n. This has
a similar effect as sharding a single private key, but with slightly better
security properties. This lets you create a transaction, sign it, send it over
the internet in the clear, and let someone else sign it before it is
considered a valid transaction (key splitting on the other hand only
results in one signature). These addresses let you create systems where
multiple people need to sign or approve a transaction, like some
corporate cheques that need two signatures.
Software Wallet Examples
Examples of popular Bitcoin software wallets:
• Blockchain.info
• Electrum
• Jaxx
• Breadwallet
Note that I do not endorse these, and others are available. They could
have bugs, and you must do your own research before picking a wallet to
use. Most wallet software is open source, so you can investigate the code
and see that there are no backdoors or vulnerabilities in the code, before
you use them.

Get real time updates directly on you device, subscribe now.

Leave A Reply

Your email address will not be published.

Subscribe to our newsletter
Sign up here to get the latest news delivered directly to your inbox.
You can unsubscribe at any time

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More