能不能用最简单的方式讲一讲区块链( 三 )


十、恶意攻击及解决方案
那么比特币在什么时候会存在安全性问题?


能不能用最简单的方式讲一讲区块链



首先需要注意的是,
恶意节点哪怕获得了记账权,也无法发送错误的交易!
否则,其它节点不会承认它的记账权,而是继续进行计算争夺这个区块的记账权。
因此,恶意节点能做的事情是,通过分叉的机制,否认区块内已经确认的交易。通常意义上,我们认为若能控制超过51%的比特币算力,就获得了这种否认已被区块打包的交易的能力。
假设恶意节点A控制了51%的算力,想否认第N个块中的某笔交易,它就修改它的比特币节点,拒绝承认这个块,重新从N-1个块开始挖矿,并故意不打包这笔交易,强行开始产生分叉。因为A占有的算力比网络剩余的算力更多,A的分叉的出块速度一定会比主链快。比特币的共识是区块高度最高的链为主链,因此A否认别人交易的链将会成为主链。这样,之前已经获得一个区块确认的交易也可以被否定。
不过,这里需要强调的一点是,恶意节点不能只修改链中间的一个区块而不改变后续的区块。举个栗子,如果现在已经有5个区块,高度分别为1,2,3,4,5。如果恶意节点要修改高度为3的区块中的一笔交易,那么它必须连带的把区块3之后的所有区块全部都重新开始计算,而不是仅仅把区块3重新替换。
这也被称为区块链不可篡改的特性。这是因为每一个区块头都有一段数据,是上一个区块头的信息(例如区块高度、产生时间等)加密而成的。只要改动其中的一个区块,后面的所有区块头包含的上一个区块的加密信息就会无法对上。所以,如果要恶意攻击的话,必须将后面的区块全部重新挖出来。
能不能用最简单的方式讲一讲区块链

正是基于这种不可篡改的特性,恶意攻击方式并不是不能防范的,主要就是通过更多的节点确认数来进行防范。假设现在的块高度为M,而恶意节点要修改的交易在N,则M-N(M-N的值又被称为交易的确认数)越大,恶意分叉成功的时间也就越长,因为诚实节点在M的高度进行挖矿,而恶意分叉需要从N的高度重新挖,中间需要追赶M-N个高度。这也是为什么很多交易所要6个确认后才会显示余额,因为当6个确认后,占有51%算力的恶意否认交易理论上要超过20天才能成功分叉,这将给整个社区足够的时间采取反制措施。
所以,即使占有网络的绝大数算力也并不意味着就能为所欲为。
能不能用最简单的方式讲一讲区块链

十一、小结
区块链就这样伴随着比特币的诞生,而萌芽。
虽然比特币只是区块链技术的应用之一,但是没有比特币就没有区块链的诞生。比特币是跨时代的产品,通过巧妙的设定(分布式账本+工作量证明),形成了安全性非常高的共识机制,属于区块链1.0的代表公链。
这也是人类历史上,第一次实现真正安全的去中心化的交易体系。

|就是串联同步所有用户数据的数据库
■交易记录信息由区域内的大众来监督■所有人都在说区块链,好像这就是一个很自然的东西。其实,所谓的区块链,更确切的说应该是“区块+链”。
每一个区块中都包含了一段时间内全网交易的信息,那么一连串的区块就可以涵盖所有时间段内全网发生的全部交易了。这一连串的区块使用密码学方法相互关联,由此形成了一条类似于区块组成的链条,这便是“区块+链”的机制。
能不能用最简单的方式讲一讲区块链

细心的读者不难发现,这个机制本质上是建立了一个庞大的数据库。那么,这个数据库和传统的数据库有什么区别呢?
最重要的区别有两点:去中心化和高安全性。下面我们来一个一个说。
首先,对于传统数据库来说,都需要一个数据中心。比如每一家银行都需要建立自己的数据库来记录客户的账本,支付宝和微信背后也有一个巨大的团队来维护着各自的数据库,那么,这些机构所维护的各自数据库其实就是中心化的数据库,这些机构是怎么都不会交出他们手上的数据库的,数据就是生命啊,同时,他们也要为这些数据的安全性负责。
举个例子,如果你通过支付宝转账给木子大叔200元,那么支付宝的数据库中,你的账户应该相应的减少200元,木子大叔的账户中应该增加200元。如果支付宝的数据库出错了,你的账户减少了400元,木子大叔的账户只增加了100元,那么我们就应该手拉手一起去找支付宝兴师问罪了。

推荐阅读