区块链数据真的不可篡改吗?
在第一篇文章中我们提到“由于去中心化的分布式结构中,每个节点都具有所有的数据信息,想要更改某一个数据块,需要同时至少51%的节点同意,非常困难。”本篇文章中,我们来看一下区块链上的数据是否真的无法篡改?
首先,先来了解一下什么是区块链节点?
区块链节点
节点是区块链应用技术里处理信息的基本单位,节点的作用是广播交易、记录交易。
那什么是区块链中的节点呢?负责维护区块链网络运行的终端都可以称之为节点,这个终端可以是手机以及电脑和服务器等计算机。但是成为节点的前提是需要加入区块链网络,并且能够参与区块链网络运行,能够广播交易、记录交易、存储数据等。一般节点具有几个特点:具有一定的存储空间、可视化终端、连接网络运行区块链应用程序。
在比特币系统中,有人说每个比特币钱包都是节点,也有人说如果不挖矿就不是一个节点。但是,小编认为,不挖矿的比特币钱包也是一个节点,只不过是个意义较小的节点。
区块链上的数据一定不可以篡改吗?
有朋友问,区块链具有不可篡改的特性,如果第一个创世数据就是错的呢,如何补求?
区块链中交易数据的全网确认依靠共识算法制定的规则。所以,如果想要更改数据,就要在规则里找漏洞。目前,主流的共识算法有POW、POS、DPOS、PBFT等。
51%攻击主要发生在以POW为共识机制的加密代币中。比特币区块链系统使用的是POW(Power of Work)工作量证明共识机制,通过工作量来竞争记账权利,即多劳多得,而工作量与计算机运算能力成正比。51%攻击意味着攻击者手中掌握的算力超过该区块链网络中其他所有成员的总和,即攻击者手中掌握着51%及以上的算力。通过掌握超过51%的算力,攻击者可以抢先完成一个更长的、伪造交易的链。在比特币系统中,只认最长的链。所以,伪造的交易也会得到所有节点的认可,假的也随之变成真的了。
但是51%攻击的成本很大。全网算力按照100P计算,矿机价格按照1T/8600元计算(这是目前最低的价格),51P矿机购买费用=100P * 51% * 1024 * 8600元=449,126,400=4.5亿。攻击成本远大于收益,这也就很大程度上保证了攻击发生的可能性基本为0。但虽然51%攻击发生概率小,并不意味着不会发生。
不过,这种攻击并不是万能的。它无法修改其他人的交易记录,无法阻止其他人的交易被发出去(交易会被发出,只是显示0个确认而已),不能改变每个区块产生的比特币数量,无法凭空产生比特币,不能把不属于自己的比特币发送给自己或其他人。发起51%攻击的节点仅可以修改自己的交易记录,使他进行双重支付(同一笔钱花两次),可以阻止区块确认部分或者全部交易,也可以阻止部分或全部矿工开采到任何有效的区块。
同理,POS(Power of Stake)是权益证明共识机制。POW是算力为王,而在POS中是权益为主。POS依然是基于哈希运算竞争获取记账权的方式,容错性和POW相同,是POW的一种升级共识机制,根据每个节点所占token的比例和时间,等比例的降低挖矿难度,从而加快找随机数的速度。
简单点说,节点记账权的获得容易度与节点持有的权益成正比,节点拥有的权益越多,越容易获得记账权。与POW中的51%攻击对应,POS中攻击者需要掌握全网51%的权益(token代币)才可能造成攻击伪造数据。但是拥有全网51%的权益比获得全网51%的算力还难。
DPOS(Delegated Proof of Stake)委托权益证明共识机制,是POS的升级。DPOS中全部节点参与选举出一定数量的节点(BTS中的DPOS代表节点是101个,EOS中的DPOS代表节点是21个)代替他们进行决策。这与人民代表大会制度类似,由全部人民选举出这些数量的人民代表,各人民代表之间平等。而参与选举的人民可以随时通过投票更换这些代表。如果代表想利用权利作恶,至少要获得全部代表节点中的51%同意。
PBFT(Practical Byzantine Fault Tolerance)实用拜占庭容错算法,全网容错节点数量为(n-1)/3,n为全网节点数量。即全网达成共识需要超过2/3的节点同意。意味着如果想要做恶,就要掌握全网2/3以上节点,难度很大。
综上所述,区块链上的数据伪造、更改的成本和代价太高,所以,理性自然人不会主动发起攻击,从经济利益方面保障了区块链数据的安全。
如果创世区块(区块链的第一个数据区块)里的数据是错误的,在考虑经济成本的情况下,是无法更改的,只能将错就错,或者放弃该条链。