0.前言
中本聪和Gilfoyle一起合作,完成了Bitcoin0.0.2版本的设计工作。
重要的改变包括:
1.加入数字签名。
2.公钥替代用户名。
3.将签名加入交易模型。
4.删除了账号模型。
新版本,让交易变得更自由!
1.创建私钥
中途镇,咖啡馆,经过一周的开发和测试,Bitcoin0.0.2版本上线了。
中本聪找到Bob:“Hi,老板,Bitcoin的新版本上线啦!再有新客户想加入,
不用再来找我注册啦,他们自己就可以创建账号(其实是地址,Bitcoin已经没有账户模型了)啦”。
Bob朝着大厅喊道:“太好了!有人要来杯咖啡吗?顺便试试新系统!”
Alice走过来:“我来吧,正好想再喝一杯卡布奇诺。”
Alice拿出手机,打开浏览器,输入bitcoin.org。出现了这样的界面。
Alice叫到:“怎么和以前不一样了!”(见下图)
新版本的登陆页面
中本聪说:“你需要先创建私钥”
Alice问:“什么是私钥?“
中本聪:“你可以把私钥当成是你的账号密码,这个密码很长,可以代替之前的用户名+密码”。
Alice:“这么说我就理解了”
中本聪:“你先创建私钥吧”
Alice选择创建私钥,点击了确定按钮,进入了下一个界面(见下图)
生成的私钥和公钥
Alice按照提示,拿出笔抄写着自己的私钥:“这个公钥又是什么?”
中本聪:“你可以理解成你的收款地址,你也可以用他来查询余额,公钥是公开的,只有私钥需要保密”
Bob在一旁看着,问到:“这个私钥看起来很重要,它是在哪里生成的?在服务端还是客户端(浏览器就是客户端),安全吗?可以和我说说你是如何做的吗?我以前学过点编程,应该能听懂。”
中本聪说:“原来老板也懂编程啊,私钥是在客户端生成的,私钥永远不会在网络中传输,因为一旦被截获,别人将你的私钥导入,你的余额会被分分钟转走。”
中本聪继续解释:“但是生成私钥的算法代码是在服务端存储的,当浏览器第一次访问bitcoin.org的时候,服务端会将算法代码返回给浏览器,这时浏览器就拥有了生成私钥的计算能力,接下来用户点击创建私钥按钮的时候,浏览器运行自身的算法代码,并不会于服务端交互,所以私钥不会在网络中传输。”(见下图)
生成私钥时,浏览器和服务端的交互
Bob:“听起来不错,这样我就放心了”。
中本聪:“其实,这样的设计还是不够安全,因为控制算法代码的是服务端,如果我想作恶,只要偷偷的在服务端更改算法代码,这样生成私钥的规则就由我说了算了。”
Bob说:“可是我们相信你不会作恶的”。
中本聪:“人性是不可靠的,如果诱惑足够大,我也不能保证自己不作恶哦。不过如果不嫌麻烦,你可以自己通过抛硬币生成私钥,然后将私钥导入”
2.交易
Alice说:“我相信你,我要操作转账啦,Bob你的收款地址是什么?”
Bob说:“我用短信发给你,这样你就不用手工抄写啦。”
中本聪说:“等一下Alice,你新创建的地址余额现在是0个Bitcoin,我得手工改下账本数据,将你之前账号里的余额割接过来。”
中本聪登陆到服务端将账本数据变更之后,Alice的余额恢复如初了。
Alice收到了Bob的短信,将公钥复制下来,粘贴到了转账界面,点击了转账。(见下图)
转账到Bob的公钥地址
Bob打开手机查看自己的余额,已经收到了这笔转账。(见下图)
Bob的余额界面
Bob说:“真神奇!去掉了用户注册,还用公钥地址保护了用户的隐私,可以
再说说整个交易是如何处理的吗?”
中本聪说:“好,我们从Alice点击转账按钮开始“
“首先浏览器生成交易数据,交易数据由两个部分组成,分别是:业务数据和签名。业务数据是‘公钥A to 公钥B 30’,公钥A代表Alice的公钥,公钥B代表Bob的公钥。签名是用Alice的私钥通过加密Alice的公钥生成的密文。”
“然后,浏览器将生成的交易数据放入消息中,向服务端发起网络请求”
“服务端接收到此消息,解析后得到交易数据“
“服务端首先要验证余额是否足够:遍历账本(transaction.txt)找出属于公钥A的交易记录,合计得出余额”
”服务端接下来验证签名是否合法:使用公钥A来解密签名,判断解密后的签名是否等于公钥A,如果相等则验证成功。”
“服务端最后将交易数据写入到账本,并将结果通过消息反馈回浏览器”
“浏览器接收到消息反馈,在界面显示交易结果。”(见下图)
交易发生时,浏览器和服务端的交互
Alice接过了Bob的咖啡,新版本的第一笔交易宣告成功!
这个版本升级的很顺利,自从有了Gilfoyle的合作,中本聪心理越来越踏实。
可是只要是人写的程序,怎么可能没有BUG。
3.后记
本篇的目的让读者看到一个系统运行起来的全景图。
但是现在的设计中存在bug,在下一篇会看到这个bug究竟是怎么回事。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。