重新创造比特币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

 
0
Kudos
 
0
Kudos

Now read this

Recreating Bitcoin 17:Network Flexibility

Epilogue # In the last chapter, we introduced the technical concepts of block chain and block reward. This chapter focuses on the connection mechanism to make the network more flexible. The Problem In the café, Satoshi and Gilfoyle... Continue →