一个例子彻底讲清比特币区块链工作原理
作为第一个区块链应用项目,比特币结合了大量的技术名词,如工作量证明、散列操作、区块等。
比特币
这次我们不再讨论区块链的名词了,我们用一个例子,从应用场景讲到解决方案,你了解了比特币的原理。
人生,你有一个朋友,到美国旅行,突然没有钱,联系你,让你给他汇款1000美元。只要把美元从国内银行兑换成美元并扣除手续费,你可能需要汇1100美元。也许你的朋友在两天之后才能收到1000美元的汇款。
你们想过没有,其实这1000块钱,也不是什么实物要运输,就是银行里面的一个帐目调整,却要花这么长时间,还有这么高的手续费。而更奇葩的是你把钱交给中介银行之后,实际上你和你的朋友对银行没有任何控制。它们可能会把错误的数字填错,或者是无意的。没有被控制的第三方显然存在着很大的安全隐患。
所以,世界上已经厌倦了这种效率低下、费用高昂的制度的人们最终要联合起来。就是记帐,不用中介,咱们自己记。假定有十个人,开始记帐。
十人记账
每人拿出一页开始记录每笔交易。登记过程中,例如有一笔交易有个人记错了,那么在核对时,以九人记录的结果为准。那么,当交易写满一页时,需要换一页新纸张继续进行记录时,这一页可以被理解为一个包含不止一笔交易的块。
那样写完后需要把这一页封起来,以便日后查阅。但如何封存才能保证以后看到的还是现在的记录,没有被篡改。因此,存储码有特殊的要求。
假定有一个魔法机器,每次你输入不同的值,输出的值也不一样。但要将输出值返回到输入值,可以认为实现不了。但通过输入获得输出值是非常简单的。那么现在假设要求输出满足10个0才能算出一个合格的封存码。因此,要不断尝试,才能得到符合要求的封存码,这个计算过程实际上就是做散列计算。
由于人人都在计算,最后总有一个人先计算,那么其他人实际上就是在重复计算。也许每个人都在等待其他人的回答。所以中本聪提出了一个方案,第一次计算出来会得到回报,这就是所谓的比特币。这被用来奖励第一个计算封条码的人。
最终还是有个问题,如果有人想修改前一天的记录,改过之后,还算了一个封条。那么这个时候呢,老铁?老中本聪又想出了一种办法,将前面一张纸的散列计算结果交给后一张纸,当当前的纸张有变化时,篡改者也必须重新修改,否则就会被发现。
因此,谁要想修改一张纸的记录,他就得把他后面的所有记录都重新做一遍。
因此,我们认为最长的链条是最完整的链条。