什么是区块链?
简单地说,区块链就是一种去中心化的分布式账本数据库
区块链没有中心服务器,每个参与节点(人)都是平等的且直接进行数据交换,数据产生后会被打包成一个一个的数据块,按照时间的先后衔接成一条数据链,前后两个块均有密码学机制防篡改,每个节点都会同步完整的数据链。
区块链的共识机制
上面讲了区块链是由一个一个数据区块链接合成的一条链,区块是怎么来的呢,是由矿工将全网节点产生的数据打包而来,这一过程又被叫做挖矿。将数据打包成一个区块接入区块链中的节点就叫矿工,你可能会问如果矿工造假怎么办,这就需要通过一个共识机制让每个打包区块的矿工不能有恶意造假行为,如何实现呢?
这里我们只讲一种最原始共识的机制叫pow共识,就是靠计算机的算力达成共识,全网的节点共同来做一个哈希运算。谁最先算出一个正确的值,谁就取得打包区块的权力,然后全网同步这个区块,再进行新的哈希运算竞赛,下一个获胜者得到打包下一个区块并上链的权力,系统会给每次打包区块的矿工一定的虚拟货币奖励。这种以算力来决定记账权的规则就叫做POW共识。
所谓"哈希"就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。而且哈希运算是不可逆的。某一个数据哈希后能得到一个确切的值,如果反过来给定一个哈希值,是不可能反向算出他的初始值的,唯一的方法就是暴力运算(不停的尝试遍历所有的初始值,让其运算结果一 一的对比)。
因为有共识机制规范了矿工的行为,保证了数据的真实性和稳定性。如果一个矿工想要作恶修改数据,他必须要取得区块打包权,也就是说要比其他节点要先算出这个正确的哈希值,这需要拥有比全网其他节点更强大的计算能力。
区块链的几个特性
去中心化
去中心化,即与传统中心化的方式不同,不存在一个中心化服务器,人和人之间直接点对点沟通;每个节点都充当一个服务器,每个节点会同步共享整个账本的数据。相当于每个节点都有一套完整的数据。而且信息是公开透明的,任何人都可以通过区块链查看这些数据记录。
像传统的淘宝、QQ等都是中心化的,你用这些产品时,你生成的数据先统一存入他们的服务器,通过中心服务器再和其他人互动。如果淘宝或者QQ服务器遭遇故障,那么我们就没法使用了。但是在区块链中,人与人之间是点对点直接互动的,就算部分节点服务器出现故障仍然不影响其他节点的互动。系统能有更高的容错和安全性。没有中心化的话也没有了平台操纵的风险。
商家和消费者作为平等节点绕过第三方中心机构直接进行数据交换
数据不可篡改
区块链数据是一个一个的块连成的链,并且由密码学保护,每一个区块由区块头和区块体构成。区块头记录当前了区块的特征值(包括本次生成时间、上一个区块的哈希、本次区块的数据区块体的哈希值等),区块体为本次区块的数据。由于每一个区块都包含了上一个区块的哈希值,形成了一种反篡改的联动机制。
某一区块数据改变了的话,这个区块的哈希值就会改变,由于每个区块的区块头都记录了上一个区块的哈希值,所以更改数据的那个区块后面所有区块的哈希值都会改变。如果有节点想更改数据来作恶,那么他需要更改从这个区块开始后面所有的区块才行。
这意味他需要返回那个更改数据的区块开始用算力挖矿取得记账权,然后继续算力挖矿取得那之后到最新的所有区块的记账权,此时可以理解为有攻击者和正常节点两条链同时在挖,由于区块链有最长链原则:所有节点只会承认区块数量更多的最长链并同步它的数据。区块链攻击者需要做的就是让他挖的那条链的长度追上并超过正常节点所挖的链。当他挖出来的区块长度超过了正常节点挖出的区块长度后,便能迫使其他节点接受他挖的那条链,此时攻击成功。
实际上这个攻击是非常困难的,攻击者返回去挖想更改数据的旧区块,正常节点也会持续挖矿,在已经落后若干区块的前提下,攻击者只有在其算力达到全网51%及以上的情况下,挖矿(取得记账权)的速度才有可能追上当前最新区块,业内把这种情况下的攻击叫做51%攻击。但是这个成本非常巨大以至于任何人都很难或者说无法完成。
举个例让你明白这有多难,现在比特币网络的计算能力已经超过了全世界超级计算机运算能力的总合,在共识机制下节点作恶成本非常巨大以至于根本办不到。比特币作为区块链的一个应用,从产生到现在一直稳定的运行了近10年。
正是通过这种哈希值的联动和pow算力证明机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
去信任
区块链通过密码学算法和共识实现了信任机制。系统中所有节点之间无需信用基础也可以进行交易,因为数据库和整个系统的运作是公开透明的,在系统的规则和时间范围内,节点之间无法欺骗彼此;依靠密码学基础和共识机制也保证了每一个打包区块的矿工可靠性,进而保证了每一个区块数据的可靠性,用密码学和共识机制让每一个参与节点无需有现实的信用基础也能够互相信任。这是传统中心化无法做到的一点。
区块链的应用场景
去中心化游戏
过去我们玩的游戏都是中心化的,即游戏运行在开发商的服务器中,开发商可以随意改编规则或者更改你的游戏账户的各种参数。玩家不能真正的掌控游戏。去中心化游戏让游戏运行流转都在分布式节点中进行,游戏代码开源供所有玩家检阅,杜绝暗箱操作,使游戏更加的公平。
区块链存证系统
我们可以将商业合同票据等上链保存,以去中心化的特性发布到区块链上,增加了存证的公信力,并且发布后即不可篡改。前段时间深圳腾讯联合税务局已经试点开出了全国首个区块链税票。
区块链商品溯源系统
商品溯源,将商品从产地到最终流入消费者手中的所有流转信息,都用区块链记录下来,任何人均可对商品溯源,保证真实可信。
虚拟货币
比特币、以太币等等虚拟货币就是区块链的实际应用,虚拟货币也是目前区块链应用最为成熟的领域。除了这两个外目前已经存在的币种超过几千种。总市值超过2000亿美元。
区块链的局限
当然区块链也有很多弊端,比如效率低下不能满足规模化高频应用;重复存储带来的存储资源浪费;试错成本高;51%攻击等等,本文作为方便新手理解区块链的目的便不再详细说明