主页 > token.im > 一个故事告诉你比特币的原理和运行机制 作者张扬周末抽空阅读了一些比特币原理

一个故事告诉你比特币的原理和运行机制 作者张扬周末抽空阅读了一些比特币原理

token.im 2024-01-18 05:11:25

一个故事告诉你比特币的原理和运行机制

作者张扬

周末抽空看了一些比特币原理相关的资料,虽然不敢说每一个细节都完全清楚,但是总体思路和关键部分的主要原理还是比较清楚的写一篇文章与大家分享。本文的定位会比较通俗一点,并尝试用一个类比来解释比特币的基本原理。本文不会涵盖算法和合约的更详细部分。我打算从程序员的角度写另一个比特币原理。从技术人员的角度来看,比特币系统中会出现更多关键的数据结构。解释了算法和合约。

在本文中,我将给出一个名为“比特村”的虚拟村庄。整篇文章会告诉你比特币的动机,它解决了哪些问题,以及在讲故事的方式上存在的一些问题。关键组件的目标和设计选项。

提问

我们从比特币形成背后的动机开始。

易货比特村

在这个世界上,有一个叫比特村的小村庄。村里有数百户人家。这个村庄几乎与世界其他地方隔绝,过着自给自足的生活。由于没有大规模的贸易,比特村的居民仍然过着易货易货的生活,也就是说,居民不使用统一的货币。为了一只羊,王太太用一篮野菜换了刘太太的两尺布。村民们的生活一直都是这么内向的。

实物货币

最后,三天来,村民们都觉得还是这样交易不方便比特币交易原理分析,于是全村人开会讨论如何解决这个问题。有人提出,为了便于划分和稀有的东西,比如黄金,按照通常的等价物,其他物品与黄金的对应关系应该编成一个表格,比如一克黄金对应一只羊,一只一克黄金对应一袋大米等,此时老张再也不用提着一袋大米气喘吁吁地去老李家换羊了。只要从家里找到一克黄金,就可以去老李家取回一只羊,而老李拿着这1克黄金,可以从任何愿意卖面的人那里换取一袋米,当然还有任何价值一克黄金的东西。

此时,比特村已经进入了实物货币时代。

象征货币

好景不长,久而久之,实物货币的弊端也出现了。由于比特村附近的铜矿不多,开采和炼金既费时又费力。随着使用,黄金会因生锈、损失或故意囤积而不断耗尽。全村人又坐在一起,开始接触对策。这时候,有人说,其实你不必真的用黄金。随便找一张纸写下“一克黄金”。只要全村人都同意这张纸等于一克黄金,问题就迎刃而解了。 别人都同意了,但同时又出现了新的问题:真金需要开采炼铁,金矿有限,开采炼钢也需要成本,谁也不能突然大量生产短时间内的金子,能写就不同了,只要我有足够的纸和足够的笔,我想写多少就写多少,那会让人纸太多,说不定一万张纸可以代替一只羊(实际上是这样的)。经济通胀)。

每个人也都在考虑。但此时,又有人提出了一个解决方案:这篇论文对任何人都无效。我们只认得是村里尊敬的老村长写的,老村长的话大家都知道。老村长写了一些纸,同时根据每家的黄金存量给你发同样数量的纸。比如老朱家有200克黄金,老村长就送老张200张纸,上面写着“一克黄金”。纸,同时以朱老家的黄金作抵押。就这样,老村长把村里所有的金子都带回了家中,并按照每个家庭上交的金子数量,分发了等量的书写纸。这个时候,居民们可以把这种纸当金子来交易,老村长的话你们都认得出来,没有人能伪造。另外,如果有人的纸被严重腐蚀,还可以找老村长换换新的等值纸。此外,老村长还承诺,如果有人想换取真金,只要把纸拿回来,老村长就会把等值的黄金还给那个人。因为老村长写的金子和家里实际放的金子是一样的,所以只要严格遵守销毁多少纸,写多少新纸的原则,每张有效纸总是可以换成相应的真金。

比特币交易流程_比特币交易的风险分析_比特币交易原理分析

此时,比特村进入了符号货币(纸币)时代。老村长兼任政府和建行。

中央系统的虚拟货币

几年后,老村长每天晚上都要验证大量的旧钞票。 ,写新钞,仔细记录各种账目。来回奔波后,老村长因为辛劳和不幸,来到了鹤的西边。

比特村又召开了一次全体会议,讨论如何做。这时,老村长的夫人二狗子主动接过母亲的笔,承担了发行货币的责任。这位年轻的市长二狗子很聪明。做了几天,他发现自己真的不需要写那么多论文了。这是完全可以的:村民把所有的钱都交出来销毁,但是二狗子会记录每户人家上交的钞票数量。如果以后要结账,比如老张想用一克黄金换老李换一只羊,他们会一起打电话给二狗子解释,老张名下的一克黄金要合并到老李的名字。 ,二狗子拿出账本,看看老张名下有没有一克黄金。如果有,减去老张名下的1克,加上老李名下的1克,支付完成。这时候,老李看到二狗子在电话里确认汇款已经完成,他就放心老张会带羊走了。

此时,比特村已进入中心系统虚拟货币时代。每个居民不需要实物支付,支付过程会导致二狗子维护的账本上的数字发生变化。

分布式虚拟货币

这个新的二狗很聪明,但有时这个人很聪明但会犯聪明的错误。二哥子盯着这本账簿看了三天,心想全村家家户户的钱都是我说的,我不是……于是他脑子一热,私下借了十克黄金从老张的账户到他自己的名字。

本以为天衣无缝,没想到老张也有记账的习惯。三天准备收钱的时候,二狗子告诉他,账户里没有钱。老张查了账本,发现自己还有十克,于是拿着账本去找二狗子理论。本次核查发现汇款未经老张同意。

发生了什么!比特村爆炸了。二狗子的弹劾在所难免,但通过这件事,大家才发现账簿集中在一个人身上的恶果:

本系统完全依赖账簿持有人的个人信用。如果人们不遵守规则,随意篡改账本,那么整个货币体系就会崩溃。如果这个人的房子着火或者书被偷了,也会给整个系统带来毁灭性的打击。

就在人们不知所措的时候,村里一位名叫中本聪的宅男科学家上台告诉大家,他已经设计了一个名为比特币的虚拟货币系统,它不依赖任何中央处理器,可以解决上述问题问题。然后他慢慢描述了他的计划。

让我们看看中本聪的朋友是如何设计这个系统的。

基础设施建设凭证披露机制

比特币交易流程_比特币交易的风险分析_比特币交易原理分析

中本聪首先解释说,现有的代金券应该进行如下改造:

每个居民将不再记录在账簿余额中,而只记录每一笔交易。即记录每笔交易的付款人、收款人和付款金额。只要确定凭证的初始状态,并可靠、及时地记录每一笔交易,就可以推断出每个人当前持有的货币金额。账簿已从私人更改为公开。只要有居民需要,就可以获得当前完整的代金券。账簿记录了从凭证创建到当前的所有交易记录。

这句话一出,炸锅就在下面。第一个无所谓,第二个根本就不行,因为凭证还记录了所有居民的交易,所以你的隐私没有完全暴露。

中本聪没有慌张,拿出了一对奇怪的东西。

身份和签名机制(公钥加密系统)

中本聪说,别慌。在他的机制下,没有人使用真实身份进行交易,而是使用唯一代码进行交易。

他把手中的魔法东西拿出来,说这两个东西叫做保密印章和印章扫描仪。之后,他会给村里的每家每户发放保密印章和印章扫描仪。两者的作用如下:

秘密印章可以盖在纸上。 通过观察也未能产生相应的印章。邮票扫描仪可以扫描已经盖好的邮票,读取隐含信息,并在液晶屏上显示一串字符。

有了这两个神奇的东西,每个人都可以在不暴露真实身份的情况下进行交易,而封印中包含的一串字符就是这个家族的代号。下面将简要介绍如何使用机密邮票和邮票扫描仪进行智能交易。

建立虚拟矿工组织(挖矿组)

接下来,中本聪从全村招募虚拟矿工。招聘要求如下:

矿工以群体为单位,一个群体可以是一个家庭,也可以将几个家庭合并为一个群体,成为一个矿工,而不影响货币的正常使用。矿工每晚都会花费一定的时间从事比特币“挖矿”活动,但这与开采铁矿石不同。 ,虚拟矿工不需要带着工具去野外,在家就可以完成工作。矿工有一定的可能获得报酬。他们在采矿活动中投入的精力越多,获得报酬的可能性就越大。矿工可以随时退出。可以随时添加新矿工

很快,大约五分之一的居民加入了比特币矿工组织,分为 7 个组。

建立初始证书(创世区块)

接下来,中本聪宣布,根据二狗子手中的凭证,将抵押的黄金全部按照凭证上记载的余额返还给每一位居民,然后将这张凭证彻底销毁。

比特币交易流程_比特币交易原理分析_比特币交易的风险分析

然后,中本聪拿出一张新的凭证,在凭证的第一页记录了一些交易记录。特别是这些记录的payer栏都是“系统”,而The payee是每张邮票对应的蕴涵字符,代表初始时刻。系统默认为每户家庭分配一定数量的比特币,但数量很少,只有少数,甚至一些不幸的村户都没有拿到比特币。货币。

中本聪接着说,由于市场上的比特币很少,大家可以回到以黄金为货币的时代。由于我不是市长,我无权强迫你承认比特币。您可以决定是否接受比特币。但是随着比特币的流动和矿工的活跃,比特币会逐渐增多。

支付与交易

做了这么多铺垫,终于说到重点了。我们来谈谈如何在这样的系统下完成支付。以老张付给老李 10 个比特币为例。

付款人签署交易表格

为了支付10个比特币,老张首先需要向老李索要标识字符串,比如“ABCDEFG”,而老张也有一个标记的字符串比如“HIJKLMN”,然后老张写一份内容为“HILKLMN 向 ABCDEFG 支付 10 个比特币”的清单,然后用自己的密印更改一章,将这份清单交给老李。此外,为了方便追查资金来源,还需要在清单中标明资金来源记录在哪一页。比如在这个列表中,老张的 10 个比特币是在构建通证时来自系统的比特币交易原理分析,并记录在通证中。第一页。

收款人确认收款人签字

老李收到这份名单后,需要确认这份名单确实是来自“HIJKLMN”这个人(也就是老张)的签名,这个并不难。因为名单上肯定有保密印章,所以老李拿出印章扫描仪扫描了印章。如果液晶屏上显示的字符与付款人的字符一致(此处为“HIJKLMN”),则可以确认该列表确实是付款人签名。这是因为根据秘印机制,任何人都无法伪造秘印。任何人扫描印章都可以确认付款人和签名人是否相同。

收款人确认付款人的余额

这个系统还是太有问题了。通过保密印章,收款人可以确认付款人已在表格上签字,但无法自行确认付款人是否有足够的余额支付。在之前的中央虚拟货币系统中,二狗子负责检测付款人的余额,并通知收款人交易是否有效。现在二狗子开通了,单笔交易的有效性由谁负责核算和确认?

正如我之前所说,中本聪设计的系统是分布式货币系统,不依赖任何中心人物,所以不会有一个或几个人负责这件事,最终承担的工作是前面提到的矿工组织。老张、老李和村里其他任何使用比特币进行交易的居民都依赖矿工组织的工作来完成交易。

矿工的工作

矿工的工作是整个系统的核心,也是最复杂的地方。下面逐步介绍矿工的工作内容和目的。

矿工工具

比特币交易的风险分析_比特币交易流程_比特币交易原理分析

俗话说,工欲善其事,必先利其器。比特币矿工实际上并不需要熨斗、铲子和头灯等工具,但他们确实有一些必需品。

初始凭据。每组首先自己复制一张初始凭证。初始凭证只有一页,记录第一次附加系统的时间

空的凭证纸。每组有几张凭证,每页只有凭证结构,不填写内容。具体内容的编写规则前面已经介绍过了。下面是一张空的凭证纸的样子。前面会提到每个数组的含义

代码生成器(哈希函数)。中本聪向每组矿工分发了一些代码生成器。这件事太神奇了。将一张填有凭证页面的凭证纸装入机器,机器会在凭证纸上显示“账单号”。手动复制一列由“0”和“1”组成的一系列数字,共256个数字。最神奇的是数字生成器有以下功能:

生成的数字只与凭证纸上填写的内容有关,与人、字体、填写时间等激励无关。相同的凭证纸相同的内容生成的号码总是一样的,但如果内容只改变一个字符,号码将完全无法识别。代码生成器在复印和编码时还需要输入凭证纸上填写的所有交易单,机器会扫描交易单并填写交易单如果发现保密印章与付款人不一致,则将拒绝复制代码,并放入凭证纸的副本。机器将判断该号码是否为有效的机器副本,以及号码和内容是否有效。始终如一地,这个数字使得伪造交易单收件箱变得困难。每个矿工组需要在旁边挂一个袋子,用来收集交易单。布告栏。每个矿工组还需要一个公告板来发布一些信息。

有了之前的工具,矿工组织就可以恢复工作了!

收集交易单

中本聪规定,每笔交易的发起人不仅要向收款人提供交易单据,还要同时复制多张相同的交易单据。发送到每个矿工组的收件箱。

矿工团队的人定期去他们的收件箱收集交易清单并将其删除。

填写凭证

此时,团队拿出一张空的凭证纸,将本次交易填入“交易清单”栏,找到当前凭证的最后一页,将最后一页的页码抄入“最后账单号”栏”。注意还有一个“幸运数字”,你可以随意填写一个数字,比如12345。然后,将这样的凭证纸装入数字生成器,打印数字,一个凭证就完成了。

如果你认为矿工的工作就这么简单,那你就错了。中本聪有个变态规则:只有数字的前10位全为0时,才会使用这一页的凭证纸。有效。

根据前面对号生成器的描述,要改号,只能更改凭证的内容,不能随意更改“交易清单”和“最后一个凭证号”,所以只能更改幸运数字。因此,为了生成有效的凭证纸,组内矿工不断地复制凭证纸,但每张纸的幸运数字不同,然后将凭证纸反复加载到编码器中。如果生成的数字不符合规定,则这块纸即使被丢弃,重复此过程,直到生成有效的数字串为止。

我们知道,如果每个数字的数字都是随机的,那么平均1000多张不同幸运数字的纸就能得到一个有效数字。

比特币交易流程_比特币交易的风险分析_比特币交易原理分析

这很奇怪,为什么这些矿工要拼命做这种看似毫无意义的事情?记得我之前说过矿工是有报酬的,这就是矿工的动力。中本聪规定,每张凭证纸的交易清单中的第一笔交易是“系统向该组支付 50 个比特币”。也就是说,如果你生成了一个有意义的凭证,并且被所有矿组接受,就意味着交易被接受,你的矿组得到50个比特币。

这就是矿工被称为矿工的原因,也是为什么之前说比特币的数量会随着交易和矿工活动而不断增加的原因。比如下面是一个挖矿过程,该群的公众比特币账号是“UVWXYZ”。

当幸运数字达到“533”时,系统生成有效凭证页面。

确认证书

当一个挖矿团队有幸生成有意义的证书时,为了获得奖励,它必须立即要求其他团队确认他们的工作。如前所述,该村目前有7个采矿组,因此该组必须抄录6份有效凭证,并将其发送给其他6个组进行确认。

中本聪规定,当一个群体收到另一个群体的代金券时,必须立即停止手头的挖矿工作以确认该代金券。

需要确认三个信息:

账簿号码有效,有效凭证上一页有效。交易清单有效

先看第一个,这个确认比较容易。只要将发送的凭证纸加载到代码生成器中进行验证,如果验证通过,则该号码有效。

第二部分需要将凭证页面上的“上一页凭证纸号”与本组当前保存的有效凭证的最后一页号进行比较。如果相同,请确认。继续使用现有文档,直到找到编号页。如果没有找到指定的“以前的凭证编号”页面,团队将丢弃该页面。未确认。

注意,前面的机制保证了如果每组手中的凭证都是一样的,那么它们都可以按照相同的顺序绑定到同一张凭证中。因为上一张单的编号总是依赖于前一张的编号,所以代码生成器的机制保证了所有有效凭证单的相对顺序对于每一组都是相同的(可能有分支,但没有环,后面会详细讨论)。

最后,如何确认交易清单有效,就是确认当前单笔交易的付款人有足够的余额来付款。由于交易信息包括钱是如何来的,它还包括记录源交易的帐单号。例如,HIJKLMN 想要给 ABCDEFG 10 个比特币,并表示这 10 个比特币来自之前由 OPQRST 支付给 HIJKLMN 的交易。确认时,首先确认之前的交易是否存在,同时检查HIJKLMN在此之前是否没有。将这 10 个比特币支付给其他人。这一切都确认后,交易的有效性就被确认了。

第一个是系统奖励给产生本页凭证的团队的50。你们都默认确认此交易。只要通过上述方式溯源,就可以确认目前是否真的有10个HIJKLMN。比特币支付给 ABCDEFG。

如果以上所有验证都完成并全部通过,则群会认可上述凭证的有效性,然后将此凭证转入群主账簿,丢弃当前正在进行的工作,进行后续挖矿将基于此更新的主分类帐。