今天,读到一篇文章,非常浅显易懂地举例说明了节点、分布式记账、区块链等相关知识。我觉得非常好。仅复制过来,作为学习参考。
一. 我们来假设一个场景---某所学校里的一个班级。阿聪老师为了激励同学,会对表现良好和成绩进步的同学奖励小红花,这些小红花可以在班级的书架里面兑换动漫书、小说或者漂亮的文具等等。此举很受学生们的欢迎,慢慢的同学之间的一些交易,也开始用小红花作为交易媒介。比如小强要借我的《火影忍者》,就要支付小红花给我,我得到的小红花就可以去班级的书架上租我爱看的小说。这样一来,小红花就成为了我们班级的货币。
但是这个体系最终却崩溃了,因为有同学为了能多换书籍和文具,开始自己制作小红花。小红花的量越来越多,超过了阿聪老师往书架补货的速度,最终东窗事发,导致同学们再也不相信纸片小红花了。
二.看到这种情况,阿聪老师想了一个办法。不再用实物形式的小红花了,而是记账!每个同学都有一个属于自己的“小红花账本”,同时在班长那里设置“小红花总账”。当交易发生的时候,同学在班长的见证下,填写自己的账本。班长看到一切正确,就把这笔交易记录在“小红花总账”上。比如,我想租借小明同学的漫画,我要支付给他1朵小红花。那么我就在我的账本上记录“小红花-1”,小明在他的账本上记录“小红花+1”,然后我们去拿给班长看,班长看后觉得没问题,就在“小红花总账”上记录这笔交易。如果有同学想偷偷修改自己的账本,但是跟班长的总账对不上,就会发现问题。
但是这个货币体系却崩溃了,因为突然有一天,有同学发现跟班长同桌的女生总是有用不完的小红花。这个过程我可以写一万字,就不多说了,反正你懂的。
三.阿聪老师确实是聪明的老师,看似很难的问题,阿聪老师想出来一个绝妙的解决办法。(有人可能会说,让纪律委员监督,这是治标不治本的。)
阿聪老师的办法如下:
第一, 不再设立总账。
第二, 每一笔交易全班同学都要记账,不论这笔交易是否涉及到你。
第三, 每天下午全部课程结束后,全班同学一起计算今天发生的交易。
第四, 每天最先计算出来的同学,奖励2朵小红花。
第五, 在每天计算之后,一笔交易只有与绝大多数同学记录的一致,才能被承认。
举个例子:我想租借小雪同学的小说,需要支付给小雪1个小红花。我把这笔交易记在我的账本上,然后把付款的单子传递给前后左右的同学,收到我单子的同学记录这笔交易,然后再传给他们周围的同学,直到全班都记录了这笔交易。这样一来,有人要偷偷修改账本就很难了,他必须与全班同学的账本对账,只有绝大多数(超过半数)的同学账目能跟你对上(也许有个别同学记错账),这笔交易才能得到认可。同时还调动了同学们计算账目的积极性,因为最早计算出来的同学有奖励。
哈哈,现实生活中,不会有这么变态的班级和老师啦,我就不再继续拓展了。我们来看这个模拟的场景。
① 这个场景中,账本上的小红花就是一种数字货币,相当于比特币。
② 全班同学组成的网络就是一个p2p网络。每个同学就相当于一个节点。
③ 同学+账本共同组成的系统就好比一个区域链。
④ 不存在一个保存在班长那里的“小红花总账”,这就是去中心化。
⑤ 最先计算出来的同学会得到奖励,这个就是挖矿。
⑥ 有个同学用计算器,算的比别人快,这个计算器就相当于矿机。
⑦ 如果同学的账本上面都不写自己的名字,而是用自己想的代码表示,这就是匿名性的体现。
四.现在我们把班级的例子搬到现实的网络世界中来。就是这个样子:
每一个记账的同学,就是一个节点。在网络中,用户在电脑上运行比特币客户端软件,这样的电脑称为一个节点(node)。这些节点联系在一起,就形成了一个p2p网络。这些网络的节点都参与记账,就形成了一个分布式存储的系统---区域链。
在网络中,安全性是一个重要的考量。比特币系统采用“密钥对”来保证安全性。密钥对就是一个私钥对应一个公钥。
五.回到班级的例子中,假设每个同学都有自己的密码(私钥),然后去阿聪老师那边根据私钥领取一个对应的公钥。这个公钥就作为童鞋们的账户名和地址。我要支付给小明,就填写小明的公钥收款,我的公钥汇款,其他同学看到我的公钥汇款,然后可以去阿聪老师那边验证,这个公钥是不是真实的。是不是随便瞎掰了一个账户。不过我的私钥他们不知道。
网络中也是这样。每个参与者,随机生成一个字符串,这是你的私钥,然后这个私钥通过转换变成公钥(也是一个字符串),这个公钥就是你的比特币账户。我向其他人转账的时候,我把单子发给其他的节点,并且传播到全网。网络上的其他节点可以使用对应的公钥对交易进行验证,看看这个账户是不是来自一个合法的账户持有者。
这时候,矿工登场了,他们要验证交易。每10分钟的数据都被打包成一个“数据块”。就好比班级里面计算每天的数据一样,在比特币系统,是按10分钟的交易数据了计算的。
计算的方式是用哈希函数。这个不多说了,计算的胜出者,就会得到一定比特币的奖励,这个奖励最初是50比特币,今后每产生210000个区块,比特币数量都会依次减半。直到第33次减半时,每个块产生0.0021个新比特币直接减为0个。我们知道比特币大约每10分钟产生一个区块,而210000个10分钟接近4年。所以比特币挖抗的收益是大概4年降低一半。现在已经降低了2次,目前的奖励是12.5个比特币。
至于为什么这么设定,这个就要问比特币的发明者—中本聪了。如果你能找到他的话。