区块链-为何区块链是不可篡改的

目录:http://www.javashuo.com/article/p-nitsjfvy-ey.html安全

区块链的数据结构是由包含交易信息的区块按照从远及近的顺序有序连接起来的。区块被从远及近有序地连接在这个链条里,每一个区块都指向前一个区块数据结构

区块链常常被视为一个垂直的栈,第一个区块做为栈底的首区块,随后每一个区块都被放置在以前的区块之上。用栈来形象化表示区块依次堆叠这一律念后,咱们即可以使用 一些术语, 例如:“高度”来表示区块与首区块之间的距离;以及“顶部”或“顶端”来表示最新添加的区块。区块链

对每一个区块头进行SHA256加密哈希,可生成一个哈希值。经过这个哈希值,能够识别出区块链中的对应区块。同时, 每个区块均可以经过其区块头的“父区 块哈希值”字段引用前一区块(父区块)。加密

也就是说,每一个区块头都包含它的父区块哈希值。这样把每一个区块连接到各自父区块的哈希值序列就建立了一条一直能够追溯到第一个区块(创世区块)的链条。.net

虽然每一个区块只有一个父区块,但能够暂时拥有多个子区块。每一个子区块都将同一区块做为其父区块,而且在“父区块哈希值”字段中具备相同的(父区块)哈希值。一个区块出现多个子区块的状况被称为“区块链分叉”。blog

区块链分叉只是暂时状态,只有当多个不一样区块几乎同时被不一样的矿工发现时才会发生。最终,只有一个子区块会成为区块链的一部分,同时解决了“区块链分叉”的问题。尽管一个区块可能会有不止一个子区块,但每一区块只有 一个父区块,这是由于一个区块只有一个“父区块哈希值”字段能够指向它的惟一父区块。get

因为区块头里面包含“父区块哈希值”字段,因此当前区块的哈希值也受到该字段的影响。若是父区块的身份标识发生变化,子区块的身份标识也会跟着变化。比特币

当父区块有任何改动时,父区块的哈希值也发生变化。这将迫使子区块的“父区块哈希值”字段发生改变,从而又将致使子区块的哈希值发生改变。而子区块的哈希值发生改变又将迫使孙区块的“父区块哈希值”字段发生改变,又所以改变了孙区块哈希值,以此类推。引用

一旦一个区块有不少代之后,这种瀑布效应将保证该区块不会被改变,除非强制从新计算该区块全部后续的区块。正是这样的从新计算须要耗费巨大的计算量,因此一个长区块链的存在可让区块链的历史不可改变,这也是比特币安全性的一个关键特征。支付

你能够把区块链想象成地质构造中的地质层或者是冰川岩芯样品。表层可能会随着季节而变化,甚至在沉积以前就被风吹走了。可是越往深处,地质层就变得越稳定。到了几百英尺深的地方,你看到的将是保存了数百万年但依然保持历史原状的岩层。

在区块链里,最近的几个区块可能会因为区块链分叉所引起的从新计算而被修改。最新的六个区块就像几英寸深的表土层。可是,超过这六块后,区块在区块链中的位置越深,被改变的可能性就越小。在100个区块之后,区块链已经足够稳定,这时Coinbase交易(包含新挖出的比特币的交易) 能够被支付。几千个区块(一个月)后的区块链将变成肯定的历史,永远不会改变。

摘自《精通比特币》