可以通过(https://blockchaindemo.io/) 运行演示,有助于更好地理解区块链。
整理如下:
关于区块链,首先应明确以下几点:
区块链是一种技术,区块链 ≠ 比特币,比特币是区块链的第一种应用。
区块链维护一份连续不断的交易记录文档,可以溯源,不可更改
每一笔资料都被称为是一个区块,每一个区块可以包含一笔以上的交易
每个区块都会包含上一个区块的哈希值,每个区块都会与另一个区块产生连接,所有被连在一起的区块被称为链
区块链经过复杂的密码学运算,复杂的密码学运算可杜绝记录串改
产生区块的机器叫挖矿机
区块链是分布式数据库,具有去中心化的特性
所有的节点共同维护这个分布式数据库
超过50%的节点验证过的区块才是合法的区块
任何一笔资料被篡改都将破坏区块的完整性
区块
SHA256 Hash
哈希看起来像一堆随机数字和字母,可以唯一标识数据或数据的“数字指纹”。
哈希的属性:
哈希有一个固定的长度。
相同的数据始终映射到相同的哈希。
不同的数据总是映射到不同的散列(在实际限制内)。
很容易计算,但很难倒推,即将哈希转换回数据是不可行的。
数据的微小变化会导致哈希值发生很大变化。
nonce:
满足一定难度的所生成的随机数,哈希值是由block、nonce、data共同生成的。
如果哈希值前面有n个0以上,才算满足难度n,挖矿成功。改变nonce值,直到满足前面几位为0时算是挖矿成功。挖矿就是计算nonce值的过程。从0开始遍历nonce值。难度是要求哈希值前面的0的个数。难度就是哈希前导零的个数。
挖矿
确定此随机数(nonce值)的过程称为挖矿。
我们以0的nonce开始,并将它递增1,直到找到有效的散列。
随着难度的增加,可能的有效散列的数量减少。由于可能的有效哈希值较少,因此查找有效哈希需要更多处理能力。
添加新块
向区块链添加新块时,新块需要满足这些要求。
阻止索引1大于最新的块索引。
块的pre-hash等于前一区块哈希。
块哈希满足难度要求。
正确计算块哈希。
网络上的其他对等体将向块链添加块,因此需要验证新块。