主页 > imtoken转账手续费 > 比特币的基本原理和运行机制

比特币的基本原理和运行机制

imtoken转账手续费 2023-10-29 05:10:13

这篇文章的定位会比较大众化。 尝试类比比特币的基本原理。 本文不会深入算法和协议的细节。 在这篇文章中,我将给出一个名为“比特村”的虚拟村庄。 整篇文章会通过讲故事的方式一步步告诉你比特币的动机,它解决了什么问题,以及一些关键组件的目标和设计方案。

提出的问题

先说比特币的动机。

用易货咬住村庄

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

image.png

实物货币

终于有一天,村民们觉得一直以物易物太不方便了,于是全体村民开会商讨如何解决这个问题。 建议用黄金等稀有物品作为普遍等价物,将其他物品与黄金的对应关系编成表格,如一克黄金对应一只羊,一克黄金对应一个袋子面粉等。 这时候,老张再也不用气喘吁吁地拎着一袋面粉去老李家换羊了。 他只要从家里拿出一克黄金,就可以去老李家带回一只羊,老李灿可以用这克黄金换取谁愿意卖面粉。

此时的比特村,已经进入了真金白银的时代。

image.png

代币

它并没有持续多久。 过了一段时间,实物货币的弊端也显现出来了。 因为比特村附近的金矿并不多,采金和炼金太过费时费力。 然而,随着使用,黄金总会磨损、丢失或被故意囤积。 全村人又坐在一起,开始商议对策。 这时候,有人说其实没必要用黄金。 随便找一张纸,写上“一克黄金”。 只要全村人都同意这张纸等于一克黄金,问题就迎刃而解了。 有人赞同,但同时又出现了新的问题:真金需要开采和冶炼,而金矿有限,开采和冶炼也需要成本。 没有人能在短时间内凭空制造出大量的黄金,同样不可能写作。 只要纸和笔够多,我想写多少就写多少,然后就变成谁纸多的问题了。 或许10000张纸可以换一只羊(其实这会造成经济通胀)。

每个人都这么认为。 但后来有人想出了一个解决办法:这篇论文并不适用于所有人。 我们只认得村里德高望重的老村长的字迹,老村长的字迹大家都知道。 老村长写了一些卷子,同时根据每家的黄金存量,给大家发了等量的卷子。 比如老张家有200克黄金,老村长给了老张200张纸,上面写着“一克黄金”,把老张的黄金拿走了当抵押。 就这样,老村长把村里所有的黄金都收进了自己的家里,并根据每家每户上交的黄金数量,分发了等量的带字纸。 这时候,村民们就可以把这些纸当成黄金来交易了。 老村长说的话谁都知道,但别人造不出来。 还有,如果有人的纸太旧了,也可以从老村长那里换取新的等量纸。 另外比特币转账能被追查吗,老村长承诺,如果有人想要换取真金,只要他把纸拿回来,他就会把等值的黄金还给那个人。 因为老村长写的纸的含金量和家里的含金量是一样的,只要严格按照新纸多废,新纸多写的原则,每一张有效的纸都能一直兑换相应的真金。

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

image.png

中心化虚拟货币

又过了几年。 由于老村长每天清点大量的旧钞票,写新钞票,他必须仔细记录各种账目。 久而久之,老村长积劳成疾,不幸去了西部。

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

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

image.png

分布式虚拟货币

这个新来的白痴很聪明,只是有时候这个人很聪明,却被自己的聪明给误会了。 一天,二狗盯着账本,心想这村家家有多少钱我说了算,我才不会……于是他发疯了,偷偷从老张的账上取了十块钱. 克金以自己之名。

本以为完美,没想到老张还有记账的习惯。 一天,他正要付款时,二狗告诉他,他的账户没钱了。 老张查了一下账本,发现还有十克,就拿着账本去找二狗理论。 本次调查发现,未经张先生同意进行转账。

只是窗户! 咬村炸了。 二狗被弹劾在所难免。 但是通过这件事,大家发现了把书集中在一只手上的弊端:

这个系统完全依赖于账本持有人的个人信用。如果这个人不遵守规则,随意篡改账本,那么整个货币体系就会崩溃

如果此人的房屋着火或账本被盗,对系统也将是毁灭性的

村里的宅男科学家中本聪上台告诉大家,他设计了一个叫比特币的虚拟货币系统,不依赖任何中央处理器,可以解决上述问题。 然后他慢慢地描述了他的计划。

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

2022年基建台账公示机制

中本聪首先解释说,现有的账本应该进行如下改革:

账本不再记录每个村民的余额,只记录每笔交易。 即记录每笔交易的付款人、收款人和付款金额。 只要确定了账本的初始状态,每笔交易记录都是可靠的、有时间顺序的,就可以计算出每个人当前持有的货币数量。

分类帐从私人变为公共。 任何村民只要需要,都可以拿到最新的、完整的户口本。 账本记录了从账本建立到现在的所有交易记录。

此话一出,下方的炸锅立刻炸了下去。 第一个无所谓,第二个简直不能接受,因为账本记录了村民的所有交易,让大家的隐私没有完全暴露。 中本聪不紧不慢地拿出一对奇怪的东西。

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

中本聪说,不要惊慌。 在他的机制下,没有人可以用他的真实身份进行交易,只有一个独一无二的代号。

他展示着手中的神奇之物,说这两样东西分别叫做秘印和印鉴仪。 之后,他会给村里的每家每户都送上密印和印章扫描仪。 两者的工作方式如下:

密印可以在纸上盖上一枚印章,每盖一枚印章都包含一串全村独有的文字,但肉眼是看不见的。 不能通过检查进行相应的密封。

邮票扫描仪可以扫描一枚盖章,读出隐藏的信息,并在液晶屏上显示一串字符。

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

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

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

矿工分组,一组可以是单户,也可以是几户的组合

成为矿工不影响货币的正常使用

【虚拟矿工可以在家完成工作,没有工具的矿工有一定的获得报酬的可能性。 他们在挖矿活动中投入的精力越多,获得报酬的可能性就越大。组织分为七类。 建立初始账本(genesis block) 接下来,中本聪宣布,根据二狗子的账本,所有抵押的黄金将根据账本记录的余额返还给每个村民,然后彻底销毁账本。 接着,中本聪拿出了一个新的账本,在账本的第一页记录了一些交易记录。 特别地,这些记录的付款人栏是“系统”,收款人是每个印章对应的隐藏字符,代表初始时刻。 默认情况下,系统会给每户分配一定数量的比特币,但是​​数量很少,只有几个,甚至有些倒霉的村民并没有得到比特币。 然后中本聪说现在市场上的比特币很少,你可以回到黄金作为货币的时代。 由于我不是村长,我无权强制你接受比特币,你可以决定是否接受。 但随着比特币的流通和矿工的活跃,比特币会逐渐增加。 经过这么多支付和交易的准备,终于进入正题。 下面介绍如何在这样的系统下完成支付。 以老张付给老李10个比特币为例。 付款人在交易单上签字,支付 10 个比特币。 老张首先需要老李的标识串,比如“ABCDEFG”,老张也有一个标识串,比如“HIJKLMN”。 然后老张写了一个单子,上面写着“HILKLMN支付10个比特币给ABCDEFG”,然后用自己的秘章改了。 另外,为了追查钱的来源,还需要在清单上注明钱的来源记录在哪一页。 比如这个列表中,老张的10个比特币来自系统在建立账本时的赠送,记录在账本的第一页。

image.png

收款人确认文件签署人

老李拿到名单后,需要确认名单上确实是“HIJKLMN”(即老张)这个人的签名。 这并不难。 因为单子上肯定有暗印,老李拿出印章扫描仪扫描了印章。 如果液晶屏上显示的字符与付款人(这里是“HIJKLMN”)一致,则可以确认该单子确实是付款人签字的。 这是因为按照秘印机制,其他任何人都无法伪造这枚印章。 任何人只要扫一下邮票,就可以确认付款人和名单签字人是否为同一人。

收款人确认付款人余额

该系统仍然存在很大问题。 有了保密印章,收款人可以确认付款人已经在票据上签字,但无法确认付款人是否有足够的余额支付。 在之前的中心化虚拟货币系统中,二狗子负责查询付款人的余额,并通知收款人交易是否有效。 现在二狗子开了,谁来负责记账,确认每笔交易的有效性?

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

矿工的工作

矿工的工作是整个系统的核心,也是最复杂的地方。 下面逐步介绍矿工做什么和为什么做。

矿工工具

俗话说,工欲善其事,必先利其器。 比特币矿工不需要铲子、铲子、探照灯等工具,但他们确实需要一些必需品。

初始分类帐。 每个小组首先自己复制一个初始分类账。初始分类账只有一页,记录系统的第一笔捐款

空账本纸。 每组有几本账本,每一页只有账本结构,没有内容。 具体内容的编写规则将在后面介绍。 下面是一个空的账本的样子。每个字段的含义将在下面

描述了代码生成器(哈希函数)。 中本聪还给矿工组织的各个部门发了一些代码生成器。 这东西太棒了。 将一张写满内容的账本纸放入机器,机器会自动在账本纸上的“收据编号”一栏打印一串由“0”和“1”组成的数字,共256个。令人惊奇的是,数字生成器具有以下功能:

image.png

生成的数字只与账本内容有关,与填写人、字体、填写时间等因素无关。 一个内容相同的账本,总会生成相同的数字,但即使内容只改变一个字符,数字也会完全无法识别。 代码生成器在打印代码的时候也需要填写所有的账本。 机器会扫描交易单和填写的交易单的一致性,尤其是机要印章。 如发现密印与付款人不符,将拒绝打印密码,并放入打印的账簿中。 机器会判断号码是否有效,机器打印,号码和内容是否一致。 该号码不能伪造到交易票收件箱中。 每个矿工群需要在门口挂一个箱子,用来领取交易票。 布告栏。 每个矿工群还需要一个公告板来发布一些信息。 有了以上工具,矿工组织就可以搞定! 交易单的收集 中本聪规定,每笔交易的发起人不仅要将交易单交给收款人,还要复印几张相同的交易单,投递到每个矿工群的收件箱中。 矿工群里的人会定期去他们的收件箱列出收集到的交易。 填写账本 这时候,群里的人拿出了一张空白的账簿纸,将这些交易填入了“交易清单”栏中。 同时,他们找到了当前账本的最后一页,将最后一页的号码复制到之前账号的那一栏。 请注意,还有一个“幸运数字”。 你可以填任何数字,比如12345。然后,将账本纸放入数字生成器,打印数字,从而完成账本。 如果你认为矿工的工作就这么简单,那你就大错特错了。 中本聪有一个反常的规则:只有前 10 位数字全为 0 的账本才有效。 根据之前编号生成器的描述,修改编号只能修改账本内容,“交易清单”和“上期账本编号”是不能随便改的,只能改幸运数字。 因此,为了生成有效的账本纸,群里的矿工不停地复制账本纸,但每张纸都有不同的幸运数字,然后反复将纸放入编码器中。 如果生成的号码我们不知道,如果号码的每一位都是随机的,平均可以写1000多张不同幸运号码的纸,才能得到一个有效号码。 这很奇怪。 为什么这些矿工会竭尽全力去做这种看似毫无意义的事情呢? 还记得以前矿工发工资的日子吗? 这就是激励矿工的原因。 中本聪规定,在每张账本的交易清单中,第一笔交易是“系统将向该组支付50个比特币”。 换句话说,如果你生成了一个有意义的账本纸,并且被所有矿工组接受,那就意味着这笔交易也被接受了,你的矿工组得到了50个比特币。 这就是为什么矿工被称为矿工,以及为什么前面说比特币的数量会随着交易和矿工活动而增加。 比如下面是一个挖矿过程。 该组的公共比特币帐号是“UVWXYZ”。

当幸运号码尝试“533”时,系统生成一个有效的账簿。

image.png

确认账本 当一个挖矿组有幸生成一个有意义的账本时,为了获得奖励,请立即。 其他小组确认他们自己的工作。 前面说了,目前村里有7个矿工组,所以这个组要复印6份有效的账本,发给另外6个组确认。 中本聪规定,当一个团体收到其他团体发送的账本纸时,必须立即停止手头的挖矿工作,以确认账本。 需要确认三项信息:账簿号码有效; 账簿上一页有效; 有效交易列表有效。 首先,看第一个。 这个确认比较简单。 只要将发送的账簿纸放入发码器进行验证,验证通过即为号码有效。 第二部分需要将账本页上的“上一账本页码”与本组当前保存的有效账本的最后页码进行比对。 如果相同,请确认。 如果不同,则需要沿着已有的账本向前比较,直到找到这个编号的页。 如果找不到与指定的“最后一本书的论文编号”对应的页面,则该团队将丢弃该页面。 还没有确定。 注意,上面的机制可以保证,如果每个组手里的账本纸是一样的,那么都可以按照相同的顺序,绑定到同一个账本上。 因为下一张纸的编号总是取决于上一张纸的编号,所以代码生成器的机制保证了所有合法帐户纸的相对顺序在每组中都是相同的(可能有分支,但它们会不出现环,后面会详细介绍)。

最后,如何确认交易单是否有效,其实就是确认当前每笔交易的付款方是否有足够的余额来支付这笔钱。 由于交易信息包括钱是怎么来的,所以它还包括记录来源交易的账单号码。 比如HIJKLMN要给ABCDEFG 10个比特币,说明这10个比特币来自OPQRST之前支付给HIJKLMN的一笔交易。 确认时首先要确认之前的交易是否存在,同时检查HIJKLMN在这之前的10个比特币没有支付给其他任何人。 这些都确认之后,交易的有效性就确定下来了。

image.png

第一个是系统奖励给生成这页账簿的组的50。 默认情况下识别此事务。 只要按照上述方法追溯后续交易,就可以确认HIJKLMN目前是否真的有10个比特币支付给ABCDEFG。 如果上述验证全部完成并通过比特币转账能被追查吗,本集团将认可上述账本的有效性,然后将本账本纳入本集团主账本,放弃当前正在进行的工作,后续挖矿工作将根据本书更新的总账进行。 账本确认反馈 对矿队而言,在发出账本纸时,如果后面有其他团队发送的账本纸,其“上页账本纸编号”为自己之前发出的账本纸, 那么表示他们的工作成功的被其他组认可了,因为已经有组基于他们的账本继续工作了。 至此,可以大致说得到了50个比特币。 另外,当任何一个组生成新的有效帐单或确认其他组的帐单时,会在公告板上写上本组最近批准的交易,收款人只需发现相关交易已被批准即可每一组,基本上都可以认为钱已经到他的账户了,以后支付的时候可以把钱的来源指向这个交易。 以上就是整个比特币支付系统。 我们来分析一下为什么这个系统可以继续运行,以及这个系统可能面临的风险。 工作机制分析 虽然上面已经解释了比特币的基本运行规则,但村民们仍然有很多疑问。 于是中本聪专门召开了问答会,回答大家常见的问题。 下面总结一下村民最关心的问题。 同时收到两张合法账簿页怎么办? 注意上面的运行机制,每个挖矿组是并行工作的,所以一个组收到两个不同的账本页是完全可能的,都是以当前组主账本的最后一页为准,内容完全合法,我该怎么办? 对于这个问题,中本聪表示,小组不应该以线性的方式来组织书籍,而应该以树的形式来组织书籍。 任何时候都以当前最长的分支作为主书,但保留其他分支。 比如一个组同时收到两个账号页面A和B,记账后都是合法的。 这时候群应该把这两个页面以fork的形式组织起来,如下图:

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

矿组有人造假账怎么办 对于这个问题,中本聪表示,只要矿组的大部分人都是诚实的,系统就是可靠的,他会从几个方面来回答这个问题。 首先,基于保密印章机制,任何人都不能伪造他人身份进行支付,因为代码生成器在打印代码时会检查所有交易单的保密印章,如果印章与付款人不一致,他们将拒绝打印。 而且,诚实的矿工不会承认非法交易(例如某笔交易的付款人余额不足)。 所以只有一种可能的攻击行为,即收款人确认收款后,从另一家分行创建另一笔交易订单,取消之前的支付,将同样的钱再次支付给另一个人(所谓的双花问题). 下面也用一个例子来说明这个问题。 首先假设有一个拥有10个比特币的攻击者,他打算同时将钱支付给两个受害者A和B,并且都被承认。 第一步,攻击者准备向受害者A购买10个比特币的黄金,他给受害者A签了交易单,将10个比特币转给了受害者A。

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

image.png

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

image.png

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

image.png

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

image.png

对于这种攻击,中本聪给出的解决方案是建议收款人在发布公告时不要立即确认交易完成,而是应该等待一段时间,等待每个矿工团队发布6多确认账本,之前的账本在确认钱到账之前还没有注销。 中本聪解释说,设置这些变态的编号规则就是为了抵御这种情况。 综上所述,想要生成有效的账本页并不是那么简单,需要大量人力反复尝试不同的幸运数字,过程完全靠运气。 如果一个账本页面包含你收到钱的确认信息,并且它持续了 6 个以上,攻击者很难在落后 6 页的情况下从另一个分支赶上当前的 master 分支,除非攻击者有一个大量人力,超过所有其他诚实矿工的总和。 而且,如果攻击者有这么多人手,与其花那么大的力气来进行这种攻击,还不如好好挖矿,获取更多的收益。 这样可以防止从动机上形成攻击。 比特币会继续涨,不会造成严重的通货膨胀吗? 中本聪说,我也想到了这个。 前面忘了说了,我给矿工组织的操作规程手册上会说明,在我们的协议开始的时候,每产生一页账本,本组奖励50个比特币。 以后账本每增加21000页,奖励减半。 例如,当达到21万页后,每生成一个账本奖励25个比特币; 42万页后,每生成一页奖励12.5个比特币,以此类推。 当账本达到693万页时,新生成的账本页数将没有奖励。

此时比特币的总量约为21,000,000,这是比特币的总量,所以不会无限增加。 如果没有奖励,就没有人会成为矿工。 不是说没有人会帮忙确认交易吗? 届时,矿工的收入将从挖矿收入变为手续费。 比如你转账的时候,你可以指定其中的1%作为手续费支付给生成账户页面的团队,每个团队会选择手续费高的交易单进行优先确认。 如果矿工越来越多,比特币的生成速度会不会变快? 中本聪解释说,虽然可以随意加入和退出矿工组织,导致矿工数量发生变化,但每个矿工也会得到一个代码生成器,但我在代码生成器中加入了控制机制,而当前工作的代码生成器越多,每台机器的效率越低,保证新书页的生成率不变。 虽然每个人的代号都是匿名的,但是如果泄露了某个人的代号,账本公开了,那岂不是他的所有账户都被查出来了? 比如你想和某人交易,你必须得到他的代码才能填写交易表格。 因为收款人一栏需要填写那个人的代号。 不过,中本聪表示,可以提供无限的保密印章,建议每笔交易使用不同的保密印章,这样就无法通过查账簿查到同一个人的所有账户。 问答结束。 说明本文用通俗的比喻解释了比特币的运行机制。 有几点需要说明一下:为了便于理解,我做了很多简化,所以一些机制细节可能和实际的比特币不完全一样。 但总体思路和关键原则是相同的。 由于计算机世界中的很多东西(比如公钥系统、网络传输)在现实世界中并没有特别好的对等物,所以故事中难免会出现一些生硬不合理的细节。 本文描述了比特币网络本身的技术原理和运行机制。 比特币交易在Mtgox等交易市场进行时,市场充当中间代理,并不遵循上述机制。引用链接:来自:张扬的博客