区块链入门一:什么是区块链 首先我们来了解下哈希(Hash)算法 这是百度的描述,简单来说就是一种不可逆的摘要算法,哈希算法的目的就是为了验证原始数据是否被篡改。常用的哈希算法有 根据碰撞概率,哈希算法的输出长度越长,就越难产生碰撞,也就越安全,区块链采用的是SHA-256。 那么区块链是怎么保证不可篡改的呢,下面将一步步分析。 区块分为区块头和区块体,区块体其实就是一个账本,里面是一条条的交易记录。 上图可以看到,就是一个区块体,记录的都是交易信息,第一条coinbase是个“旷工”的奖励。“挖矿”后续再了解。 那首先就要保证区块体的每条交易信息都是真实可信的,这里用到的是非对称加密算法对交易进行签名,这个说起来也不是一两句,后续再了解。这里只要知道,每条交易记录都是真实可信、不可造假的就行。 区块体所有的交易按一定规则汇总进行Hash,记录在区块头里。区块有个Merkle,就是记录区块体的Hash。这样区块体确认后就无法更改了,因为任何变动都会导致Merkle跟着变动。 区块头信息确认后,再对区块头进行Hash,形成Block Hash,这样整个区块的内容就确定了,并且不能做任何修改。区块头包含很多内容,其中有当前区块体的哈希,还有上一个区块的哈希。这意味着,如果当前区块体的内容变了,或者上一个区块的哈希变了,一定会引起当前区块的哈希改变。 那么区块和区块之间是怎么连接在一起形成区块链的呢? 如上图,Block Hash就是当前区块的哈希,而Pre Hash就是上一个区块的Block Hash。就是这样一个区块指向上一个区块形成了区块链。第一个区块由于没有前一个区块,所以它的Pre Hash是00…0000。 那么你可能会问了,不就是计算Hash嘛,计算机算出结果不是很快嘛,这怎么保证不可篡改?别急,接下来要说到一个概念,工作量证明机制。什么意思呢? 就是这个哈希不是随意算出一个哈希就可以的,它有一个规定。区块链协议规定,使用一个常量除以难度系数,可以得到目标值。显然,难度系数越大,目标值就越小,满足条件的哈希就越难算出。简单来说就是算出来的哈希必须是多个0打头的字符串,如:00000000000000000002bafbc1df86a30304852794f792ff95403e542566536b。随着难度增加,0的个数也相应增多,难度成指数级上升。 这一点对区块链意义重大。区块的Block Hash一旦得出,对区块的任何修改都会使哈希变动。而区块链是一个个区块紧密相连的,任何变动都会使区块连接断裂。正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。 (责任编辑:) |