在上一期中,我们了解了余额检查与双重支付,今天来聊一下另一个问题,假设有一个人想要篡改比特币记录,他不可能伪造别人的签名,但是可以删除某一条记录,比如说他本来付给了别人十个比特币,现在他想把这个记录删掉,伪造篡改这条记录,系统如何防止这件事的发生呢?
首先,比特币遵守最长链原则,即以最长的链为主链,什么意思呢?有时会发生有多人几乎同时算出答案进行新块打包的情况,假设有2个人同时打包新块,那么区块链就会产生分支。
这时候怎么办?哪一个算数?其实哪一个都不作数,大家随便选一个继续计算,直到下一个新块产生。
此时,甲链成为最长链,此时甲链最有希望成为主链,所有人转向甲链进行计算,乙链将被废弃。那有人说,我就不去甲链,我就在我底下这条链往下走,行不行?其实也可以,但问题是全网的基本原则都是找最长链,除非你自己一个人可以对抗其余所有人,你一个人造的链比其他所有人一起造的链更长,从而成为主链,否则就是在做无用功。
有了最长链原则,就可以防止篡改了。刚才我们假设某人想要删掉自己的一条支付记录,A付给B十个比特币。
篡改伪造的唯一方法,是从这条记录之前的块,重新计算,重新打包。
新块里不含A付给B十个比特币这条信息,可是伪造了之后别人不承认,为什么?因为这条链不够长,于是他需要在这条链上面继续算,什么时候他算的比全网其他人算的还要长了,你的链成为主链,才算伪造成功了。
从理论上来讲,你是可以进行改动的,但是别人不承认,除非你的计算能力超过了全网其余所有的人,你伪造的链成为主链。
比特币就是通过这种方法来防止篡改,即你一旦想篡改,便是跟全网的人进行对抗。
想要篡改的块后面的链越长,篡改的难度就越大,所以一般大额的交易都要多等几个块,比如说等6个块之后,我们就认为基本上没有可能再去进行篡改了。
今天就聊到这里,我们下期见!