# Recreating Bitcoin 5:Public Key and Private Key

# Public Key & Private Key #

So how are the public key and private key of a user generated?

This is precisely the essence of asymmetrical encryption. User’s public key is derived from private key through computation, and user’s private key is counter-intuitively generated by the user themselves.

How is a private key generated?

Private key and public key in essence are numbers. If we treat any number as a private key, we can use elliptical curve cryptography to generate the corresponding public key of this number. That is, Function elliptical curve encryption (private key) = public key.

elliptical curve cryptography

If we let the user to randomly generate numbers and make the range of possibilities large enough, we can prevent two users from generating the same private key - that is, conflict of private key.

But then How large is large enough?

The answer is two to the power of 256.

The essence of creating private key is obtaining a number between 1 and 2 to the power of 256.

One way you could do it is by throwing a coin 256 times and record each result, which would look something like this:

11111001011100

1100100010011010

10101010110011110

00011010000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

0000000000000

That’s a total of 256 binary characters. We can transform it into that of a hexadecimal order to reduce it to a total of 64 characters, each representing 4 bits.

(Note: *one binary number represents 1 bit. 1-bit information is what makes
a 50% probability into 100% certainty. The energy of the information of that size is 1 bit. For example: in the binary system, the number can only be either 0 or 1, each representing a 50% chance. If 1 is produced, then the 50% uncertainty has been turned into a 100% certainty, representing 1 bit. Vice versa for the case of 0. Either represents the energy of 1 bit. The information needed to produce this kind of certainty is 1 bit.*)

In the hexadecimal order, the result looks like this:

*f97c89aaacf0cd2e47ddba
cc97dae1f88bec49106ac3
7716c451dcdd008a4b62*

The public key, which calculated using the private key, would also be in hexadecimal order:

*b4327ae841ca6cfd1203cc
6e135a48d893cbfb2c388
c0f64a79694199cc9b4cb*

We can further transform it into based-64 for a shorter representation:

*1BJhat1AMGYbT9HYJxVek
oCaPaqB9ZyTyF*

Base-2: each character has the options of 0-1, two possibilities.

Base-16: each character has the options of 0-15, 16 possibilities, consisted of 0-9 and A-F.

Base-64: each character has the options of 0-63, 64 possibilities, almost taking up all the keys on a standard keyboard.

Theoretically, if we can invent a keyboard with keys that contain special characters such as stars and triangles, we could potentially have 128 characters in total, enough to implement base-128. But so far the global standard only includes slightly more than 64 characters, so base-64 is what we use.

(Note: The real world Bitcoin system uses base-58, a modified version of base-64)

2^{256} is a number very hard to imagine. In decimal place, it is approximately 10^{77} (the observable portion of the universe has about 1080 atoms). We can basically regard the chance of coincidence as 0.

Because users do not produce their private and public keys with the server, the server does not know the existence of the user in advance, which means that by getting rid of the account model, we get rid of user registration. By getting rid of user registration, the server cannot limit the user freedom.

By using public key as the recipient address, we also improve the privacy protection of the user identity (It is important to note here that the privacy of Bitcoin is protected by changing names rather than anonymity).

Bitcoin made one more step towards freedom of Transactions.

The setting sun fell through the windows of the cafe, gilding the room with a golden color.

Satoshi is still engrossed in the screen, tapping away at the keyboard.

On the side, Gilfoyle was tossing a coin over and over again on the table, recording it with a pencil.

Satoshi asked him, “What are you doing?”

Gilfoyle answered, “Making my own private key.”

“Do it with your computer. It doesn’t take a second,” Satoshi said.

“I don’t trust a computer. I only trust my coin,” Gilfoyle said.

**Next chapter ：**Recreating Bitcoin 6:Version 0.0.2 is Online!

# CONTENTS #

Recreating Bitcoin:A Fictional Story of Why Bitcoin was Designed This Way

**Part one : Transactions**

Recreating Bitcoin 1:Start over with a Simple Web Transaction System

Recreating Bitcoin 2:First Version is Online!

Recreating Bitcoin 3:Getting Rid of the Account Model

Recreating Bitcoin 4:Digital Signature

Recreating Bitcoin 5:Public Key and Private Key

Recreating Bitcoin 6:Version 0.0.2 is Online!

Recreating Bitcoin 7:UTXO

Recreating Bitcoin 8:System Refactoring Based on UTXO

Recreating Bitcoin 9:Everything is Transaction

Recreating Bitcoin 10:Transaction Script

**Part Two : Swarm System**

Recreating Bitcoin 11:Swarm System (Part I)

Recreating Bitcoin 12:Swarm System (Part II)

Recreating Bitcoin 13:P2P Network

Recreating Bitcoin 14:Synchronizing Transactions

Recreating Bitcoin 15:Synchronizing Ledger

Recreating Bitcoin 16:Block chain

Recreating Bitcoin 17:Network Flexibility

Recreating Bitcoin 18:Proof of Work (Part I)

Recreating Bitcoin 19:Proof of Work (Part II)

Recreating Bitcoin 20:The Reorganization and Division of

Forking

## Complete book selling at Amazon( > US > UK > CA > JP > DE > FR > ES > IT) #

BSV Donate:

1Djc4TdVBi8urzmSXKHwg8cpEAYKcRQxgY

©2019 - Recreating.org all rights reserved