从技术的角度看区块链_数据

题图:by click_vision From Instagram

最近区块链大火,经常有读者问我什么是区块链,能干什么,本想给大家写一篇普及帖的,今天看到池老师写的一篇区块链技术普及帖很不错,所以今天转载分享给大家,以下是原文:

我在 2017 年 12 月 26 日写过一篇「2018 年技术趋势预测」,关于区块链我是这么写的:

区块链是可以改变世界的发明。区块链源起比特币,但并不局限在币圈。区块链技术是储存、验证和数据保护等问题的实际解决办法。区块链可被视为分散的、极度安全的数据库。更专业一点来说,区块链是分布式的点对点的基于密码学的共享账本,可以在金融服务、保险、医疗、政府等领域内被广泛应用。2018年应该是区块链技术起飞并日趋成熟的一年。

没想到 2018 年刚开始,区块链技术就像西去路上火焰山顶最高的火焰,简直火冒好几丈,红得发紫。很多人会说有这么火么,我怎么不知道。事实上 2017 年火爆的是比特币,区块链的拉升曲线确实是一月份才发生的,看下区块链的微信指数就知道了:

从技术的角度看区块链_区块链_02

一个浪头打过来,最好的办法是迎上去了解个究竟,而不是漠视,或者干脆当事情没有发生。最近读了些相关资料,有了更具体一点的了解,那就写篇白话文吧。阅读时间大概九分钟。

区块链到底是啥?不明真相的群众一般都去查维基百科,上面是这么说的:

区块链(英语:blockchain 或 block chain)是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。中本聪在 2008 年,于《比特币白皮书》中提出「区块链」概念,并在 2009 年创立了比特币社会网络,开发出第一个区块,即「创世区块」。

看完以后你是不是发现,都是中国字,怎么就搞不懂是啥意思呢?所以区块链的概念还是得解释一下。首先需要明确的是,区块链是一套协议和规范,用英文表述就是 Protocol,不是具体的代码或者项目。理解了这套协议,你可以基于不同的语言和技术去实现它,这和我们平时定义了一套 API,然后基于不同的技术实现没有什么分别。

但是区块链在不同领域的人眼里,可能是不同的东西。角度不同,我们得出的结论也不一样。金融领域的人会认为区块链是个分布式的账本,是一个分布式的去中心化的记账系统。搞安全和密码学的人会说区块链是基于密码学构建的对等网络。而我们程序员了解了区块链技术,会认为这不就是一个保证最终一致性的分布式数据库嘛。

记账系统

对于普通人来说,记账系统最容易理解,我们从账本说起。比如大家一起做生意,总要有个账本,最初这个账本由账房先生管理。但一个人管,总会出现对账不平衡的情况(比如挪用),于是大家开始轮流管。这种方式也有问题,在某个人保管账本和记账期间,一旦发生了数据丢失或账本损坏的情况,也会搞不清真实原因。最后大家决定用一种新的记账方式,每个人一个自己的账本,任何人改动了自己的账本都要告诉其他所有人,其他人也会在自己的账本记上一笔。只要有人发现新的账目不对,可以拒绝接受。最后以大多数人一致的账目为准。

这就是分布式的去中心化的记账系统。但这种做法时间长了还是会有问题,有人天天记,有人偷懒不记,会产生不公平。于是大家决定每天早上掷骰子,根据点数决定谁来记当天的账,其他人核对一下,没问题就复制过来。并且,当天的记账者会获得一点点奖励(这就是挖矿)。

去中心化的分布式数据库

把上面的记账系统用软件技术实现了,就是去中心化的分布式数据库。

什么是中心化,早期互联网大都采用 CS 架构,一个服务器 N 个客户端,Client 和 Server 之间进行通讯,系统可靠性严重依赖 Server,这叫中性化。

随着业务复杂度的增加,服务器端也开始分拆,横向和纵向扩展,读写分离等等,这就是我们常用的分布式架构系统,系统可靠性依赖分布式系统的热备份和容灾恢复能力。这时候服务器虽然分布了,但依然是中性化的。大部分商业公司都采用类似的架构和模式。

去中心化是怎么回事呢?就是数据库不属于任何机构和管理员。只要服务器端被某个机构或管理员控制,就存在宕机或数据篡改的风险。区块链和 P2P 的网络通信技术最终实现了去中心化。区块链的作用就是存储信息,可以认为是一个数据库,而任何人都可以通过 P2P 网络架设服务器,接入区块链网络,成为一个节点。这下人人平等了,大家都是 Server,也就没有了 Server,每个节点既是生产者也是消费者。

你可以向任何一个节点读写数据,一旦写入就是历史,最后所有的节点都会同步数据,保证「账本」的一致性。

区块链是没有管理员的,也不需要人工审核和干涉。那人人都能写数据,数据的可信度怎么保证呢?数据被篡改了咋办?别担心,P2P 网络只是进行信息通讯,保证数据安全的还有共识算法和加密算法。

共识算法

关于共识算法、拜占庭将军问题,大家可以参考这一篇文章,很长,但容易看懂。

分布式一致性与共识算法(https://draveness.me/consensus)

简单来说,共识算法就是保证少数服从多数,也就是我在记账系统中写过的「最后以大多数人一致的账目为准」。大多数人认可的事情,就是事实。这种规则听起来挺吓人的,比如我们常常在文学作品和历史经验中知道,真理往往掌握在少数人手里。但是在 P2P 的网络里,有无数的节点,要想大部分节点一起作恶,除非这些节点都被某个组织控制了。这种可能性虽然不是没有,但几率非常小。

总的来说,共识算法解决的是对某个提案(Proposal)达成一致意见的过程。提案的含义在分布式系统中十分宽泛,包括多个事件发生的顺序、某个键对应的值…等等,可以认为任何需要达成一致的信息都是一个提案。

有了共识算法和相关的加密算法,就可以保证数据的安全性和一致性。

为什么会挖矿?

谈到比特币,大家耳熟能详的就是挖矿和矿机这种事。那为什么会挖矿呢?挖矿其实是一种激励和竞争机制。

在区块链系统中,总有些节点被选中进行数据整理、验证、打包,并把相关的改动广播出去,这个工作还是挺耗资源的,所以会有奖励机制。负责打包的节点会获得系统的奖励,类似积分,对于比特币系统来说,就是奖励比特币。有了奖励,很多节点都希望获得这样的奖励,于是有些区块链系统,比如比特币就会设计出一种竞争机制,让各个节点凭借自己的算力和资源去抢,能抢到这个数据打包的机会,就会获得奖励,也就是比特币。这个竞争的过程就是挖矿。

什么是算力呢?就是计算机每秒产生 hash 碰撞的能力。也就是说,手里的矿机每秒能做多少次 hash 碰撞。算力越高,获得的奖励越多。

区块链的未来

很多人觉得区块链的唯一应用就是发行虚拟货币,最近国内外市场也是烽烟四起,比如超过百年历史的伊士曼柯达公司宣布推出基于区块链技术的「柯达币」(KodakCoin)和 KodakOne 平台,让全球的摄影师能够更好的控制图片的版权和交易。然后股价就飙升了……

了解了区块链的技术特点,我们就知道,区块链的能力远不止虚拟货币领域,未来的 金融服务、物流、保险、医疗、共享经济、智能合约领域,应该都会有区块链的身影。

繁华落尽,洗尽铅华,所有的技术都将经历时间的洗礼。历经爆发期、衰退期并进入成熟期的技术,才是真正能具备生命力的技术。