区块链与比特币通俗解释:币村故事带你轻松理解比特币原理
区块链的通俗解释是什么?我们先来看看目前区块链最成功的应用——什么是比特币?我们不要太自命不凡。我们就以最常见的例子来给大家解释一下什么是比特币。
我花时间阅读了一些与比特币原理相关的资料。虽然不能说每个细节都完全理解,但是总体思路和关键部分的主要原理还是比较清晰的。写一篇文章分享给大家。本文的定位会更加大众化,并尝试用类比的方式来解释比特币的基本原理。本文不会涉及算法和协议的更详细部分。后面我打算再写一篇从程序员角度讲比特币原理的文章,从技术人员角度讨论比特币系统中比较关键的数据结构和算法。对协议进行一些解释。
在这篇文章中,我将给大家介绍一个名为“硬币村”的虚拟村庄。整篇文章将通过讲故事的方式逐步告诉你比特币背后的动机、它解决的问题以及一些关键组件的目标和设计方案。 。
提出问题
让我们从比特币背后的动机开始。
物物交换的钱币村
据说,在这个世界上,有一个小村庄,名叫钱币村。村里有数百户人家。这个村庄几乎与世隔绝,过着自给自足的生活。由于没有大规模的贸易,毕村的村民一直过着以物易物的生活,这意味着村民们并不使用统一的货币。彼此之间的贸易基本上就是老张家换一袋面粉给老李家。一只羊,王夫人送给刘阿姨一筐野果,换了两尺布。村民们一直过着这样简朴的生活。
实物货币
终于有一天,村民们觉得一直以物易物太不方便,于是全村召开会议,讨论如何解决这个问题。有人提出,为了把容易划分、稀有的东西,比如黄金,作为一般等价物,应该将其他物品与黄金的对应关系编制成表格,例如一克黄金对应一克黄金。羊,一克黄金对应一袋面粉等等,现在老张不用再背着一袋面粉气喘吁吁了,他去老李家换羊。只要他从家里拿出一克黄金,就可以去老李家拿回一只羊。老李只要愿意卖面粉,就可以换到这一克黄金。当然,一袋面粉可以兑换相当于一克黄金的任何东西。
此时,钱币村进入了实物货币时代。
象征性货币
美好的时光并没有持续多久。过了一段时间,实物货币的弊端也显现出来。由于毕村附近金矿不多,开采和冶炼黄金过于费时费力。随着黄金的使用,它会不断磨损、丢失或被故意囤积。全村人又坐在一起,开始商议对策。这时候就有人说了,其实大家并不一定要真正使用黄金。只要找一张纸,写上“一克黄金”。只要全村人都同意这张纸相当于一克黄金,问题就解决了。 。其他人都同意,但同时也出现了新的问题:真正的黄金需要开采和冶炼,金矿是有限的,开采和冶炼也需要成本,所以没有人能够凭空制造出大量的黄金。时间虽短,但写作却不同。只要我有足够的纸和笔,我想写多少就写多少。然后就变成了谁家有更多纸张的竞争问题。也许一万张纸可以换一只羊(实际上这就是经济中发生的事情)。学术通货膨胀)。
大家也这么认为。然而,此时又有人提出了解决方案:这篇论文对任何写它的人都无效。我们只认村里德高望重的老村长的笔迹,老村长的笔迹大家都认识。老村长写了一些纸条,同时根据各家的黄金存量给大家发了等量的纸条。比如,老张家里有200克黄金,老村长就会给老张200张纸,上面写着“一克黄金”。纸,同时拿走了老张家的黄金作为抵押。就这样,老村长把村里所有的黄金都拿到了家里,并根据各家上交的黄金数量,发给了每户人家一张写有字样的纸条。这时候,村民们就可以用这些纸张作为黄金进行贸易,而且每个人都能认出老村长的字迹,其他人也无法伪造。另外,如果有人的纸张太旧了,还可以拿去给老村长换取等值的新纸张。另外,老村长承诺,如果有人想换成真金,只需要把纸带回来,老村长就会将等值的黄金返还给那个人。因为老村长写的纸上的金子数量和家里实际保存的金子数量是一样的,所以只要严格遵循写了多少纸就销毁多少的原则,每一张有效的金子都会被销毁。纸币总是可以兑换相应的真金。 。
此时,钱币村进入了符号货币(纸币)时代。老村长承担了政府和银行的角色。
中央系统虚拟货币
几年后,老村长不得不检查大量的旧钞票,书写新钞票,并仔细记录各种账目。过了一段时间,老村长因劳累过度,不幸去世了。
钱币村又召开了一次股东大会,讨论应该做什么。这时,老村长的儿子二狗子自告奋勇,接过父亲的笔,承担起货币发行的责任。年轻的村长二狗子很聪明。他研究了几天,发现自己其实并不需要写那么多论文。这是绝对有可能的:村民将所有的钞票交出并销毁,但二狗子会记录每户人家交出的钞票数量。如果以后要付款,比如老张想用一克黄金给老李换一只羊,你就给二狗子打电话,说明你想把老张的一克黄金转过去。改名老李的名字。 ,二狗子拿出账本,看到了老张名字里的内容。有克黄金吗?如果是的话,老张名字里减一克,老李名字里加一克。这样就完成了付款。这时,老李听到二狗子在电话里确认转接。搞定了这件事,你就放心让老张把羊带走了。
此时,币存已进入中心化系统虚拟货币时代。每个村民不需要实物支付。支付过程变成了二狗子维护的账本上数字的变化。
分布式虚拟货币
新上任的二狗子很聪明,但有时很聪明却被自己的聪明所误导。有一天,二狗子盯着这本账本,心想村里每户有多少钱都是我说了算,那我岂不是……?于是他兴奋起来,偷偷地从老张的账户上转了十克黄金到自己的名下。
本以为很完美,没想到老张也有记账的习惯。有一天,当他准备付款时,二狗子告诉他,他的账户上没有钱。老张查了一下账本,发现还有十克,就拿着账本去找二狗子辩解。这张检查揭露了未经老张同意的转让行为。
有事发生了!钱币村爆炸了。二狗子被弹劾是不可避免的,但通过这件事,大家发现了账本集中在一个人手里的坏处:
该系统完全依赖于账本持有者的个人信用。如果这个人不遵守规则,随意篡改账本,整个货币体系就会崩溃。
如果这个人的家里发生火灾或者账本被盗,也会给整个系统带来毁灭性的打击。
正当人们一筹莫展时,村里一位名叫中本聪的宅男科学家登场,告诉大家,他设计了一种不依赖任何中央处理器的虚拟货币系统,名为比特币,可以解决上述问题。然后他慢慢地描述了他的计划。
我们来看看中本聪是如何设计这个系统的。
基础设施建设
账簿披露机制
中本聪首先解释说现有账本必须修改如下:
账本不再记录每个村民的余额,而只记录每一笔交易。即记录每笔交易的付款人、收款人以及付款金额。只要账本的初始状态确定,每笔交易记录可靠、及时,就可以计算出每个人目前持有多少钱。
账本由私人改为公开。只要任何一个村民需要,都可以获得当前完整的账本。账本记录了从账本创建至今的所有交易记录。
此言一出,下面顿时炸开了锅。第一个无所谓,但第二个就根本无法接受,因为账本上记录了村民所有的交易,那岂不是每个人的隐私都暴露了?
中本聪不紧不慢地拿出了一对奇怪的东西。
身份和签名机制(公钥加密系统)
中本聪说,不要惊慌。在他的机制下,没有人使用真实身份进行交易,而是使用唯一的代码进行交易。
他展示了手中的神奇之物,并说道,这两个东西分别叫做保密印章和印章扫描仪。稍后,他会给村里每一户人家发放保密印章和印章扫描仪。两者的功能如下:
保密印章可以盖在纸上。每张邮票上都包含着村里独有的一串字符,但肉眼是看不出来的。也无法通过观察来创造出相应的封印。
印章扫描仪可以扫描已盖章的印章,读出隐藏信息,并在液晶屏上显示一串字符。
有了这两件神奇的东西,每个人都可以在不暴露真实身份的情况下进行交易,而印章中隐藏的一串字符就是这个家族的代号。下面详细介绍如何熟练使用保密封条和封条扫描仪进行交易。
建立虚拟矿工组织(挖矿组)
接下来,中本聪从整个村庄招募虚拟矿工。招聘要求如下:
矿工被组织成小组。一个群体可以是一个家庭,也可以是几个家庭组成的一个群体。
成为矿工不影响币的正常使用
矿工每天都会花费一定的时间从事比特币“挖矿”活动,但与黄金开采不同的是,虚拟矿工不需要携带工具去现场工作,可以在家完成工作。
矿工有一定的获得报酬的可能性,并且他们投入的挖矿活动越多,获得报酬的可能性就越大。
矿工可以随时退出,新矿工也可以随时加入。
很快,大约五分之一的村民加入了比特币矿工组织,分为七个小组。
建立初始账本(创世块)
接下来,中本聪宣布,根据二狗子手中的账本,所有抵押的黄金将按照账本上记录的余额返还给每个村民,然后账本将被彻底销毁。
随后,中本聪拿出一本新的账本,在账本的第一页记录了一些交易记录。特殊的是,这些记录的付款人一栏都是“系统”,收款人是每个印章对应的隐藏字符,代表最初的时刻。系统默认给每个家庭分配一定数量的比特币,但是数量很少,只有几个。一些不幸的村户甚至没有收到比特币。
随后中本聪表示,由于目前市场上的比特币很少,所以大家可以回到使用黄金作为货币的时代。因为我不是村长,所以我没有权利强迫大家承认比特币。每个人都可以自己决定。不接受比特币。不过,随着比特币的流动和矿工的活动,比特币的数量会逐渐增加。
付款和交易
经过这么多的准备,我们终于进入正题了。下面我们就来说说在这样的系统下如何完成支付。以老张向老李支付10个比特币为例。
付款人在交易单上签字
为了支付10个比特币,老张首先需要向老李要他的识别字符串,比如“”。同时,老张还有一个标识字符串,比如“”。然后老张写了一张单子,上面写着“付10个比特币给你”,然后他又盖上了自己的保密章,把单子交给了老李。另外,为了方便追查钱的来源,还需要在列表中注明钱的来源是在哪一页记录的,比如这个列表中,老张的10个比特币来自于建立账本时系统赠送的,记录在账户中。第一页。
收款人确认文件签名者
老李拿到订单后,需要确认订单确实是“”人(即老张)签署的。这并不难。因为订单上肯定有保密印章,所以老李拿出印章扫描仪,对印章进行了扫描。如果液晶屏上显示的字符与付款人的字符一致(这里为“”),则可以确认该订单确实是付款人签署的。的。这是因为根据保密印章的机制,任何人都无法伪造该印章。任何人都可以通过扫描印章来确认付款人和订单盖章是否一致。
收款人确认付款人余额
这个系统还是有很大问题的。通过保密印章,收款人虽然可以确认付款人确实签署了该表格,但无法自行确认付款人是否有足够的余额进行支付。在之前的中心化虚拟货币系统中,二狗子负责检查付款人的余额并通知收款人交易是否有效。现在二狗子开放了,谁来负责记账并确认每笔交易的有效性?
前面说过,中本聪设计的系统是一个不依赖任何中心人物的分布式货币系统,所以不会有一个或几个人对此负责。前面提到的矿工最终负责这项工作。组织。老张、老李以及村里任何其他村民使用比特币进行交易,都是依靠矿工组织的工作来完成交易。
矿工的工作
矿工的工作是整个系统的核心,也是最复杂的部分。下面逐步介绍矿工的工作内容和目的。
矿工工具
俗话说,工欲善其事,必先利其器。虽然比特币矿工不用铁铲、铲子、探照灯等工具,但仍然需要一些必要的工具。
初始账本。每个小组首先制作一份其初始账簿的副本。初始账本只有一页,记录着系统的第一份礼物。
空的账本纸。每个组有若干账本。每页只有账本的结构,没有内容。具体内容的书写规则将在后面介绍。下面是一张空的账簿纸的样子。每个字段的含义将在后面讨论。
矿工工具
编码生成器(哈希函数)。中本聪向矿工组织的每个小组分发了一些代码生成器。这东西很神奇。将一页写满账簿内容的账纸放入机器中,机器就会在账纸上打印出“帐单号”。该列自动打印一系列由“0”和“1”组成的数字,共256个数字。最神奇的是,数字生成器有以下功能:
一个。生成的数字只与账簿纸上填写的内容有关,与填表人、字体、填写时间等因素无关。
b.内容相同的账本纸生成的数字总是相同的,但内容哪怕改变一个字符,数字就会完全不同。
c.打印代码时,代码生成器还需要将帐单中填写的所有交易单放入其中。机器会扫描交易单和填写的交易单是否一致,尤其是保密章。若发现保密印章与付款人不一致,将拒绝打印编码
d.将一张打印好的帐单放入,机器会判断该号码是否为有效的机器打印,并判断号码与内容是否一致。这个号码是无法伪造的。
e.交易订单收件箱。每个挖矿团队需要在门口挂一个盒子来收集交易订单。
f.布告栏。每个矿工组还需要一个公告板来发布一些信息。
有了以上工具,矿工组织就可以上手了!
收集交易订单
中本聪规定,每笔交易的发起者不仅要把交易单交给收款人,还要复制几张相同的交易单,投递到各个矿工组的收件箱中。
挖矿团队的人定期去收件箱取出收集到的交易列表。
填写账簿
这时,队员们拿出一张空的账本纸,将这些交易填在“交易清单”一栏里。同时,他们找到当前账本的最后一页,将最后一页的号码复制到“上一张帐单号码”栏内。注意,还有一个“幸运数字”,可以填写任意数字,比如12345。然后,将账本纸放入数字发生器中,打印数字,账本就完成了。
如果你认为矿工的工作就这么简单,那你就大错特错了。中本聪有一个变态的规则:只有当该数字的前10个数字全为0时,这一页会计纸才算有效。
根据前面对号码生成器的描述,要修改号码,只能修改帐单内容。但“交易清单”和“往期账纸号”是不能随便更改的,只能更改幸运数字。于是为了生成有效的账本纸,群里的矿工不断地复制账本纸,但每张纸上的幸运数字都不一样,然后反复将纸放入编码器中。如果生成的数字不符合规定,论文即使无用,也要重复这个过程,直到生成一串有效的数字。
我们知道,如果号码中的每个数字都是随机的,那么平均来说,要写1000多张不同幸运数字的纸才能得到一个有效的号码。
这就奇怪了,为什么这些矿工要这么辛苦地干这种看似毫无意义的事情呢?记得我之前说过,矿工是有报酬的,这是矿工的动力。中本聪规定,每张账本的交易列表中的第一笔交易是“系统向该组支付50个比特币”。换句话说,如果你生成了一张有意义的账本,并且被所有挖矿组都接受了,就意味着这笔交易也被接受了,你的挖矿组就获得了 50 个比特币。
这就是为什么矿工被称为矿工,也是为什么之前说随着交易和矿工的活动,比特币的数量会不断增加。例如,下面是一个挖矿过程。该团体的公共比特币账户为“”。
当幸运数字达到“533”时,系统生成一页有效账本。
确认账簿
当一个挖矿团队有幸生成一本有意义的账本时,为了获得奖励,它必须立即要求其他团队确认他们的工作。如前所述,目前村里有7个采矿组,因此该组必须迅速将6份有效账簿纸发送给其他6个组进行确认。
中本聪规定,当一个团体收到另一个团体的账本纸时,必须立即停止手头的挖矿工作,以确认账本。
需要确认三项信息:
1、账簿号码有效
2、上一页账簿有效
3、交易清单有效
我们先看第一个。这个确认比较简单。只需将交付的帐单放入代码生成器中进行验证即可。如果验证通过,则该号码有效。
第二部分要求将账簿页上的“上一个账簿纸页号”与该组当前保存的有效账簿的最后页码进行比较。如果相同,请确认。如果不同,则需要沿着现有账簿向前比较。 ,直到找到具有该编号的页面。如果没有找到与指定的“上一本书页码”相对应的页面,则团队将丢弃该页面。未证实。
需要注意的是,上述机制可以保证如果各组手中的账本相同,那么都可以按照相同的顺序绑定到相同的账本中。因为后一张纸的编号总是取决于前一张纸的编号,所以代码生成器的机制保证了每组中所有合法账簿的相对顺序是相同的(可能有分支,但不会有分支)环,稍后详细讨论)。
最后一步是如何确认交易列表有效。其实就是确认当前每笔交易的付款人有足够的余额来支付这笔钱。由于交易信息包含钱的来源,因此还包含记录源交易的账单编号。例如,如果你想给一个比特币,并注明这10个比特币来自于之前支付给你的一笔交易,那么在确认时,你必须首先确认之前的交易是否存在,并且还要检查这10个比特币之前没有被转移过。 。用比特币向他人付款。当这一切都被确认后,交易的有效性就被确认了。
第一个是50,系统奖励给生成这一页账本的团队。每个人都默认承认这笔交易。只要按照上面的方法追踪后续的,就可以确认10个比特币是否真的支付给了当前的。
如果上述所有验证都完成并通过,团队将承认上述账本纸质有效,然后将此账本纸质合并到集团主账本中,放弃当前正在进行的工作,后续挖矿工作将进行基于这本书。更新的主分类帐已执行。