区块链的一个分布式的数据库,具备去中心化、匿名性、开放性以及不可篡改等特点。链上 的交易一经确认就会永久存储,并且无法更改。那么区块链上数据是如何做到不可篡改的呢?
1. 区块链是怎么构成的?
简单说来,区块链是由区块和链构成的。
区块包含区块头和区块体两部分。区块头里面包含区块的基本信息,如时间戳、版本号、随 机散列值、父区块头哈希、默克尔树根哈希、挖矿难度等。区块体里面就是打包的交易,这 些交易是钱包用户用私钥签名后的数据,即用户之间资产的转移,但除用户外,还有一笔交 易就是矿工的,交易金额是此区块奖励加上区块内所有交易者支付的手续费总和。
每个区块头都包含了上一个区块头的哈希值,并通过时间戳和版本号彼此之间相互连接,就 形成了区块链。
2. 区块链如何做到不可篡改?
区块链的不可篡改是指已经发生的交易记录是不可被更改的, 在我们知道区块链的构成后, 拆分开就是区块头和区块体的不可篡改。
2.1 区块头
区块头记录着上一个区块的随机散列值(也就是哈希值),这个哈希值是由上一个区块的交 易信息和时间戳经过哈希算法生成的,这时全网矿工通过算力计算区块头的哈希值,谁先计 算出来就可以打包交易并通过广播的形式同步全网。而上一个区块内的数据发生变化,就会 和原区块的哈希值不一致,不会被下一个区块确认。
2.2 区块体
区块体的不可篡改是由哈希函数决定的,区块体中包含很多交易,这些交易是通过默克尔树 连接在一起,其中任意一笔交易发生变化,都会使默克尔树根的哈希值改变,从而使下一个 区块头发生改变。Bitcoin 使用的哈希函数是 SHA-256 算法。
由此可以看出,要篡改区块链中的交易数据,就会直接导致默克尔树根发生变化,接着下一
个区块头的哈希值也将改变,变得不合法,需要重新计算新区块头的哈希值。而新区块头哈 希值发生变化,又会导致下一个区块头发生变化,造成数据坍塌,并且不会被全网接受。
而如果真要对数据进行篡改,理论上需要全网 51%以上的算力才有可能达成,但在足够健壮 的网络中,要实现 51%算力攻击基本是不可能的,并且也不符合攻击者自身利益。
3. 与中心化网络区别
在中心化网络中,数据库由中心机构操纵,新增发行、修改记录、冻结流通等都是可被操控 的。中央银行每年都可以新增法币,并且可以冻结任何人的银行资产,相对分布式的数据库 而言,中心化网络修改数据只是一串代码的事。
而在区块链中,人人参与记账,所有交易记录及时同步全网,每个人手中的账本都记录同样 的数据,并且没有一个中心化机构操纵,所以当某个人篡改手中的账本时,并不会影响其他 人的账本记录,同时全网遵循多数服从少数原则,使得数据不会被篡改。
例如,Bob 向 Tom 借钱 500 元,为了防止 Bob 赖账,Tom 邀请中间人 Nancy 作证。而事后 Bob 向 Nancy 说只要帮他耍赖,就分 Nancy200 元,出于利益关系 Nancy 同意了。此时, Tom 无凭无证,就只有认栽,Nancy 在这里面扮演的就是中间人角色。
而如果这个借钱过程,以广播的形式向所有人同步,那么每个人都会记住 Bob 欠 Tom500 元,此时 Bob 就没办法抵赖了。
4.区块链有哪些应用?
区块链凭借其不可篡改的特性,在众多领域得到应用,如电子身份、供应链、转账汇款等。 在电子身份上,所有人的认证信息可直接写入区块链中,并且广播至所有节点,这时信息的 真实性和确定性就得到保证,并且不会有任何改动。同样,对于供应链也是如此,可以解决 供应里不透明、低效率、信息作假等问题。
总结
区块链的不可篡改解决了传统网络中数据作假、篡改数据、数据不透明等问题,目前也得到 了众多的应用。但需要我们注意的是,并不是所有的区块链网络都是如此,比如联盟链或私 有链,由于参与人数较少,半去中心化或中心化的治理方式,其链上的数据也不能做到绝对 的不可篡改和透明。