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

1.公钥和私钥 #

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

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

用户如何自己生成一个私钥呢?

(备注:公钥私钥更加详细的技术讲解可以阅读aaron67的文章:[学习笔记] 比特币的私钥和公钥

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

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

多大的数字够用呢?

答案是2的256次方。

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

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

结果看起来是这样:

1111100101111100100010011010101010101100111100001101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

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

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

f97c89aaacf0cd2e47ddbacc97dae1f88bec49106ac37716c451dcdd008a4b62

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

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

1BJhat1AMGYbT9HYJxVekoCaPaqB9ZyTyF

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的改良版,技术细节推荐阅读:[学习笔记] 比特币的地址

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

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

舍弃了用户注册和账户模型,服务端就变得难以限制用户的使用自由。

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

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

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

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

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

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

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

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

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

生成私钥

生成私钥

参考: #

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

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

相关文章: #

重新创造比特币1:从一个简单的web交易系统开始

重新创造比特币2:第一个版本上线啦

重新创造比特币3:舍弃账户模型,让交易更自由

重新创造比特币4:数字签名

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

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

重新创造比特币7:UTXO

重新创造比特币8:基于UTXO的系统重构

重新创造比特币9:万物皆交易

重新创造比特币10:交易脚本

重新创造比特币11:群系统(上)

重新创造比特币12:群系统(下)

重新创造比特币13:P2P网络

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

重新创造比特币15:账本的同步

重新创造比特币16:Block Chain(付费)

重新创造比特币17:网络的弹性(付费)

重新创造比特币18:工作量证明(上)(付费)

重新创造比特币19:工作量证明(下)(付费)

重新创造比特币20:分叉之重组与分裂(付费)

比特币SV(Bitcoin satoshi vision,BSV)是目前唯一一个遵循中本聪原始白皮书,遵循中本聪原始协议和设计的比特币。BSV是唯一的公共区块链,维持比特币的原始愿景,并将大规模扩容成为企业级区块链和世界新货币。

 
0
Kudos
 
0
Kudos

Now read this

第六章.原型与面向对象(6.Object-orientation with prototypes)[完成]

翻译 Secrets of the JavaScript Ninja (JavaScript忍者禁术) 第六章.原型与面向对象(6.Object-orientation with prototypes) 本章重点: 1.利用函数实现构造器 2.解释prototyes 3.利用prototypes实现对象的扩展 4.avoiding common gotchas 5.利用inheritace构建classes... Continue →