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

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

0.前言: #

1-1.png

对于伟大的造物,重新创造就是一种膜拜

欢迎来到Bitcoin的世界!!!

1.缘起 #

1999年,中途镇,咖啡馆,上午10点,中本聪准时出现在靠窗子的位置。
中本聪喜欢这个位置,不是因为窗外的风景,而是因为窗边的电源插口。

中本聪是个程序员,最近休假,每天都来写代码,对于他来说,完美的日子不过如此。

o-CAFE-facebook.jpg

coding at cafe

世界新生伊始,许多事物还没有名字,提到的时候尚需用手指指点点。

中本聪端着咖啡在发呆,老板Bob问道:“Hi Satoshi!这几天咋不鼓捣你的代码啦?想啥呢?”。

中本聪答道:“最近想做一点新玩意,之前编的东西太normal了,正好最近休长假,有大把的时间,想搞点大东西,something big!”。

这时候老顾客Alice插嘴道:“Someting Big! 哼!要我说最大的问题就是我们的美联储乱发钱,这些自私的家伙,让我的财富每年都在被动损失,这些强盗、小偷。这就是Something Big!”

中本聪说:“你这样可不好,有点无政府主义倾向啊!不过给我的启发倒是,可以做一个全球电子现金系统,并且绝不增发!”

“货币源于价值:无论是贝壳,还是黄金,或者说所有在历史上担任过货币的事物,他们本身并不具备价值,他们只是一种符号。经过时间的磨砺,共识形成,符号变得可以代表价值。这时它们才具有了货币属性。所以电子现金同样要能代表价值。与其代表系统之外的价值,不如让这个系统自身产生价值,即,作为一个不可篡改的全球交易系统被人们使用。”当然这是在很久以后,中本聪才拥有的认知。

“你要是做出来,我们咖啡店先试用!”老板Bob叫到!

“加油吧小子!”Alice挥舞着拳头。

一股热流上了头,中本聪拿出笔记本开始写写画画起来,Bitcoin的设计工作开始啦!

2.先设计一个最简单的交易系统吧 #

中本聪开始了思考,先设计一个最简单的版本,先让Bob老板用起来,他一边用,我一边改进,这个思路不错!

既然是电子现金那么系统名字就叫Bitcoin吧。

第一个版本就做成最简单的单服务器的web系统,买一台普通台式机(服务器)放在咖啡馆,连上互联网,再买一个www.bitcoin.org的域名(备注:在故事的最后:重新创造比特币20:分叉之重组与分裂,我们将看到www.bitcoin.org被坏蛋偷走了,中本聪只好使用新域名www.bitcoinsv.com),咖啡店的顾客就可以通过浏览器方便的使用啦!(见下图)

图片 1.png

Bitcoin整体设计图

虽说我要创造一个电子现金系统,其本质上就是一个交易系统,交易才是市场的核心,现金只不过是一笔笔交易里的小数字。

如果按照传统的系统设计思路,系统可以分为程序部分和数据部分。

程序部分最核心的功能是处理交易。

数据部分最核心的功能是存储交易。

为了快速实现,存储的方案就采用普通文件(见下图)

图片 1.png

Bitcoin整体设计图

数据部分如何设计呢?

最起码需要两个文件:

1.用户文件(user.txt),字段包括:用户名,密码,余额。

2.账本文件(transaction.txt),字段包括:时间,付款者,收款者,金额。(见下图)

图片 1.png

这种需要独立存储账户信息的设计就是所谓的“账户模型”

程序部分需要具备哪些功能呢?

如果按照传统系统的思路,首先需要注册用户,不过如果用户都是咖啡店的老顾客,干脆就先暂时省去注册功能,谁想用Bitcoin,我就手工帮他创建账号,只要在user.txt文件里面加一条用户信息就可以了。

我真是想让咖啡店快点用起来,对,要赶在Bob反悔之前。

用户登陆验证功能必须要做,否则如果一个叫Carol家伙冒充Alice付款给自己就不好了。

关于处理交易,只要有交易写入和交易查询就ok啦。(见下图)
图片 1.png

程序部分的设计

这里有一点小麻烦,每次Alice付款给Bob的时候,程序都要先去user.txt找到Alice的余额,看看余额是否足够。如果余额足够,除了要将交易信息写入到transaction.txt之外,还要在user.txt中修改Alice和Bob的余额。嗯!余额很重要,余额就是一个人的财富积累,可得小心对待。

一个人在这个世界上的财富全部依赖于这个小数字,哦!可怜的小生物!
中本聪花了一个下午,设计完了Bitcoin的第一个版本,伸了一个长长的懒腰,扭头对着老板Bob说:“我设计完了,明天开始编码,争取这周就让咖啡店试用!”

“这么快,你真是个天才!来,尝尝我新研制的咖啡,这杯免费!”

“这只是一个最简单版本,离最后我想要的样子还差得远呢”,中本聪接过咖啡,喝了一口。

“这味道……嗯!……很感人!”

3.后记 #

写这个系列的一个套路是,让中本聪基于一个理由来创造出解决方案。

这个理由可能是遇到的问题(BUG),也可能是一个抽象理念。

反正不能平白无故的直接给出解决方案。

哪怕是我胡编的定位,也是定位。

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

相关链接 #

重新创造比特币:前言

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

 
6
Kudos
 
6
Kudos

Now read this

Recreating Bitcoin 19:Proof of Work (Part II)

Epilogue # Now let’s design a problem that requires Proof of Work to solve (POW). Looking for the Random Number Many times, in sleep you get the answer you would not get while awake. Satoshi was lucky to have experienced that. But it was... Continue →