主页 > imtoken钱包苹果 > 再造比特币 1:从简单的 Web 交易系统开始

再造比特币 1:从简单的 Web 交易系统开始

imtoken钱包苹果 2023-01-17 01:48:14

0.前言:

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

对于伟大的创造,再创造是一种崇拜

欢迎来到比特币的世界! ! !

1.原创

1999 年,中途城咖啡馆,早晨比特币一开始是免费赠送吗,中本聪出现在窗边。

中本聪喜欢这个位置,不是因为窗外的风景,而是因为电源插座。

中本聪是一名程序员。他最近休假,每天都写代码。对他来说,完美的一天就是这样。

重新创造比特币1:从一个简单的web交易系统开始_第2张图片

在咖啡馆编码

在网络世界之初,很多东西还没有名字,一提到就需要用手指指点。 .

中本聪喝着咖啡发呆,老板鲍勃问道:“嗨,中本聪!为什么你这几天不修改代码?你在想什么?”。

中本聪回复:“最近想做点新东西,之前编的东西太正常了,最近刚放了长假,时间比较充裕,想做点大事,做点什么大的!” .

这时候,老客户爱丽丝插嘴道:“有点大!哼!我想说最大的问题是我们美联储乱发钱。这些自私的家伙让我的财富每年都被动损失比特币一开始是免费赠送吗,这些强盗,小偷。这是件大事!”

中本聪说:“你不好,你有点无政府主义!但它启发了我做一个全球电子现金系统。,并且永远不会发行!”

“货币来自价值:无论是贝壳,还是黄金,还是历史上曾经充当货币的一切,首先它具有使用价值,然后经过很长一段时间共识具有货币的属性。所以,这个系统也必须具有价值,即它可以被人们用作不可篡改的全球账本。”当然,这是中本聪很久以后才知道的。

“如果你成功了,让我们先到我们的咖啡店试试吧!”老板鲍勃打来电话!

“来吧男孩!”爱丽丝握了握拳头。

一股热浪扑面而来。中本聪拿出笔记本开始写画。比特币的设计工作开始了!

2.我们先设计一个最简单的交易系统

中本聪开始思考,先设计最简单的版本,让老板 Bob 先用,他用我改进。这个主意不错!

由于是电子现金,所以系统名称是比特币。

第一个版本做成最简单的单服务器web系统,买一台普通的台式电脑(服务器)放在网吧,连接互联网,然后买一个域名(注:在末尾故事:再造比特币20:分叉的重组和分裂,我们会看到它被坏人偷走了,中本聪不得不使用新域名),咖啡店的顾客可以方便地使用它通过浏览器! (见下图)

重新创造比特币1:从一个简单的web交易系统开始_第3张图片

比特币的整体设计

虽然我想创建一个电子现金系统,但它本质上是一个交易系统,交易是市场的核心,现金只是交易中的一个小数字。

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

程序部分的核心功能是处理事务。

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

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

重新创造比特币1:从一个简单的web交易系统开始_第4张图片

比特币整体设计图

数据部分是如何设计的?

至少需要两个文件:

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

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

重新创造比特币1:从一个简单的web交易系统开始_第5张图片

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

程序需要它有什么功能?

如果按照传统系统,需要先注册用户,但是如果用户是咖啡店的老顾客,可以暂时省略注册功能。如果有人想使用比特币,我会手动创建它们。账号,只需在user.txt文件中添加用户信息即可。

我真的希望咖啡店能在 Bob 回去之前启动并运行,是的。

用户登录验证功能一定要做好,不然卡罗尔冒充爱丽丝自己掏钱就不好了。

关于处理事务,只要有事务写入和事务查询就可以了。 (见下图)

重新创造比特币1:从一个简单的web交易系统开始_第6张图片

程序部分的设计

这里有个小麻烦,每次Alice付钱给Bob,程序都要先去user.txt找到Alice的余额,看余额是否充足。如果余额充足,除了将交易信息写入transaction.txt,修改user.txt中Alice和Bob的余额。行!平衡很重要,平衡是一个人的财富积累,要小心对待。

一个人在这个世界上的财富完全取决于这个小数字,哦!可怜的小动物!

中本聪花了一个下午设计比特币的第一个版本,伸了个懒腰,转头对着老板鲍勃说,“我已经设计完了,明天开始编码,争取让咖啡店试试这个一周!”

“这么快,你真是个天才!快来试试我的新咖啡吧,它是免费的!”

“这只是最简单的版本,离我最终想要的还很远。”中本聪接过咖啡喝了一口。

“这味道……嗯!……好感动!”

3.后记

编写本系列的方法之一是让中本聪根据一个原因创建解决方案。

这个原因可能是一个错误或一个抽象的想法。

反正也不可能无缘无故直接给出解决方案。

就算是我编出来的定位,也是定位。