来源 | Hacker Noon
编译 | 张问
编辑 | 杨舒芳
如果你家不是刚接上网的话,你肯定听说过比特币、区块链这样的词了。毕竟它们曾经是媒体最喜欢的话题。不过还是有朋友认认真真地看完我的文章,问我,“你写的东西是啥啊,我怎么一点也看不懂?”
如果想要粗略地了解什么是区块链,下面这文章会非常适合你阅读。
有一天,你正躺在家里看剧,突然电话响了,一看是你朋友小明,他正在外面旅游。
“喂,哎我这儿玩得没钱了,你给我打点钱。”
“……行。”
然后呢,你可以用各种办法给小明打一笔钱,比如银行APP、支付宝,或者去银行柜台。完事儿以后,你的银行账单上会记录,“你给小明转账1000元。”
正常吗?太正常了。合理吗?非常合理。难道刚才真的有10张100块纸币从你的钱包里飞出去,飞到小明的钱包里吗?没有。只是银行在你的账户余额上减了一个数字1000,在小明的账户余额上加了一个数字1000。
当然,一个非常重要的前提就是,你十分相信银行!
但是,你有没有想过,如果哪天银行出了问题怎么办?比如,银行着火了?所有数据都丢了?你只想转1000后来发现系统出错你少了8000?再或者,银行故意弄错,你怎么办?
那我们就要想个办法,不通过第三方,我们可以控制自己的钱。具体什么办法?估计你可以猜到,就是连卖菜大妈都在说的——区块链。
那这个东西到底怎么用?
我们找了10个人,我们都不想再通过第三方控制我们的钱,要自己做主。所以我们10个人成了一个团体,我们有各自的账号,但我们不知道对方都是谁。方便起见,这10个人就叫1号,2号….10号。每个人手里有一支笔,和一张空白的纸。
突然,2号决定要向9号转一笔钱,于是2号大喊:“我要转给9号十块钱,请大家记下来!”这时候,每个人——注意,是每个人,都会检查2号的账户余额是不是够10块钱,如果够,就在空白的纸上写“2号转给9号十块钱”,一笔交易就这样完成了。
接着,一笔一笔交易接踵而至,还是一样,每当交易发生,发生的人就会向其他人大喊公告,其他人听见后,就会记在纸上。
但是,一张纸就这么大,可能写几行就满了,记满以后呢?很简单,放下这张,换下一张纸。
好了,目前为止,不难理解吧?那你知道,为什么他们要大喊,要每个人都记录吗?
这就是为了保证每个人的记录的内容都是一样的,如果有一个人的记录和别人的不一样,就说明他记错了。这一点非常关键。
现在,我们把场景放在网上。我们10个人形成了一个网络,每个人有一个文件夹,我们会把记录好的纸放进这个文件夹中。不过在放进文件夹之前,我们要对纸进行一项工作,密封。
为什么密封?因为放进文件夹后,其他人也会看到这张纸,也就是他们有副本。密封,就是为了永远没有人可以更改这张纸上记录的内容。
怎么密封?用每个人都同意的一把秘密钥匙,你可以理解成盖了一个独一无二的章,其他人看见这个章就知道是被密封的。也就是说,他只要相信这个章,他就会相信这张纸上记录的内容。
(行话里,我们说的密封,就是挖矿,这里简单理解就是密封,以保护记录内容)
那密封具体怎么操作呢?往下看,这块内容实在是太有意思了。
想象一下,有这么一个机器,你从机器左边放进一个装着月饼的盒子,从机器右边会出来一个装着可乐的盒子。像不像魔术?那我们就姑且先叫这个机器为“魔术机器”。
(行话里,魔术机器,就是哈希函数)
假如,你从左边发送了一个数字“4”,那么右边就会出来一组字母“dcbea”。你需要知道的是,这是一个不可逆的过程。也就是说,你单单知道右边是dcbea的话,你是不会知道左边是什么东西的。
那我问你一个问题:现在想要右边出来的东西是以三个0开头的,比如000ab,或者00098,你怎么办?
你已经知道,从机器的右边是不能推导出机器左边的东西的,对不对?最后你终于想出了一个办法,每个数字挨个儿试试。
你试了好多好多数儿,237,不对,9082,不对…..试了几千次,终于,你找到了,72533。
很困难,对不对?试了好几千次啊,饭都没吃。那现在,你应该知道了,如果给定右边,想推测出左边,是非常非常困难的。但是,如果我问你,“这个数字72533放进左边,右边会出来3个0开头的东西吗?”这个问题就很简单了,你只要试一下就可以了。
所以,你了解到,这个魔术机器的一个属性;给定输出,计算输入非常困难;但给定输入和输出,很容易验证输入是否能够导出输出。
说了半天,这个密封有什么关系呢?我们将用这台魔术机器生成印章。瞧好了!
我给你一个数字20893,然后问你:“你能算出一个数字,加上20893以后,放进机器里,然后右边输出一个以3个0开头的东西吗?”
又来?老办法,挨个儿试试。
又过了几个小时,又试了几千次,饭又没吃,你终于发现了一个数字21191,当加上20893(即21191 + 20893 = 42084)并送进机器时,会产生一个满足我们要求的词。
在这种情况下,数字21191就是20893的印章,当纸上写着20893的时候,为了密封这张纸,不让被人修改内容,我们会在上面盖一个“21191”的章。
(行话里,这个章就叫工作证明,PoW,就是这个数字证明了他为了算出这个数字,有多努力工作)
如果有人想要验证这张纸的内容是否被更改,他要做的就是把密封编号加上密封内容,送进魔术机器里,看看能不能的到以3个0开头的东西。如果能,那就是没有被改动,如果不能,那这张纸就可以扔了,因为内容已经不可信了。
按照这种方法,密封我们记录的东西。我们只需要找到一个数字,加上我们记录的内容,得出一个以3个0开头的词,就好了。
其实,我说的这个内容简化了很多,实际上要比这个复杂得多。
看完这个过程,你是不是稍微明白一点了。
我们再回到记录转账交易的时候,当我记录满一页纸,打算把它放进文件夹换下一页纸的时候,需要密封,你知道了对吧。这个密封就是算一个数字,并且每个人都可以算这个数字。
当我写满纸后,我们十个人都可以去算这个密封数字,谁先算出来,就喊出来公告大家。当大家听到数字的时候,其他人马上去验证,看看对不对,对的话,这张纸就算密封好了,放进文件夹。
不过,假如说7号这个人,他算好了密封数字,喊出来以后,大家一验证发现,不对!这怎么回事?
有几种情况:他可能是听错了大家喊的转账交易,还有可能他听完了以后写错了交易记录,还有可能,就是他故意想欺骗大家。
不管怎么样,7号的结果只有一个,就是把他写的那页纸撕了,复制别人的。否则的话,他就不能继续参与记录。
那么,为什么大家都在计算密封数字,而不是闲等着呢?反正最后都会有人喊出来,验证就好了。
这就是这个体系里牛的地方,最先算出来的人,会耗费大量的时间和电力,因此他会因此会得到奖励,以鼓励他努力工作。比如2号先算出来密封数字,而且是正确的,他就会得到1美元。实际上,这个奖励,就是现在连出租车司机都在说的——比特币。
这就是伟大的比特币,先算出数字来的人,会奖励一块比特币。而奖励,会让每个人都努力工作。
一张纸被写满——算出密封数字——得到奖励——放入文件夹——新的一张纸又被写满…...循环往复,周而复始。
把每张纸看成一个区块儿,文件夹就是一张张纸连起来,所以又叫做——区块链。
网友评论