本系列连载自《重新创造比特币》,它是一本比特币入门书籍,通过一个虚拟故事,让读者体验从零开始创造比特币的过程,从而理解比特币为什么如此设计。
1.公钥和私钥
那么用户的公钥和私钥又是如何生成的呢?
这里正是采用非对称加密真正精髓之处,用户的公钥是由私钥计算得来,而用户的私钥则反直觉的由用户自己生成。
用户如何自己生成一个私钥呢?
(备注:公钥私钥更加详细的技术讲解可以阅读aaron67的文章:[学习笔记] 比特币的私钥和公钥)
私钥的本质是一个数字,公钥的本质也是一个数字,如果把任何数字当成私钥,都可以利用椭圆曲线加密算法生成这个数字对应的公钥,即,Function椭圆曲线加密算法(私钥)=公钥
如果让用户随机生成数字,并且数字的随机范围足够大,就可以避免两个用户生成了相同的私钥,即,私钥冲突。
多大的数字够用呢?
答案是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:“我不相信计算机,我只相信硬币”。
生成私钥
参考:
aaron67‘blog:[学习笔记
转自:何岩 BSVOfficial