至于区块链怎么实现的,很简单:
交易(数据)写在区块里。
第一个区块叫创世区块,写啥都行。
从第二个区块开始,每个区块的第一部分有前一区块的哈希值。此外,区块里的每一笔交易(数据),都有发起人的数字签名来保证真实性和合法性。于是,先前区块里的任何数据都不可被篡改,原因见上。
如何保证区块链数据保持一致?
中本聪在白皮书里面提到,简单来说,要想控制账本,得要先付出和投资,是得要一定数量以上的(51%攻击)。投资以后,投资所有人面临两个选择:乱搞然后毁掉比特币使投资打水漂,或者加入网络赚钱,并使网络变得更强大。理性人都会选择后者。
如果真有想破坏的人,也不容易做到,因为区块链的过往账本都存在,虚假修改账本很容易被查到。如果要把过往账本全部修改,就需要把整条链的哈希数都算一遍,这样即使拥有网络51%算力也都还是不够的。
如果不幸真的有这种事发生,那么我们还有一个办法补救,就是放弃这个所谓的主链,因为这个攻击者已经不被人信任了,所以从他那里产出的区块也就没有了价值,是不是主链又有什么关系呢,我们可以从所有被他拒绝的孤块组成的链上继续挖矿,类似于etc和eth的关系,而真实的数据全部存放在孤链上,这就是所谓的硬分叉。所以说,数据会被修改,但是真实的数据和虚假的数据会共存在两条链上。
到这为止有人可能会问:为什么要弄个链啊?直接所有数据加个哈希值不就行了?
因为这个数据库并不是静止的啊。
数据库的数据是会增加的,而每次增加的数据,就是一个区块,于是这些生成时间不同的区块,就以这种形式链在一起了。