区块链技术并不是一个单项的技术,而是一个集合了多种研究成果的综合性技术系统。业界普遍公认区块链有三项核心技术是必不可缺的:分布式结构,共识机制和非对称加密。
(1)分布式结构:并非全等于去中心化
在第一篇文章中我们已经简单介绍了中心化和去中心化的区别。今天我们将继续深入下去,探讨一下区块链的分布式结构。
去中心化 VS 分布式结构
中心化、分布式、去中心化、点对点(图片来自网络)
在传统的认知中,中心化的对立面就是去中心化。这里首先要纠正一个观点:中心化的反义词应该是非中心化,即分布式。从上图可以清晰地看出中心化(Centralized),分布式(Distributed),去中心化(Decentraliazed),点对点(Peer-to-peer)的关系,去中心化仅仅是分布式的一种。
为什么要强调是分布式而不是去中心化?因为分布式的定义不仅仅是去中心化,还包含弱中心化。如果我们一味强调去中心化,区块链技术很难被现有的金融体系、知识产权体系所接受。如果一切都是去中心化的,国家、银行、机构在未来的金融体系里要扮演什么角色?未来的金融体系不需要带有国家强制力的银行了么?这很明显是不现实的。腾讯研究院也在《区块链方案白皮书》中强调,区块链创造的新价值交互范式基于“弱中心化”。
但如果我们把它看作分布式,问题就引刃而解了:中心并没有消失,但是多中心化体系将大量出现。私有链、联盟链、混合链将作为中心化的补充,提升中心化的运行效率。
这里我们要添加一个补充说明,即区块链的分布式存储和传统的分布式存储还有一些不一样:
- 传统的分布式存储是将数据按照一定规则分成多份进行存储,而区块链的每个节点都按链式结构存储完整的数据。
- 传统的分布式存储是通过中心节点往备份节点同步数据,而区块链的每个节点存储都是独立的、低位平等的,依靠共识机制来保证存储的一致性。
(2)共识机制:达成节点一致性,确保分布式账本不可篡改
上面我们讲区块链的分布式存储依靠共识机制来保证存储的一致性,所谓共识机制,就是实现区块链分布式结构的核心算法。区块链节点在预设的规则下,通过多个节点交互对某些数据、行为、或者流程达成一致的过程,就叫共识。共识机制的核心就是区块的构建和检验,目的是解决拜占庭将军问题。
拜占庭将军问题(Byzantine failures),是由莱斯利·兰伯特提出的点对点通信中的基本问题。
含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。因此对一致性的研究一般假设信道是可靠的,或不存在本问题。
如果回到我们之前那个账本的比喻,共识机制就是保证整个系统中的用户都以一条公认的账本记录为准。
区块链的共识机制很多,每一种共识机制都互有优劣,这里我们先详解一下工作量证明,让大家理解下什么是共识机制,关于其他多种共识机制的分析我们留到下一篇文章。
- 工作量证明(POW)
工作量证明(Proof Of Work,简称POW),顾名思义,就是对你做过一定量工作的确认与证明。我们可以理解为这是一种结果导向的机制,因为对工作过程的监测过于烦琐而低效。
比特币采用的即是工作量证明的共识机制。我们在上一篇文章里说过,比特币的新区块要通过计算出前一个区块头的哈希值才能与前一个区块连接构成交易链条。而一个符合要求的区块哈希值通常由N个前导零构成,零的个数取决于网络的难度值。要得到合理的区块哈希值需要经过大量的尝试计算,计算时间取决于机器的运算速度。寻找合理的哈希值是一个概率事件,当节点拥有占全网n%的算力时,该节点即有n%的概率找到区块哈希值。
工作量证明机制依赖机器的数学运算保证账本交易记录不被篡改。因为要改变一个区块的交易记录就需要再次完成这个区块的工作量证明,也需要将添加在这个区块后面的区块的工作量证明也都完成一遍,收益不及所耗费财力。POW能确保网络中的可靠节点,会将网络中最长的区块链作为可靠链,即公认的账本,只要可靠节点控制着大多数算力,可靠链就会增长得最快,从而超过其他竞争链。且不可靠节点控制的链追上可靠链的可能性,也会随着区块增多而不断降低。
工作量证明很好地保证了区块链分布式性能的实现,但是由于目前比特币已经吸引了全球大部分的算力,其他区块链应用很难再获得同等的算力来保障自身安全,且这种大规模挖矿会造成巨大的资源浪费,共识达成的周期也比较长,所以在比特币之后的一些区块链应用,大多使用其他共识机制。
(3)非对称加密:公钥VS私钥
在区块链这个分布式的网络中,点对点信息传递的安全是通过数学加密来实现的。而想要了解区块链的加密方式,首先我们需要理解对称加密和非对称加密的区别。
在1976年之前,加密的方法只有一种:(1)甲方选择某一种加密规则,对信息进行加密(2)乙方使用同一种规则,对信息进行解密。由于加密和解密使用同样的规则(密钥),这被称为对称加密算法(Symmetric-key algorithm)。这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥,就成了最头疼的问题。
而1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法:(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。(2)甲方获取乙方的公钥,然后用它对信息加密。(3)乙方得到加密后的信息,用私钥解密。公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。这种算法用他们三个人的名字命名,叫做RSA算法。加密和解密使用的是不同的规则,如此就实现了非对称加密。
在区块链中,信息的传播按照公钥、私钥这种非对称数字加密技术实现交易双方的互相信 任。在具体实现过程中,通过公、私密钥对中的一个密钥对信息加密后,只有用另一个密钥才能解开。
以比特币为例,用户的钱包中其实并不包含比特币,只包含密钥,一个用户的数字密钥是完全独立于比特币协议的,由用户的钱包生成并且自行管理,甚至不需要区块链或者网络链接。每笔交易需要一个有效的签名才会被存储在区块中,而有效签名又需要有效的数字密钥才能生成,因此拥有密钥就相当于拥有了比特币的控制权。
比特币的私钥本质上是32个字节组成的数组,公钥和地址的生成都依赖私钥,有了私钥就能生成公钥和地址,就能够花费对应地址的比特币。私钥花费比特币的方式就是对这个私钥所对应的交易进行签名。
为了更好地理解,我们举个交易的例子来说明整个流程的运作。假设小A和小B要进行一次交易,小A想向小B证明自己是真实的小A,那么小A只需要使用私钥对文件进行签名并发送给小B,小B则使用小A的公钥对文件进行签名验证,如果验证成功,就证明文件是由真实的小A用私钥加密过的。
如此,区块链的所有权就通过数字密钥、区块链地址、数字签名来确定。掌握了私钥,就等于掌握了数字资产的所有权