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

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

0.前言 #

中本聪和Gilfoyle一起合作,完成了Bitcoin0.0.2版本的设计工作。

重要的改变包括:

1.加入数字签名。

2.公钥替代用户名。

3.将签名加入交易模型。

4.删除了账号模型。

新版本,让交易变得更自由!

1.创建私钥 #

中途镇,咖啡馆,经过一周的开发和测试,Bitcoin0.0.2版本上线了。

中本聪找到Bob:“Hi,老板,Bitcoin的新版本上线啦!再有新客户想加入,
不用再来找我注册啦,他们自己就可以创建账号(其实是地址,Bitcoin已经没有账户模型了)啦”。

Bob朝着大厅喊道:“太好了!有人要来杯咖啡吗?顺便试试新系统!”

Alice走过来:“我来吧,正好想再喝一杯卡布奇诺。”

Alice拿出手机,打开浏览器,输入bitcoin.org。出现了这样的界面。

Alice叫到:“怎么和以前不一样了!”(见下图)

图片 1.png

新版本的登陆页面

中本聪说:“你需要先创建私钥”

Alice问:“什么是私钥?“

中本聪:“你可以把私钥当成是你的账号密码,这个密码很长,可以代替之前的用户名+密码”。

Alice:“这么说我就理解了”

中本聪:“你先创建私钥吧”

Alice选择创建私钥,点击了确定按钮,进入了下一个界面(见下图)

图片 1.png

生成的私钥和公钥

Alice按照提示,拿出笔抄写着自己的私钥:“这个公钥又是什么?”

中本聪:“你可以理解成你的收款地址,你也可以用他来查询余额,公钥是公开的,只有私钥需要保密”

Bob在一旁看着,问到:“这个私钥看起来很重要,它是在哪里生成的?在服务端还是客户端(浏览器就是客户端),安全吗?可以和我说说你是如何做的吗?我以前学过点编程,应该能听懂。”

中本聪说:“原来老板也懂编程啊,私钥是在客户端生成的,私钥永远不会在网络中传输,因为一旦被截获,别人将你的私钥导入,你的余额会被分分钟转走。”

中本聪继续解释:“但是生成私钥的算法代码是在服务端存储的,当浏览器第一次访问bitcoin.org的时候,服务端会将算法代码返回给浏览器,这时浏览器就拥有了生成私钥的计算能力,接下来用户点击创建私钥按钮的时候,浏览器运行自身的算法代码,并不会于服务端交互,所以私钥不会在网络中传输。”(见下图)

图片 1.png

生成私钥时,浏览器和服务端的交互

Bob:“听起来不错,这样我就放心了”。

中本聪:“其实,这样的设计还是不够安全,因为控制算法代码的是服务端,如果我想作恶,只要偷偷的在服务端更改算法代码,这样生成私钥的规则就由我说了算了。”

Bob说:“可是我们相信你不会作恶的”。

中本聪:“人性是不可靠的,如果诱惑足够大,我也不能保证自己不作恶哦。不过如果不嫌麻烦,你可以自己通过抛硬币生成私钥,然后将私钥导入”

2.交易 #

Alice说:“我相信你,我要操作转账啦,Bob你的收款地址是什么?”

Bob说:“我用短信发给你,这样你就不用手工抄写啦。”

中本聪说:“等一下Alice,你新创建的地址余额现在是0个Bitcoin,我得手工改下账本数据,将你之前账号里的余额割接过来。”

中本聪登陆到服务端将账本数据变更之后,Alice的余额恢复如初了。
Alice收到了Bob的短信,将公钥复制下来,粘贴到了转账界面,点击了转账。(见下图)

图片 1.png

转账到Bob的公钥地址

Bob打开手机查看自己的余额,已经收到了这笔转账。(见下图)

图片 1.png

Bob的余额界面

Bob说:“真神奇!去掉了用户注册,还用公钥地址保护了用户的隐私,可以
再说说整个交易是如何处理的吗?”

中本聪说:“好,我们从Alice点击转账按钮开始“

“首先浏览器生成交易数据,交易数据由两个部分组成,分别是:业务数据和签名。业务数据是‘公钥A to 公钥B 30’,公钥A代表Alice的公钥,公钥B代表Bob的公钥。签名是用Alice的私钥通过加密Alice的公钥生成的密文。”

“然后,浏览器将生成的交易数据放入消息中,向服务端发起网络请求”

“服务端接收到此消息,解析后得到交易数据“

“服务端首先要验证余额是否足够:遍历账本(transaction.txt)找出属于公钥A的交易记录,合计得出余额”

”服务端接下来验证签名是否合法:使用公钥A来解密签名,判断解密后的签名是否等于公钥A,如果相等则验证成功。”

“服务端最后将交易数据写入到账本,并将结果通过消息反馈回浏览器”

“浏览器接收到消息反馈,在界面显示交易结果。”(见下图)

图片 1.png

交易发生时,浏览器和服务端的交互

Alice接过了Bob的咖啡,新版本的第一笔交易宣告成功!

这个版本升级的很顺利,自从有了Gilfoyle的合作,中本聪心理越来越踏实。
可是只要是人写的程序,怎么可能没有BUG。

3.后记 #

本篇的目的让读者看到一个系统运行起来的全景图。

但是现在的设计中存在bug,在下一篇会看到这个bug究竟是怎么回事。

下一篇:重新创造比特币7:UTXO

相关链接 #

重新创造比特币:前言

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

 
1
Kudos
 
1
Kudos

Now read this

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

作者:何岩,由 recreating.org发行。 0.前言 # 上一篇描述了交易的同步,如果光是交易的同步是不够的,还需要考虑账本的同步 交易内存池代表着系统的当下,账本代表着系统的过去。 1.三个节点 # 咖啡馆,老板Bob给中本聪抱来了之前答应过的旧主机。中本聪接过老板怀中的主机,一顿表达感谢。 现在桌子上放着3台主机,由于桌子地方不够用了,第三台机器堆在了另外两台的上面,看起来像个金字塔。 中本聪对Gilfoyle说:“之前的2个节点已经可以正常的提供记账服务了... Continue →