区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计
算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立
信任、获取权益的数学算法。
区块链是比特币的底层技术,像一个数据库账本,记载所有的交易记录。这项技
术也因其安全、便捷的特性逐渐得到了银行与金融业的关注。
区块链是一种分布式总账技术,区块链和传统的分布式系统之间的关系,
一般如下图所示:
传统的分布式系统是为了解决单机性能不足,某些应用中需要更大的存储、更强
的计算能力而产生的技术。而区块链则是为了解决各个节点互不信任,又需要协
同工作而产生的。
区块链与不同分布式系统的重要区别就是——区块链之间的各节点是通过信任算
法而实现相互信任,而一般的分布式系统可以通过信任一个共同的中心来实现相
互信任。
区块链的基础是P2P分布式网络、加密算法和共识机制。在这些基础技术中,共识
机制是至关重要的。可以说共识机制是区块链技术的核心,共识机制对于一个区
块链系统来说就是它的灵魂。共识机制很大程度上决定了整个区块链系统节点间
的相互信任程度,也决定了其他使用者对于区块链上数据的信任程度。
从技术上看,区块链与普通分布式系统,尤其是分布式数据库最大的区别就
是“去中心化”,而正是共识机制决定了一个区块链系统“去中心化”的程度。
通常,我们把区块链分为两大类:一种是公有链,一种是非公有链。这两种区块
链的核心区别在于:参与共识的节点是否是受控的。
对于公有链来说,互联网上的任何计算机都可以通过运行相应的区块链程序,参
与整个区块链的共识;而对于非公有链来说,通常需要获得之前区块链节点中大
部分节点的同意,或者通过其他某种机制,获得参与共识的权力。
对于公有链来说,共识机制面临的最大问题就是:根本不知道有多少个节点在整
个区块链系统中。想像一下,一个团队在做一项决策时——假设需要决策去爬山
还是去玩水,每个人都不知道队伍里面有多少人,每个人该怎么合理的做出自己
的决策,以便让团队行动一致?
投票确定?别逗了,你都不知道一共有多少人,怎么制作选票、发放选票、最后
确定少数和多数?
有一个办法,把所有人拴在一起。然后想爬山的就往山那边走,想玩水的就往水
那边走。看看最后整体移动方向是哪儿,你就知道有可能大多数人的选择,然后
跟着走就好了。
在公有链中,我们只能通过比较力量或者类似的办法来进行决策。比较力量的共
识机制,我们通常叫它PoW(Proof of Work 工作量证明机制)。
比较力量的共识有一个的缺陷,大家的力气都耗费在了拼力量中,最后没劲儿爬
山或玩水了。所以,很多人提出了PoS(Proof of Stack 权益证明机制)一类的
算法,利用区块链上的Token,将Token转换为选票来投票决策。(注意,这里
Token账户数量对应的是系统用户,而之前说不知道总数是不知道服务器数量。本
质上,PoW是在“系统运维人员”之间进行共识,而PoS一类的算法,相当于
在“系统用户”之间进行共识。)这种机制,在公平性上也存在着很多争议。
对于非公有链来说,情况简单了很多:每个节点都知道总共的节点数,我们只要
简单投票就可以了。但是,谁来组织投票?谁监票谁唱票?
PBFT算法是一个经典的解决这个问题的办法(详见本系列第八篇,拜占庭容
错)。PBFT的核心方法就是:每个节点都告诉其他所有节点自己的选票是啥,这
样,就不需要有人组织投票,有人监票和唱票了,每个节点都有其他节点的投票
结果,于是每个节点都按照多数票的决议来执行就好了。
人们对于PBFT算法也有关于公平性方面的争议,对于一个包含有Token的系统,投
票的权力和Token无关,导致作恶成本降低,在涉及到Token的重大问题上,可能
会由于经济诱惑而导致作恶节点数量超过算法限制。
区块链诞生自中本聪的比特币,自2009年以来,出现了各种各样的类比特币的数
字货币,都是基于公有区块链的。
数字货币的现状是百花齐放,列出一些常见的:bitcoin、litecoin、dogecoin、
OKcoinetc,除了货币的应用之外,还有各种衍生应用,如NXT,SIA,比特股,
MaidSafe,Ripple,Ethereum等等。
2016年1月20日,中国人民银行数字货币研讨会宣布对数字货币研究取得阶段性成
果。会议肯定了数字货币在降低传统货币发行等方面的价值,并表示央行在探索
发行数字货币。
而在没有拜占庭容错需求的分布式总账系统中,还有效率更高的RAFT\PAXOS等算
法,但是一般我们认为,没有拜占庭容错需求的分布式总账系统不是区块链系
统。因此,这些算法单独使用的话,并不能作为区块链系统的共识算法。但是,
他们可以通过和DPoS等算法结合,发挥重要作用。