第 1 章 从一个简单的 Web 交易系统开始
本系列连载自《重新创造比特币》,它是一本比特币入门书籍,通过一个虚拟故事,让读者体验从零开始创造比特币的过程,从而理解比特币为什么如此设计。

前言:Recreating Movement

“What I cannot recreate, I do not understand.”
对于伟大的造物,重新创造就是一种膜拜。
重新创造,是一种行为的范式(style),我将其定义为:重新创造运动,即,Recreating Movement
重新创造比特币(Recreating Bitcoin),只是 Recreating Movement 中的第一个作品。接下来我将开始第二个作品:重新创造元网(Recreating Metanet)。
Recreating Movement 的范式要义:
1. 旧瓶装新酒。
选择一个已经存在的伟大事物,保留事物的表象,用你的认知构建事物的本质解释器
2. 相似的味道,不同的配方。
事物的表象可以和真实世界不一致,可以做降配/简化处理,但是方向要保持一致。配方一定不要照本宣科,配方要用你自己对世界的理解,这样 recreating 起来才 flow。
3. Learn by doing
在做的过程中学习,你可以是一个非专业人士,在 Recreating 的构建过程有的放矢的实现自我教育。好比,在游泳中学习游泳,在骑车中学习骑车,在 Recreating 中变得牛逼!Recreating 就是一场自我教育之旅。Recreating Movement 将成为最高效的学习范式。
欢迎加入 Recreating Movement:
一起用 Recreating 的范式(style)来向你所热爱的事物致敬。你可以 Recreating 任何你热爱之物,例如,Recreating CPU, Recreating Lisp, Recreating Matrix, Recreating Kobe, Recreating American, Recreating Warcraft III, Recreating LOL, etc.

缘起
1999 年,中途镇,咖啡馆,上午 10 点,中本聪准时出现在靠窗子的位置。中本聪喜欢这个位置,不是因为窗外的风景,而是因为电源插口。
中本聪是个程序员,最近休假,每天都来写代码,对于他来说,完美的日子不过如此。
coding at cafe
那时,互联网的世界新生伊始,许多事物还没有名字,提到的时候尚需用手指指点点。中本聪端着咖啡在发呆,老板 Bob 问道:“Hi Satoshi!这几天咋不鼓捣你的代码啦?想啥呢?”。中本聪答道:“最近想做一点新玩意,之前编的东西太 normal 了,正好最近休长假,有大把的时间,想搞点大东西,something big!”。这时候老顾客 Alice 插嘴道:“Someting Big!哼!要我说最大的问题就是我们的美联储乱发钱,这些自私的家伙,让我的财富每年都在被动损失,这些强盗、小偷。这就是 Something Big!”中本聪说:“你这样可不好,有点无政府主义倾向啊!不过给我的启发倒是,可以做一个全球电子现金系统,并且绝不增发!”“货币源于价值:无论是贝壳,还是黄金,或者说所有在历史上担任过货币的事物,首先是有使用价值,然后经过长时间的共识,才具有了货币属性。所以这个系统同样要有价值,即,作为不可篡改的全球账本被人们使用。”当然这是在很久以后,中本聪才拥有的认知。“你要是做出来,我们咖啡店先试用!”老板 Bob 叫到!“加油吧小子!”Alice 挥舞着拳头。一股热流上了头,中本聪拿出笔记本开始写写画画起来,Bitcoin 的设计工作开始啦!
先设计一个最简单的交易系统吧
中本聪开始了思考,先设计一个最简单的版本,先让 Bob 老板用起来,他一边用,我一边改进,这个思路不错!
既然是电子现金那么系统名字就叫 Bitcoin 吧。
第一个版本就做成最简单的单服务器的 web 系统,买一台普通台式机(服务器)放在咖啡馆,连上互联网,再买一个 www.bitcoin.org 的域名 (备注:在故事的最后:重新创造比特币 20: 分叉之重组与分裂,我们将看到 www.bitcoin.org 被坏蛋偷走了,中本聪只好使用新域名 www.bitcoinsv.com),咖啡店的顾客就可以通过浏览器方便的使用啦!(见下图)

Bitcoin 整体设计图
虽说我要创造一个电子现金系统,其本质上就是一个交易系统,交易才是市场的核心,现金只不过是一笔笔交易里的小数字。
如果按照传统的系统设计思路,系统可以分为程序部分和数据部分。
程序部分最核心的功能是处理交易。
数据部分最核心的功能是存储交易。
为了快速实现,存储的方案就采用普通文件(见下图)
Bitcoin 整体设计图
数据部分如何设计呢?
最起码需要两个文件:
1. 用户文件(user.txt),字段包括:用户名,密码,余额。
2. 账本文件(transaction.txt),字段包括:时间,付款者,收款者,金额。(见下图)
这种需要独立存储账户信息的设计就是所谓的“账户模型”
程序部分需要具备哪些功能呢?如果按照传统系统的思路,首先需要注册用户,不过如果用户都是咖啡店的老顾客,干脆就先暂时省去注册功能,谁想用 Bitcoin,我就手工帮他创建账号,只要在 user.txt 文件里面加一条用户信息就可以了。我真是想让咖啡店快点用起来,对,要赶在 Bob 反悔之前。用户登陆验证功能必须要做,否则如果一个叫 Carol 家伙冒充 Alice 付款给自己就不好了。关于处理交易,只要有交易写入和交易查询就 ok 啦。(见下图)
程序部分的设计
这里有一点小麻烦,每次 Alice 付款给 Bob 的时候,程序都要先去 user.txt 找到 Alice 的余额,看看余额是否足够。如果余额足够,除了要将交易信息写入到 transaction.txt 之外,还要在 user.txt 中修改 Alice 和 Bob 的余额。嗯!余额很重要,余额就是一个人的财富积累,可得小心对待。
一个人在这个世界上的财富全部依赖于这个小数字,哦!可怜的小生物!
中本聪花了一个下午,设计完了 Bitcoin 的第一个版本,伸了一个长长的懒腰,扭头对着老板 Bob 说:“我设计完了,明天开始编码,争取这周就让咖啡店试用!”
“这么快,你真是个天才!来,尝尝我新研制的咖啡,这杯免费!”
“这只是一个最简单版本,离最后我想要的样子还差得远呢”,中本聪接过咖啡,喝了一口。
“这味道……嗯!……很感人!”
后记
写这个系列的一个套路是,让中本聪基于一个理由来创造出解决方案。这个理由可能是遇到的问题 (BUG),也可能是一个抽象理念。反正不能平白无故的直接给出解决方案。哪怕是我胡编的定位,也是定位。
来源:比特币协会 BA
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。

3点钟资讯



