第两百二十一章 区块链(3/3)

,必须先完成一个任务。

这个任务就是根据前一区块的一些信息加上新区快的一些信息,生成一个字符串s,选择一个字符串b,与s合并成“bc”,且要求“bc”的哈希映满足某个条件,比如映结果的前72位为0。

所以上面的第二步,除了一个个试以外是没有捷径的,而且结果是否满足要求可以快速试出。

举个例子就相当于给你一个银行卡,让你挨个试密码。

那你没有任何办法,只能000000到999999挨个试验,最后虽然能试出来,但也会花费大量时间。

而且你把试出来的结果告诉别后,别可以很快验证你的结果是否正确。

但是时间恰好是我们宇宙中最稀缺的资源。

因此可以调节这个难度,比如使得系统中所有平均每二十分钟才会有一台设备完成要求的任务,猜出符合要求的字符串b。

如此一来,撞车的概率就会大大降低。补充一句,这个难度是不断调节的,以适应硬件算力的提升。

虽然概率大大降低,但仍然无法排除存在撞车的概率。因此,区块链验证中最核心的思想就是——相信最长的区块链。

也就是在原有的到区块链n的况后,短时间内出现了两个不同的区块,这个时候,我们需要做的只有一件事,那就是等待。

因为同时产生区块的小概率事件,总不可能连续发生。

所以如果有想对区块链造假,那么他就需要一直抢先生成假的新区块,并广播出去。

这就要求造假者生产新区块的速度,要快于系统中的其他所有用户的生成能力之和。

换句话说,造假者需要用户有和其他用户算力之和匹敌的算力。

假设这个造假者拥有系统总算力的百分之八十,而剩下用户拥有百分之二十……

所以……这个假设显然不可能。如此一来,在造假者广播了一个假的区块后,就有百分之八十的概率先于其他用户生成新区块,然后连在自己之前生成的假区块后,此时造假才有可能成功。

但实际是,每个用户用的算力相比系统总算力都是微不足道的。

这就使得造假变得不可能,也使得造假的成本变得无法接受。

系统为了鼓励大家生成新的区块,于是在开始时就定下规则:每当一个新区块加主链,这个区块的发行者就会被赠与50个btc;然后每二十一万个区块后,奖励额度缩水一半;这也就解释了,为什么比特币上限不算多了。

因为这个机制牢牢限制死了比特币的总量,使得比特币不可能超发,滥发。