通过高中数学课来理解区块链
如果您曾经努力学习过高中数学课,那么您将能够理解区块链技术的原理,这使得比特币成为可能。
您是否曾尝试通过阅读随机博客文章和维基百科或观看 YouTube 视频来学习区块链的基础知识?
它很快就变得技术性十足。你很快就会接触到以下概念:
“分布式账本”
“加密哈希”
“数字签名”
虽然你当然可以坚持克服最初的困惑,但在了解整个系统之前,你需要了解一系列新的技术概念。
之所以如此困难,原因在于:比特币(以及区块链)基于分布式和去中心化的范式。我们习惯于中心化的、值得信赖的权威机构,例如银行、医疗保健机构和企业(是的,我们甚至信任其中的大多数)。
这些机构都拥有复杂的系统来维护高质量。为了在没有中心化权威的情况下,维持重要产品的相同标准……我们也需要新的、复杂的规则来维持去中心化系统的运转。
因此,我将创建一所名为“分布式高中”的新型高中,它将运用区块链的原理进行运营。我们将使用分布式系统创建一种新的数学作业批改方法。学生将能够在没有老师帮助的情况下维护评分系统。
最后说明一下:虽然比特币可能是 2018 年区块链技术最受欢迎的应用,但许多其他行业可能会在未来 5 年内开始采用区块链。
这种解释最直接地适用于比特币,但也适用于其他类型的区块链。例如,医疗保健提供者可以使用区块链安全地存储个人病史。
如果您正在寻找更技术性的解释,那么这段关于比特币的20 分钟 YouTube 动画视频可能是我最喜欢的。
高中的集中管理方式
假设你是一名高中一年级学生,正在上九年级的代数课。为了通过这门课,你需要在家庭作业、测验和考试中取得足够的分数。班上共有30名学生。
所有这些都由一个权威机构——老师——集中管理。这个人会批改你的所有作业,每季度发放成绩单,并确保没有人在考试中作弊,以免破坏课堂的完整性。
尽管这是我们都习惯的制度,但它实际上存在一些重大缺陷。
- 效率低下——还记得一次性给老师30份试卷会发生什么吗?老师可能需要一周时间才能把试卷还给你,因为批改30份试卷需要很长时间。
- 风险——你见过老师弄丢学生的试卷吗?或者,有老师把试卷放在地下室的文件柜里,有一天文件柜被水淹了,试卷就毁了?这两种情况都会发生,而且老师要处理大量的作业,难免会出错。
- 腐败——你曾经在班里惹过麻烦吗?老师批改你的试卷时,可能只看了一眼试卷顶部的名字,就立刻在批改试卷时带上偏见。这可能是有意或无意的。
- 代价高昂——花在批改试卷上的时间对学生或社会没有任何价值。这或许也是老师最不喜欢的工作。他们当老师的初衷很可能是为了帮助学生学习,而不是批改试卷。结果,你父母纳税人的钱却花在了一项对任何人都没有好处的事情上。
你也可以在其他中心化系统中看到类似的问题。例如,尽管我们把辛苦赚来的钱托付给银行,但银行业却因为高风险的操作引发了2008年的金融危机,最终需要纳税人出巨额资金的救助。
尽管我们信任医生,但医疗失误是美国第三大死亡原因,仅次于心脏病和癌症。谁知道其中有多少死亡是由于医生无法访问重要的医疗数据造成的?
那么,你可能会想……我们到底该如何通过消除教师——这个体系中最专业的人士——的影响来解决所有这些问题?我们该如何防止它陷入无政府状态?

这就是区块链概念的由来。在我详细介绍如何使用区块链来创建运行分布式高中的新方法之前,您应该知道每个区块链都有由其创建者制定的特定规则。
在比特币的例子中,这个人就是“中本聪”,他撰写了原始白皮书并创建了允许比特币在无人干预的情况下运行的规则(算法)。
在我们的学校例子中,我们将有一位非常有远见的校长来改变规则。
为分布式高中创建区块链
老师批改试卷并管理成绩是私下的,而区块链则将所有交易公开。因此,除了创建它的人之外,区块链不依赖任何中心化权威。
如果您还没有猜到,这意味着在分布式高中,我们将首先让九年级学生互相评分考试!
假设今天是考试日,一节课一小时。学生们做完试卷后,会把试卷整齐地堆放在老师的桌子上。
但是,老师并没有把所有的试卷都带回家评分,而是把所有的试卷混在一起,然后要求每个学生随机参加一个试卷,并用答案进行评分。
这被称为交易。这是构成区块链的基本单位。假设一个学生安迪给另一个学生爱丽丝打了84分。在这种情况下,安迪是发送者,爱丽丝是接收者。
用比特币的术语来说,这不是随机的——你知道你要把钱汇到哪里!
到目前为止,我们已经解决了速度和成本问题。老师不再需要花时间批改试卷,每个学生也能很快地批改另一份试卷。但是,仍然存在巨大的作弊风险。这几乎等于无政府状态。我们需要一个由负责任的人组成的网络,确保所有参与者的诚实。
这就是校长政策发挥作用的地方。校长掌控着每个人都关心的一件事——评分系统。在分布式高中,校长决定允许高年级学生(12 年级学生)运行这个区块链系统,并给予奖励。
如果一名高年级学生在一天内复习了 20 份此类评分试卷,他们就可以参加比赛,在自己的一份试卷上增加 10 分。
这 20 笔交易被称为一个区块,我们最终将展示所有区块如何协同工作以形成区块链。
那么,为什么只有高年级学生才能做到这一点?为什么这必须通过比赛来实现呢?
必须是高年级学生,因为校长需要那些愿意承担每天批改试卷工作量的人。如果系统速度变慢,就没有人能验证和记录他们的试卷,那将是彻底的失败。
而且必须有竞争,这样积分制才不会完全贬值。想象一下,如果每个高年级学生复习20份试卷,最后只在一份试卷上得到10分,会是什么情况?分数膨胀将会非常严重,就像政府印钞导致的通货膨胀一样。为了争夺有限的分数,必须有竞争。我们稍后会分享竞争的具体内容。
校长不会强迫任何高年级学生参加,但会给他们很大的激励。
在比特币中,每个区块的数据大小限制为 1 兆字节 (MB)。截至 2017 年底,平均每笔交易包含约 500 字节的数据,因此一个区块通常包含约 2000 笔交易(来源)。
分布式账本简介
现在我们知道了如何对一次考试进行评分(一次交易),以及激励高年级学生维护系统完整性的机制——他们通过审查和验证更多考试来获得更多分数。但我们仍然缺少这项工作如何实际完成的完整分布式基础设施。
假设有10名高年级学生接受了校长的提议。他们想参加比赛,以便在自己的考试中获得更多分数。另外10名高年级学生决定自愿帮助维护系统,但不参加比赛。这仅仅是出于对分布式系统的支持,也是开源评分运动精神的一部分。
每个高级节点都是网络中的一个完整节点——他们实时沟通有关新交易和新区块的信息。
决定参加比赛的 10 名高级人员被称为矿工。他们构建包含交易的区块,这些交易存储在内存池(未确认交易的储存库)中。
当像安迪这样的学生完成试卷评分时,他会向高年级学生网络广播一笔未经验证的交易。每个全节点都会像传言一样与其他人分享这笔交易。这笔交易最终会成为内存池的一部分。
每个节点必须先验证交易,换句话说,确定交易是否可行。在这个例子中,验证可能意味着确认评分员确实正确地评分了试卷,方法是将所有最终答案输入计算器。我们稍后会讨论验证的另一部分。
经过验证后,每个矿工都有机会通过 20 个测试或交易来构建自己的区块。
可是等等!考试当天,由于班上有 30 名学生,所以需要向网络添加 30 笔新交易。矿工们该如何选择要添加到区块中的交易呢?
答案是交易费。每个发送者都必须在其交易中附加交易费,以补偿矿工的劳动。因此,矿工通常会选择立即将所有费用最高的交易放入他们的区块中。由于这是基于供需关系的,他们可以在需要验证的测试较少的日子里,将费用较低的交易放入区块中。
在我们学校的例子中,这笔交易费可能是从发送者测试中扣除的一个点数,捐赠给矿工。它不会从Alice的测试中扣除。在比特币中,它只是比特币的一小部分,比如0.000003 BTC。发送者支付这笔费用,因为这是处理物流最简单的方式。
此时,每位矿工都已拥有 20 笔已验证交易的区块,并希望将其添加到区块链中。现在,比赛开始,看看这 10 位矿工中,哪一位的区块能够被接受,并获得校长的奖励。
最后一点——你开始看到冗余(或重复工作)的数量了。每个提议的区块都会包含许多共同的交易(测试)。这是运行分布式系统所必需的安全措施。如果所有节点都分别验证交易,那么欺骗系统就会变得更加困难。
工作量证明的竞赛
想象一下,在完成创建包含 20 笔交易的区块的所有工作之后,委托人向每个矿工分享一道 12 年级水平的数学题,第一个解答该题的人将获得所有积分并获得区块确认。
这意味着“富人越来越富”,并且会扭曲整个系统的激励机制。
每天,数学成绩最好的学生都拥有极高的获胜机会,而其他高年级学生则几乎毫无胜算。很快,矿工/高年级学生就会停止参赛,因为他们永远得不到任何积分。
所以,我们校长打算每晚在学校安排一次寻宝游戏。重要的是,寻宝游戏与矿工的数学能力无关。这是为了鼓励大家继续挖矿。
校长会在学校的某个地方藏一个奖杯。学生们必须四处奔跑直到找到奖杯,然后大喊一声,让全校其他学生确认找到了奖杯,然后回家。由于这位校长拥有神奇的预见能力,他把奖杯藏在一个绝佳的位置,这样学生们每晚大约需要一个小时就能找到。
这听起来是不是有点随意?换句话说,是不是感觉像是凭空而来?
嗯,它必须与测试验证无关,这样才能创造公平的竞争环境。这在比特币中被称为“工作量证明”。这是一种难以解决的算法,但一旦解决,其他节点就很容易确认。每个比特币矿工都必须猜测数字,直到选出正确的数字来解答谜题。在比特币中,平均每10分钟就会确认一个新区块。
请记住,比特币矿工实际上是大型计算机,如下所示:
随着越来越多的矿工加入网络,该算法的难度也会逐渐增加。矿工越多,猜测的次数就越多,因此,如果比特币想要继续每10分钟确认一个区块,挑战难度就必须加大。
这个例子展示了比特币(以及我们学校的例子)如何迫使每个矿工与网络的其他部分竞争。一旦矿工解决了难题,他们就会与网络的其他部分分享他们的答案,而答案可以快速得到确认。当节点达成共识,即超过 50% 的节点同意该区块已确认后,它就可以被添加到区块链中。
这促使一些矿工组建公会。以我们学校的案例为例,这意味着一些学生会同意,一旦其中一人找到奖杯,他们就会平分积分。这无疑增加了第一个找到奖杯的人成为他们团队成员的概率。
在比特币中,用于解决这一“工作量证明难题”的总算力被称为哈希率。最大的比特币公会控制着约 10% 的哈希率,这仍然为其他矿工提供了解决难题的良好机会。如果一个公会控制了 50% 的哈希率,那么其他人继续挖矿的动力就会减弱。
一旦区块被确认,矿工将获得奖励(测试中为 10 分)以及所有已确认交易的交易费。未包含在该区块中的交易将返回内存池,以便被纳入未来的区块。
喜欢这个教程吗?在这里注册即可获取我最新的图文讲解。
构建区块链
到目前为止,我们已经介绍了向区块链添加新区块的大部分步骤。但是,我们还没有讲解构建区块链本身的全部要点。
区块链有简单的三层结构。一系列交易构成一个区块。一系列区块又构成一个区块链。
虽然你当然可以根据时间将区块链分成几部分,但通常情况下,每个单独的节点(高级节点)都会维护区块链的完整历史记录或分类账。
以高中为例,我们以九年级为例。因此,该班级的完整历史记录可能是从幼儿园到今天,全班所有学生的所有成绩。由于我们以1天为间隔添加区块,而一个学年大约有180天,这意味着区块链包含大约1700个区块。
每个区块都有一个唯一的ID,该ID基于“哈希函数”计算,依赖于前一个区块的ID。这保障了区块链的安全——不存在区块替换或历史重写,因为每个后续区块的ID都会被更改。
由于我们的教育示例使用一天的间隔,您可能会想,“哦,为每个区块创建一个唯一的 ID 应该很容易,因为每个日期只出现一次!”
但是,这会引入安全漏洞。即使矿工能够在链的中间某处引入一个新区块,也不会破坏这个模式!违规矿工可以轻松复制区块ID,而后续区块的值都不会改变,因为日期遵循一个可靠的模式,并且很容易被复制。
这里有一个哈希生成器,你可以自己尝试一下。我倒是希望能给你一个关于区块顺序的精彩比喻,但不幸的是,这正是哈希函数的意义所在。它让区块的模仿和替换变得非常非常困难(据我们所知,这是不可能的)。所以,我会添加一些随机字符串来演示一下。
我们将在下一节讨论隐私问题,因为目前看来,每个12年级学生都能看到其他9年级学生的完整成绩记录。这可不是我们想要的!
但从好的方面来看,分布式账本可以让每个高年级学生确保在网络中传播的评分测试的有效性。
这种排序系统是相对的,而非绝对的。区块的顺序比它们被添加到链上的时间更重要。正如我们上面讨论过的,时间戳太容易被复制和模仿了。
让我们举一个所谓的双重支付攻击的例子。假设你的一个同学周一参加了一次数学考试,并且知道自己考得不好。你的一个同学会给这次考试的试卷打分,然后像往常一样将其广播到节点。
你的同学那天晚上拼命学习,第二天又来参加另一个班的同一场考试。由于老师没有认真听讲,她可以说服老师她前一天没到场。记住,老师不负责批改试卷,所以她无法快速地参考前一天的试卷。她可以重新参加考试,并与班上其他同学一起提交。
以下是区块链中区块的最新选项,Alice 尝试覆盖她之前的等级。
哦,对了,Alice现在需要成为网络矿工,并参与寻宝游戏。她现在是这个网络的第11位矿工了。
规则是“最长链获胜”。这意味着在第 11 天,网络的其他部分可能正在努力添加一个包含最新交易集的新区块。但 Alice 会努力“分叉”这条链,并在第 10 天添加一组新的交易集,其中包含 19 笔共同交易,并用她的新测试分数替换旧测试分数。
分叉意味着她正在尝试构建一条新的最长链,而不是网络其余部分认为的最长链。
如果她能在当天的寻宝游戏中获胜,然后第二天再回来再次获胜,她将拥有最长的链条。
这是“工作量证明”系统价值的一部分。由于Alice是网络上11位矿工之一,她连续解决两个区块的概率大约为1%。而她投入所有精力却一无所获的可能性高达99%。这显然不是一个好的激励机制。
这也是为什么区块 ID 和之前的区块 ID 比特定日期更能起到标记作用的原因。如果 Alice 在她第二次秘密参加测试的那天赢得了比赛,那么当天的所有新测试最终仍会存储在区块链中。他们只需要再等一天。
介绍公钥和私钥
到目前为止,我们已经介绍了所有允许分布式高中学生管理自己成绩的机制。我们只缺少一个重要的东西——隐私!
目前,每个学生的成绩都永远暴露在区块链上。如果这是一种货币,那么每个人的资产很容易就能被查出。这不是我们想要的。
同时,透明度是让个人对不公平评分和其他欺诈行为负责的好方法。
这就是为什么比特币使用具有公钥和私钥的加密系统。在高中,你可能已经习惯了几乎每个走廊上都排列着的储物柜。
好吧,在比特币中,私钥和公钥的组合数量(本质上)是无限的。所以,想象一下,这所高中的墙上排列着你在公寓楼里看到的那种小邮箱。
它们覆盖了整所学校的每一面墙。而且,由于储物柜的总数是无限的,所以学校里的每个学生都可以拥有无限数量的储物柜。用数学术语来说:
无限制/30名学生=无限制
你看过《哈利·波特与凤凰社》吗?
就像“预言大厅”里的场景一样——看似无边无际。
无论如何
为了简单起见,我们假设每个学生每个需要参加考试的年级都有一个邮箱。如果学生是九年级,那就意味着他们正在使用九号储物柜。
让我们回到我们的交易,安迪对爱丽丝进行评分。
我们的全节点,优秀的学长们,必须首先评估Andy是否有资格担任九年级数学试卷的批改工作。Andy需要证明自己。
问题来了——如果安迪兴高采烈地向网络宣布他已经给爱丽丝的作业评分了,他就有可能暴露爱丽丝的真面目。万一她不及格怎么办?她可不想让全世界都知道这件事,永远都不想!
所以,他必须在保证两人匿名的情况下进行广播。他可以随机地把一张纸条塞到其中一个节点上……就像80年代高中电影里大多数谣言的开头一样!
然后完整节点会与网络的其余部分分享这个谣言。
这时,我们的公钥就派上用场了。当安迪把一张关于他考试成绩的纸条偷偷塞到网络上时,他实际上是在说:
“我现在的邮箱地址是126900trl。
为了证明我在考试当天在场,这是老师给我的用于评分此特定测试的答案。(数字签名)
为了证明我确实是九年级代数班的学生,以下是每年一至八年级数学课的期末考试成绩,以及每场考试的答案。(交易链)
我将把测试发送到邮箱 856734pok”
这回答了两个关键问题:
- 发件人是否是其声称的真实本人?
- 寄件人是否具备寄件资格(评级测试)?
为了回答第一个问题,比特币使用了数字签名。数字签名对于每笔交易都是唯一的,由交易ID和私钥的哈希值组成。在这种情况下,它有点像考试密钥——只有在考试当天在场并且老师给你的情况下,你才能拥有它。
对于第二个问题,请记住,比特币中没有“账户”或“账户余额”的概念。如果有的话,Andy 只需分享一个证明他有资格的 ID 号即可。
为了证明这个特定的公钥(安迪的公钥)具有足够的授权,他必须分享一个所有全节点都可以验证的测试历史记录。这样,每个人都可以验证他完成了一至八年级的课程。安迪还必须提供每门测试的答案,以证明他当时确实在场。这被称为交易链,我不会在这里详细介绍,但它是验证的重要组成部分。
在 Andy 的交易被验证并被包含在已确认的区块中后,他可以在公众不知情的情况下将测试放入 Alice 的邮箱中。
正如你在上面的交易中注意到的,安迪必须访问过去8年的测试!这个储物柜系统只允许安迪访问他的测试。
安迪有一套8把私钥,每当他开始新的一年时,他就会打开另一个储物柜,将当年的成绩放进去。
其他人可以将他最新的测试结果放入他的储物柜中,但只有他才能检索结果。
像Coinbase这样的比特币软件允许您在钱包中创建多个公钥/私钥组合。这提高了安全性。您永远不想泄露您的私钥,因为私钥是访问已转给您的比特币的唯一途径。与传统银行不同,如果您忘记或丢失私钥,您将无人可求助。比特币将被锁定。
最后的想法
回顾一下,我们有:
- 测试(交易)
- 答案(数字签名)
- 九年级学生(发送者和接收者)
- 12 年级学生(完整节点)
- 校长(区块链创造者)
- 无限邮箱(公钥/私钥)
- 无教师(中央集权)
- 无报告卡(账户/账户余额)
该系统的大部分内容都围绕着“无需信任”的概念,正如您可能已经从其严谨的制衡机制和激励机制中看到的那样。在传统的银行或公共教育管理模式中,对中央权威的信任至关重要。为了将控制权交还给个人,节点必须具备大量的冗余度以防止欺诈,同时还要建立严谨的安全协议以防止黑客入侵系统。
然而
,这种分布式系统可能会彻底改变许多行业处理数据的方式,并可能预防工伤事故、医疗事故和财务损失。
如果
您还没有注意到,所有全节点上都存在大量重复工作。在验证和确认交易以及尽快猜测“工作量证明”答案的过程中,系统消耗了大量的能源。据估计,比特币网络消耗的能源与丹麦全国相当!但这对于达成共识和维护挖矿的完整性也是必要的
。
获得更多视觉解释
你喜欢这个教程吗CodeAnalogies 博客的其他内容,获取更多 Web 开发教程。