重新创造比特币5:公钥和私钥

作者:何岩,由 recreating.org发行。

1.公钥和私钥 #

那么用户的公钥和私钥又是如何生成的呢?

这里正是采用非对称加密真正精髓之处,用户的公钥是由私钥计算得来,而用户的私钥则反直觉的由用户自己生成。

用户如何自己生成一个私钥呢?
(备注:公钥私钥更加详细的技术讲解可以阅读aaron67的文章:[学习笔记] 比特币的私钥和公钥)

私钥的本质是一个数字,公钥的本质也是一个数字,如果把任何数字当成私钥,都可以利用椭圆曲线加密算法生成这个数字对应的公钥,即,Function椭圆曲线加密算法(私钥)=公钥

5-1.png

椭圆曲线加密算法

如果让用户随机生成数字,并且数字的随机范围足够大,就可以避免两个用户生成了相同的私钥,即,私钥冲突。

多大的数字够用呢?

答案是2的256次方。

创建私钥本质上是“取得一个1到2的256次方之间的数字”。

你可以通过投256次骰子,并且用铅笔和纸张将结果记录下来。

结果看起来是这样:

111110010111110010001
00110101010101011001
111000011010000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
0000000000000000
0000000000000000

一共256个二进制的字符。为了让它看起来短点,我们将其转换成十六进制,这样就减少到了64个字符,每位代表4个bit。

(备注:一个二进制的数字就代表着1bit。再进一步解释bit的定义是:可以让50%概率的事情变为100%的确定性的信息,这个信息所等价的能量就是1bit。例如:在二进制中,下一个我要写的数字只能在0或1中选择,这时候下一个数字的概率就是50%,如果我写出来了1,那么这个1就是将50%的不确定性,变成了100%的确定性,这个1代表的就是1bit的能量,同理如果我选择的是0,这个0同样代表着1bit的能量,也就是说将不确定性变为确定性,需要信息,而信息的形成需要能量,1bit就是表示能量的大小)

转换成十六进制看起来是这样:

f97c89aaacf0cd2e47d
dbacc97dae1f88bec49
106ac37716c451dcdd0
08a4b62

公钥是根据私钥计算得来,所以公钥也是一个很长的数字,用十六进制表示是这个样子:

b4327ae841ca6cfd120
3cc6e135a48d893cbfb
2c388c0f64a79694199
cc9b4cb

为了方便使用,如果想再短些,我们还可以将其转换成64进制(base64)看起来是这个样子:

1BJhat1AMGYbT9HYJxV
ekoCaPaqB9ZyTyF

2进制:1个字符对应的范围是0~1,有2个选择。

16进制:1个字符对应的范围是0~15,有16个选择。它由0-9,A-F组成。

64进制:1个字符对应的范围是0~63,有64个选择。64进制几乎用上了我
们键盘上的所有按钮。

理论上,如果我们制造一个按钮超多的键盘,什么星星,三角,方块,菱形,各种新符号,如果能凑齐128个,我们就可以实现128进制。只不过因为我们全球共识的通用字符也就比64多一点,所以就到64进制为止了。

(备注:现实世界的比特币系统用的是base58,是基于base64的改良版,技术细节推荐阅读:aaron67的文章[学习笔记] 比特币的地址)

2的256次方是一个难以想象的大数,以十进制表示,它大概是10的77次方,而宇宙的可见部分,其组成也就大概10的80次方个原子。所以,通过随机碰撞出相同私钥的概率可以小到忽略不计。

正是由于用户不通过服务端生成自己的私钥和公钥,服务端不会预先知道任何用户的存在,所以才可以舍弃账户模型,从根本上去掉了用户注册。
舍弃了用户注册和账户模型,服务端就变得难以限制用户的使用自由。

用户以公钥示人,如果你不说没人知道某个公钥是谁的,除非你俩之间发生了交易,这种交易易名的方式实现了对个人隐私的保护。

就这样,Bitcoin朝着交易的更加自由,迈出了它的第一步!

(备注:这里要注意,Bitcoin的隐私保护是通过易名而非匿名,关于这个概念可以阅读邱少贤的《比特币重生-比特币隐私模型

夕阳透过窗子洒进了咖啡馆,它将屋子里的人都镀成了金色。

中本聪还在全神贯注的盯着屏幕,敏捷的敲击着键盘。

Gilfoyle在一次又一次的投掷着硬币,每次硬币落到桌子上,他就用铅笔记录一次结果。

中本聪一边盯着屏幕,一边问道:“你在干什么?”

Gilfoyle:“我在生成我自己的私钥”。

中本聪:“用计算机的随机算法生成,一秒钟就能搞定!”。

Gilfoyle:“我不相信计算机,我只相信硬币”。

图片 1.png

生成私钥

参考: #

aaron67‘blog:[学习笔记] 比特币的地址

下一篇:重新创造比特币6:第二个版本上线啦

相关链接 #

重新创造比特币:前言

Part One : 交易
重新创造比特币1:从一个简单的web交易系统开始
重新创造比特币2:第一个版本上线啦
重新创造比特币3:舍弃账户模型
重新创造比特币4:数字签名
重新创造比特币5:公钥和私钥
重新创造比特币6:第二个版本上线啦
重新创造比特币7:UTXO
重新创造比特币8:基于UTXO的系统重构
重新创造比特币9:万物皆交易
重新创造比特币10:交易脚本

Part Two : 群系统
重新创造比特币11:群系统(上)
重新创造比特币12:群系统(下)
重新创造比特币13:P2P网络
重新创造比特币14:交易的同步
重新创造比特币15:账本的同步
重新创造比特币16:Block Chain
重新创造比特币17:网络的弹性
重新创造比特币18:工作量证明(上)
重新创造比特币19:工作量证明(下)
重新创造比特币20:分叉之重组与分裂

书面设计矢量图_36.png

英文版Amazon.com在售 : Recreating Bitcoin

BSV打赏:
1Djc4TdVBi8urzmSXKHwg8cpEAYKcRQxgY

©2019 - Recreating.org all rights reserved

 
2
Kudos
 
2
Kudos

Now read this

重新创造比特币14:交易的同步

作者:何岩,由 recreating.org发行。 0.前言 # 在上一篇中,中本聪和Gilfoyle搞定了最简单的点对点网络。但是无法正常运行,因为账本还没实现同步机制。为了解决账本的同步,需要先引出交易的同步。 1.账本不一致 # 咖啡馆,中本聪对着老板Bob说:“老板,这几天Bitcoin系统要升级,暂时无法用了” Bob说:“我看到了,你们又是搬机器,又是写代码,这次升级动静够大的。” 中本聪说:“是啊,Bitcoin要发生质变了,对了,... Continue →