• 区块链【6】如何防止篡改历史记录?


    在上一期中,我们了解了余额检查与双重支付,今天来聊一下另一个问题,假设有一个人想要篡改比特币记录,他不可能伪造别人的签名,但是可以删除某一条记录,比如说他本来付给了别人十个比特币,现在他想把这个记录删掉,伪造篡改这条记录,系统如何防止这件事的发生呢?

    首先,比特币遵守最长链原则,即以最长的链为主链,什么意思呢?有时会发生有多人几乎同时算出答案进行新块打包的情况,假设有2个人同时打包新块,那么区块链就会产生分支。

     

          这时候怎么办?哪一个算数?其实哪一个都不作数,大家随便选一个继续计算,直到下一个新块产生。

     

     此时,甲链成为最长链,此时甲链最有希望成为主链,所有人转向甲链进行计算,乙链将被废弃。那有人说,我就不去甲链,我就在我底下这条链往下走,行不行?其实也可以,但问题是全网的基本原则都是找最长链,除非你自己一个人可以对抗其余所有人,你一个人造的链比其他所有人一起造的链更长,从而成为主链,否则就是在做无用功。

     有了最长链原则,就可以防止篡改了。刚才我们假设某人想要删掉自己的一条支付记录,A付给B十个比特币。

     

     篡改伪造的唯一方法,是从这条记录之前的块,重新计算,重新打包。

     

    新块里不含A付给B十个比特币这条信息,可是伪造了之后别人不承认,为什么?因为这条链不够长,于是他需要在这条链上面继续算,什么时候他算的比全网其他人算的还要长了,你的链成为主链,才算伪造成功了。

    从理论上来讲,你是可以进行改动的,但是别人不承认,除非你的计算能力超过了全网其余所有的人,你伪造的链成为主链。

           比特币就是通过这种方法来防止篡改,即你一旦想篡改,便是跟全网的人进行对抗。

           想要篡改的块后面的链越长,篡改的难度就越大,所以一般大额的交易都要多等几个块,比如说等6个块之后,我们就认为基本上没有可能再去进行篡改了。

           今天就聊到这里,我们下期见!

    官网:http://www.lenbor.com
  • 相关阅读:
    Python操作MongoDB(PyMongo模块的使用)
    python 读取单所有json数据写入mongodb(单个)
    python 导出mongoDB数据中的数据
    Python连接MySQL的实例代码
    Python操作Mysql实例代码教程在线版(查询手册)_python
    Python MySQLdb模块连接操作mysql数据库实例_python
    python连接mysql实例分享_python
    my.cnf配置文件参数解释
    MySql增加字段、删除字段、修改字段名称、修改字段类型
    mysql 定时任务
  • 原文地址:https://www.cnblogs.com/lenbor/p/12696988.html
Copyright © 2020-2023  润新知