现在,假设我们40个人搞了一个虚拟部落,每个人都是这个部落的一个节点。有一天我发了一个白皮书,设计了一个游戏,叫部落寻宝联盟,号召大家一块儿来参与。
游戏是这样的:在这个虚拟世界的某个地方,埋藏着一个巨大的宝藏,一共是21000枚金币,我们40个人,每个人都可以去挖矿,去获得这些宝藏。
游戏开始之前,有些规则我们要知道。
第一,这个挖矿不是用掘土机,而是用计算的方法。要求你在一定时间内解决一定的数学计算,然后去得到一串密码。这个密码对应着那个宝藏里的一枚金币,我们姑且叫它“联盟币”吧。这种计算不是我们用纸和笔能够计算出来的,一般是要依靠计算机,算力越高,计算的速度就越快,也就是挖矿的能力越强。
第二个规则就是,在一定的时间内解决了一定的数学计算,得到一串密码以后,这个密码并不能保证你获得那个金币。为什么呢?因为我们要建立一个绝对公平和权力制衡的共识机制。所以,你得到的这串密码要马上向我们这个部落里的40个节点同时公布,然后所有的节点都对你进行验证。只有验证全部通过,你得到的这个密码才会加上数字签名,同时存储在所有人的账本上,也就是,宣布一枚金币已经被挖出来了,归属于你了。
所有的寻宝活动都要遵循这样的原则,然后通过全体验证以后,所有的数据就按照时间的顺序被存储记录在所有人的账本上,形成一个相互链接的区块。
这里有一个非常有趣的地方,你发现了吗?现在我们这个部落里都是透明的,因为40个人都知道财富结构发生了变化。但是,它又不是透明的,为什么呢?因为所有的信息不过是一串加密的数字。所以,我们并不知道这个币的所有者在现实世界里是谁。但是,你用这些挖出来的币可以和我们部落中的任何人点对点地进行交易,每一笔交易都会被记录在所有人的账本上。但是,同样地,你也不会知道和你交易的是谁。
换句话说,在我们这个联盟里,每个人的行动都是透明的,但又是绝对隐私的,没有任何一个中心化的信用主体,所有的节点(人),都具有同样的知情权和验证权。
到这里的时候,有同学可能会问,那万一我通过计算挖矿,得到的密码和另外一个同学得到的一样,怎么办呢?就和我们去买火车票,居然买到了同样一个座位一样。这个你不用担心,你挖矿最后生成的那串密码,是由密码学中的哈希函数给出的。这个函数有一个非常有趣的特征,就是不管你输入任何大小的字符串,最后得到的是一个固定大小的输出。
比如说,我们假定自己输出的密码必须是256位的数字,那么,不管你现在输入一个五位数,或者五十位数,最后得到的都会是一个256位的数字。
那么要得到两个完全一样的256位的随机数的概率是多少呢?这个概率小到没有办法描述,反正是比小行星撞地球的概率要小很多。
好了,这样一来,你就可以确定,你得到的那个密码基本上是独一无二,对应的财富当然也就是独一无二的了。
