主页 > imtoken钱包下载安卓最新版本 > 一个故事告诉你比特币的原理和运行机制(二)

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

对于挖矿团队来说,在发出账纸的时候,如果之后收到其他组发出的账纸,并且“最后一页账纸的编号”是自己发出的账纸,那么就代表他们自己发出的账纸这项工作的成功得到了其他团体的认可,因为已经有团体继续处理他们的账本文件。 至此,可以大致说得到了50个比特币。

另外,当任何一个组生成新的有效帐单或确认其他组的帐单时,会在公告板上写上本组最近批准的交易,收款人只需发现相关交易已被批准即可每一组,基本上都可以认为钱已经到他的账户了,以后支付的时候可以把钱的来源指向这个交易。

以上就是整个比特币支付系统。 我们来分析一下为什么这个系统可以继续运行,以及这个系统可能面临的风险。

工作机制分析

虽然上面解释了比特币的基本运行规则,但村民们仍然有很多疑问。 于是中本聪专门召开了问答会,回答大家常见的问题。 下面总结一下村民最关心的问题。

同时收到两张合法账簿页怎么办?

注意上面的运行机制,每个挖矿组是并行工作的,所以一个组收到两个不同的账本页是完全可能的,都是以当前组主账本的最后一页为准,内容完全合法,我该怎么办?

对于这个问题,中本聪表示,小组不应该以线性的方式来组织书籍,而应该以树的形式来组织书籍。 任何时候都以当前最长的分支作为主书,但保留其他分支。 比如一个组同时收到两个账号页面A和B,记账后都是合法的。 这时候群应该把这两个页面以fork的形式组织起来,如下图:

0yjrstjyjjm9

黑色代表当前的书骨干。 此时可以随机选择一个页面作为当前主分支,例如选择A:

1egwshj0

这时候如果有基于A的新书页,那么trunk会继续:

1sdvsdvs1

如果这个主干一直这样下去,那就意味着大家基本上都是以A为主干,B就会被遗忘。 但也有可能 B 突然变长了:

dsvsdbsdb12

那么我们需要将B分支作为当前主干,并基于该分支进行后续工作。

1dhbfxgjnfgj3

从局部来看,虽然某个时刻各个组的会计骨干可能不一致,但大方向是一致的,那些因异步而偶尔产生的小分支会很快被历史淹没。

如果挖矿组有人造假账本怎么办

对于这个问题,中本聪表示,只要矿工组织中的大部分人都是诚实的,系统就会可靠,他会从几个方面来回答这个问题。

首先,基于保密印章机制,任何人都不能伪造他人身份进行支付,因为代码生成器在打印代码时会检查所有交易单的保密印章,如果印章与付款人不一致,他们将拒绝打印。

而且,诚实的矿工不会承认非法交易(例如某笔交易的付款人余额不足)。

所以只有一种可能的攻击行为,即收款人确认收款后,从另一家分行创建另一笔交易订单,取消之前的支付,将同样的钱再次支付给另一个人(所谓的双花问题). 下面也用一个例子来说明这个问题。

首先假设有一个拥有10个比特币的攻击者,他打算同时将钱支付给两个受害者A和B,并且都被承认。

第一步,攻击者准备向受害者A购买10个比特币的黄金,他给受害者A签了交易单,将10个比特币转给了受害者A。

1trjrjyj4

第二步,在最新的账本页面确认交易,并由各挖矿团队公布。 受害者A看到公告,确认比特币已经到账,并给了攻击者相当于10个比特币的黄金。

rhrtjytjyt15

第三步,攻击者找到账本,从包含刚才交易的账本页的上一页做一个分支,生成比上一个分支更多的账单页。 由于刚才攻击者创建的分支变成了主分支,而包含受害者A获得的钱的分支变成了副分支,所以矿工组织不再认可刚才的转账,受害者获得的10个比特币A 取消。 向上。

1gfnfgmnmh6

第四步,攻击者可以再次签署交易,并向受害者B支付等量的钱,受害者B在确认钱到账后向攻击者支付等值的黄金。

1dsbgfhbn7

至此,攻击者两次花费10个比特币从两名受害者手中购买了等量的黄金。 攻击者也可以做同样的事情,取消与受害者 B 的转账,并将同样的钱支付给其他人。 . . . . .

对于这种攻击,中本聪给出的解决方案是建议收款人在发布公告时不要立即确认交易完成,而是应该等待一段时间,等待每个矿工团队发布6多确认账本,之前的账本在确认钱到账之前还没有注销。

中本聪解释说,设置这些变态的编号规则就是为了抵御这种情况。 综上所述,想要生成有效的账本页并不是那么简单,需要大量人力反复尝试不同的幸运数字,过程完全靠运气。 如果一个账本页面包含你收到钱的确认信息,并且它持续了 6 个以上,攻击者很难在落后 6 页的情况下从另一个分支赶上当前的 master 分支,除非攻击者有一个大量人力,超过所有其他诚实矿工的总和。

而且,如果攻击者有这么多人手,与其花那么大的力气来进行这种攻击,还不如好好挖矿,获取更多的收益。 这样可以防止从动机上形成攻击。

比特币会继续涨,会不会引起严重的通货膨胀

中本聪说,我也想到了这个。 前面忘了说了,我给矿工组织的操作规程手册上会说明,在我们的协议开始的时候,每产生一页账本,本组奖励50个比特币。 以后账本每增加21000页,奖励减半。 例如,当达到 210,000 页后,每生成一个页面将奖励 25 个比特币。 42万页后,每生成一个页面奖励12.5个比特币,以此类推。 当账本达到693万页时,新生成的账本将没有奖励。 此时比特币的总量约为21,000,000,这是比特币的总量,所以不会无限增加。

没有奖励之后就没有人做矿工了,也就没有人帮忙确认交易了

届时,矿工的收入将从挖矿收入变为手续费。 比如你转账的时候,你可以指定其中的1%作为手续费支付给生成账户页面的团队,每个团队会选择手续费高的交易单进行优先确认。

如果矿工越来越多,比特币的生成速度会不会更快?

惯于。 中本聪解释说,虽然可以随意加入和退出矿工组织,导致矿工数量发生变化,但每个矿工也会得到一个代码生成器,但我在代码生成器中加入了控制机制,并且code generator currently working 越多,每台机器的效率越低,保证新书页的生成率不变。

虽然每个人的代号都是匿名的,但是如果有人的代号泄露了,账本公开了,那他的账不就全都查出来了吗?

这是真的。 比如你想和某人交易,你必须得到他的代码才能填写交易表格。 因为收款人一栏需要填写那个人的代号。 不过,中本聪表示,可以提供无限的保密印章,建议每笔交易使用不同的保密印章,这样就无法通过查账簿查到同一个人的所有账户。

问答结束。

阐明

本文用一个流行的比喻来解释比特币的运行机制。 有几点需要说明:

为了便于理解,我做了很多简化,所以一些机制细节可能和实际的比特币不完全一样。 但总体思路和关键原则是相同的。 由于计算机世界中的很多东西(比如公钥系统、网络传输)在现实世界中并没有特别好的对等物,所以故事中难免会出现一些生硬不合理的细节。 本文描述了比特币网络本身的技术原理和运行机制。 当比特币交易在 Mtgox 等交易市场进行时,市场充当中间代理,并不遵循上述机制。

周末花时间看了一些比特币原理相关的资料。 虽然不敢说每个细节都看懂了,但是总体思路和关键部分的主要原理还是比较清楚的。 写一篇文章分享给大家。 本文的定位会比较科普,尽量用类比的方式来解释比特币的基本原理。 本文将不涉及算法和协议中更详细的部分。 以后打算再写一篇程序员视角的比特币原理的文章,从技术人员的角度分析比特币系统中的关键数据结构和算法。 以及关于协议的一些解释。

在本文中,我将给出一个名为“比特村”的虚拟村庄。 整篇文章会一步步告诉你比特币的动机,它解决了什么问题,以及一些关键部件的目标和设计方案。 .

问题陈述

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

易货比特村

据说在这个世界上,有一个叫做比特村的小村子,村子里住着几百户人家。 村子几乎与世隔绝,过着自给自足的生活。 因为没有大规模的贸易,比特村的村民一直过着以物易物的生活,也就是说村民没有使用统一的货币。 彼此之间的交易,基本上就是老张家给老李家换一袋面粉。 为了一只羊,王阿姨用一筐野果换了刘阿姨的两尺布。 村民们一直过着这样简朴的生活。

0rgerherwrewt1

实物货币

终于有一天,村民们觉得一直这样以物易物太不方便了,于是全村人开会商量如何解决这个问题。 有人建议,对于黄金等易分稀有的物品,作为一般等价物,应将其他物品与黄金的对应关系编成表格,如1克黄金对应一只羊,一克黄金对应一袋面粉等等,这时候,老张再也不用气喘吁吁地背着一袋面粉去老李家换羊了。 他只要从他家找出一克黄金,去老李家带回一只羊就可以了。 一克黄金,只要愿意卖面粉的人,就可以换一袋面粉,当然也可以换任何等值于一克黄金的物品。

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

gnrtnhrtrn02

符号货币

好景不长,过了一段时间,实物货币的劣势也显现出来了。 因为比特村附近的金矿并不多,开采和冶炼黄金实在是太费时费力了。 随着使用,黄金总是会因磨损、丢失或故意囤积而磨损。 全村人又坐在一起,开始商议对策。 这时候有人说,其实不用黄金,随便找张纸,写上“一克黄金”,只要全村人都同意这张纸等于一克就可以了黄金,问题就迎刃而解了。 其他人表示赞同,但与此同时,又出现了一个新问题:真金需要开采和冶炼。 金矿是有限的,开采和冶炼也是需要成本的,所以没有人能够在短时间内凭空炼出大量的黄金。 写作是不同的。 现在只要纸笔够多,想写多少就写多少,到时候就变成了家里谁纸多的大战,说不定10000张纸可以换一只羊(其实,这会造成经济问题(学术通货膨胀)。

大家也在思考。 但这时有人想出了一个办法:这张纸谁写谁无效,我们只认村里德高望重的老村长的字迹,老村长的字迹大家都知道。 老村长写了一些纸,同时根据每家的黄金存量,给大家发了等量的纸。 比如老张家有200克黄金,老村长送老张200张纸,上面写着“一克黄金”。 同时,他们还拿走了老张家里的黄金作为抵押。 就这样,老村长把村里所有的黄金都带回了自己家,并根据每家上交的黄金数量,分发了等量的写在上面的纸。 这时候,村民们就可以把这些纸当作黄金来交易了,老村长的话大家都能认出来,其他人就无法伪造了。 另外,如果有人的纸磨损得太厉害,也可以从老村长那里拿来换取等值的新纸。 另外,老村长承诺,谁要换真金,只要把纸拿回来,老村长就会还给他们。 将等值的黄金还给该男子。 因为老村长写的纸上的金子和家里实际放的金子数量是一样的,所以只要严格按照废纸新纸多写新的原则,每一个有效的纸片随时可以换取相应的真金。

此时,比特村进入了符号货币(纸币)时代。 老村长承担了政府和银行的职责。

0gnmmkytk3

中央系统虚拟货币

几年后,老村长每天都要核对大量的旧钞票,写新钞票,认真记账各种账目。 一来二去,老村长劳累过度,不幸驾车西行。

比特村再次召开全体会议,商讨对策。 这时,老村长的儿子二狗子自告奋勇接过父亲的笔,承担起发行货币的重任。 年轻的村长二狗子很聪明。 他工作了几天,发现其实并不需要写那么多论文。 完全可以这样:村民们把纸币全部上交销毁,但是二狗子会记录每户上交的纸币数量。 如果以后要付钱,比如老张要跟老李换一克黄金换一只羊,他就把二狗子一起叫来,说明要转老张手下的1克黄金以老李的名字命名。 ,二狗子拿出账本,看看老张名下有没有一克黄金,有的话,老张名下减去一克,老李名下加一克,付款就完成了。 老李在电话里听到二狗子确认转账已经完成,这才放心,老张一定会把羊带走的。

此时,比特村已经进入了中央系统虚拟货币时代。 每个村民都不需要实物支付,支付过程变成了二狗子维护的账本上的数字变更。

0yjghmj,4

分布式虚拟货币

新上任的二狗子很聪明,但有时聪明也被自己的聪明误会了。 一天比特币的释放机制,二狗子盯着账本,想着村里每户有多少钱我说了算,我岂不是……。 于是他就一时冲动,私自将老张账户上的十克黄金转到了自己的名下。

本以为完美,没想到老张也有记账的习惯。 有一天他正要付钱,二狗子却告诉他账户没钱了。 老张查了一下自己的账本,名下还剩十克,就拿着账本去找二狗子理论。 查了一下,发现是未经老张同意的转账。

发生了一些事! 比特村炸了。 二狗子被弹劾在所难免,但通过这件事,大家发现了中心化账本掌握在一个人手中的弊端:

就在人们一头雾水之际,村里一位名叫中本聪的宅男科学家走上台告诉大家,他设计了一种不依赖任何中央处理器的虚拟货币系统比特币,可以解决上述问题。 然后他慢慢地描述了他的计划。

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

基础设施建设账簿公开机制

Satoshi Nakamoto首先说明现有的账本应该修改如下:

账本不再记录每个村民的余额,只记录每一笔交易。 即记录每笔交易的付款人、收款人和付款金额。 只要确定了账本的初始状态,并且每笔交易记录都是可靠的、及时的,就可以计算出每个人目前持有多少钱。 账簿由私有变为公开。 只要有村民需要,都可以获得当前完整的账本。 账簿记录了从创建账簿到现在的所有交易记录。

此话一出比特币的释放机制,下面立刻炸锅了。 第一个无所谓,但是第二个简直不能接受,因为账本上记录着村民的所有交易,所以大家的隐私并没有完全暴露。

中本聪不紧不慢地拿出一对奇怪的东西。

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

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

他炫耀着手中的神奇之物,说这两样东西分别叫做保密印章和印章扫描仪。 以后,他还要给村里的每户人家发保密印章和印章扫描仪。 两者的工作方式如下:

有了这两个神奇的东西,每个人都可以在不暴露真实身份的情况下进行交易,而封印中隐藏的那一串字符,就是这个家族的代号。 下面将详细介绍如何巧妙地使用机密印章和印章扫描仪进行交易。

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

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

很快,大约五分之一的村民加入了比特币矿工组织,他们分成了七个小组。

建立初始账本(创世块)

接下来,中本聪宣布,首先根据二狗子手中的账本,按照账本上记载的余额,将抵押的黄金全部归还给每个村民,然后彻底销毁账本。

接着,中本聪拿出一本新的账本,在账本的第一页记录了一些交易记录。 尤其是,这些记录的付款人一栏都是“系统”,收款人是每个印章对应的隐藏字符,代表初始时刻。 系统默认给每户分配一定数量的比特币,但是​​数量很少,只有几家,甚至有些倒霉的村户也没有拿到比特币。

随后中本聪表示,由于目前市场上的比特币很少,大家可以回到黄金作为货币的时代。 由于我不是村长,我无权强制所有人承认比特币。 每个人都可以自己决定。 不接受比特币。 但是随着比特币的流通和矿工的活跃,比特币会逐渐增加。

支付与交易

铺垫了那么多,终于进入正题了。 先说说在这样的系统下如何完成支付。 以老张付给老李10个比特币为例。

付款人签署交易单

为了支付10个比特币,老张首先需要向老李要标识串,比如“ABCDEFG”,而老张也有标识串比如“HIJKLMN”,然后老张写了一个列表,内容就是“HILKLMN支付了10个比特币给ABCDEFG”,然后用自己的保密印章换了一个印章,把这份名单交给了老李。 另外,为了便于追溯资金来源,还需要在清单中注明资金来源记录在哪一页。 比如这个列表中,老张的10个比特币来自系统在建立账本时的赠送,记录在账本的第一页。

0tjrtsjdmm5

收款人确认单据签署人

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

收款人确认付款人余额

这个系统还是很有问题的。 通过保密印章,收款人虽然可以确认付款人确实在表格上签字,但无法确认付款人是否有足够的余额支付。 在之前的中央虚拟货币系统中,二狗子负责检查付款人的余额,并通知收款人交易是否有效。 现在二狗子开通了,谁来负责记账,确认每笔交易的有效性?

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

矿工的工作

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

矿工工具

俗话说,工欲善其事,必先利其器。 比特币矿工虽然不需要铁棍、铲子、探照灯等工具,但也有一些必备的东西。

初始分类帐。 每组先复印一份初始账簿。 初始账本只有一页,记录的是系统给出的第一张空账本纸。 每组有若干账本纸,每页只有账本结构,没有填写内容,具体内容的书写规则后面会讲到。 下面是一张空的账本,后面会讲到各个字段的含义。