区块链账本
区块链表示一种特有的数据记录格式,区块链就是“区块+链”,所谓的区块就是数据块的意思,每一个区块之间通过某个标志连接起来,从而形成一条链,如下图:
如图所示,一个区块一个区块的衔接,大家可以发现在生活中有很多相似的记录方式,比如企业会计账本,每个月会将记账凭证汇总并且月结,这样一段时间下来,就按月形成了一个连续账本,每个月的数据就相当于一个区块,区块与区块之间通过年月进行串联。以比特币来说,大约10分钟产生一个区块,区块中主要包含了交易事务数据以及区块的摘要信息。我们看下比特币中区块链数据组成示意图:
通过上图我们可以看到比特币中区块链账本的数据组成及关系,并且可以看到区块数据在逻辑上分成了区块头和区块体,每个区块头中通过梅克尔根(梅克尔根也称为梅克尔根哈希值,具体概念后续详细介绍,暂且可以认为是一个区块中所有交易事务的集体身份证号)关联了区块中众多的交易事务,而每个区块之间通过区块头的哈希值串联起来,这是一个很有趣的数据格式,它将连续不断的数据分成一个一个的数据块。在下载同步这些数据的时候,可以并行的从各个节点来获得,无论数据的先后,到达本地后在根据身份证号进行组装起来就行,另外,这是一种链条格式,链条最大的特点就是一环扣一环,很难从中间去破坏。比如有人篡改了中间的2号区块,那就得吧2号区块后的所有区块全部改掉,这样的难度非常大。在区块链系统中,一个节点产生的数据和更改的数据要发送到网络中其他节点去确认,而其他节点是不会确认通过一个被篡改的数据的,因为跟自己本地区块链账本匹配不起来,这也就是区块链数据不可篡改的一个很重要的设计。
这种格式还有一个巧妙的地方,如果这个数据总是由一个人来记录那就没什么意思了,但是如果放到网上,大家共同来维护这个数据,这也才会体现出价值,每个区块由谁来记录或打包,可以有一个规则,比如掷骰子,大家约定好一个规则,赢者就让他来记录下一个区块的数据,为了补偿她的劳动投入,奖励他一部分收益,比特币就是使用了这样的原理来不断的发行新的比特币出来,奖励给打包记录区块数据的那个人的比特币就是新发行的比特币,这个也叫做挖矿。