区块链中用到的加密算法和共识机制是两个非常重要的组成部分,有人把它们比喻成人体的骨骼和灵魂。

加密算法

首先我们来理解什么是区块链的加密算法?区块链中用到的加密算法一般主要分为两类:非对称加密算法和哈希函数。非对称加密算法是相对于对称加密算法来理解的,所谓的对称加密算法是加密和解密用的都是同一套秘钥,类似于我们看的谍战片里面所用到的密码,任何一方拿到了对方的密码表,就可以破译对方谍战人员传送的加密信息,将加密信息解读为原文。

非对称的加密算法

也称作公开的加密算法,它有两把秘钥,其中一把可以公开,另外一把私有,这两把秘钥可以分别用来加密和解密,而这种加密算法,非常适合用于区块链的账户体系,一个能充当账户,另一个充当密码。比较知名的非对称加密算法有RSA算法(大整数分解算法)、ECC算法(椭圆曲线算法),具体的算法证明过程,感兴趣的同学可以自己查找相关的资料进一步学习。有个例子可以明显的区别这两个算法:破解228比特的RSA秘钥需要的能量可以煮沸一汤匙的水,而破解228比特的ECC秘钥的能量可以煮沸地球上所有的水。在一定程度上也显示了ECC的安全性。

哈希函数

哈希函数本质上是一种映射关系,能将任意长度的信息(消息)压缩成固定长度的二进制的串,换成计算机语言就是哈希函数能实现任意大小信息转换成唯一对应的数字ID,这个特点主要被用到区块链的存证。哈希函数在比特币中主要用在梅克尔树、区块指针和比特币挖矿中发挥作用,哈希函数包括SHAJ家族的SHA-1、SHA-256等等。

接下来具体介绍一下加密算法在区块链中的是如何应用的,如图

打开网易新闻 查看精彩图片

图1

在非对称加密算法中可以通过非对称加密函数导出公开的秘钥(即公钥 ),私钥可以推导出公钥,但是公钥不能反向推导出私钥,所以公钥是可以公开的,私钥可以作为验证工具,用以验证并导出公钥,也就是说私钥和公钥之间存在映射关系。换言之,私钥和公钥可以作为区块链账本中的密码和账户的功能外,同时,我们在发送交易时,私钥可以作为验证自己的信息的签名,也就是用私钥将某段信息进行加密,生成了自己的数字签名,而该数字签名可以用公钥来非常简单的进行解密,也即验证。在比特币中公钥是一串很长的数字,在进行比特币转账时,是打款给对方的收款地址,而这个地址是结合公钥用哈希函数得到的。

总结:私钥持有者可以通过私钥可以生成属于自己独有的数字签名(加密信息),由于公钥是全网公开的,其他人(接收着)可以通过公钥来验证我的身份。

比特币是如何将哈希生成区块的呢?由于哈希函数的特性(极大的输入映射成唯一极小的输出—验证ID),且区块的组成内容是矿工对一段时间内所有交易的记录,为了生成该区块,它的头哈希(上节内容)就相当于这个区块的唯一ID,然后利用梅克尔树这样的结构,将大量的交易数据通过层次化的哈希,递归生成根哈希值(父哈希),记录在区块头中,具体的过程如下图所示

打开网易新闻 查看精彩图片

图2

共识机制

分布式记账者群体对交易的记录达成一致,换言之,分布式数据节点对记录的数据达成一致,具备相同的状态。共识机制里面有个著名的“拜占庭将军问题”,感兴趣的同学可以查阅资料深入了解。这个问题衍生出来的就是分布式系统的一致性问题,如图

打开网易新闻 查看精彩图片

图3

非拜占庭容错模型,一般是没有攻击者的,一般认为节点安全可靠,它通常用于互联网的通信传输模型或者分布式服务器的模型中;拜占庭容错模型,它存在攻击者,最后一个是经济模型。在区块链中,我们需要综合考虑这些模型。在利用这些模型时,我们需要知道两个定理

FLP定理:在网络可靠、存在节点失效的最小化异步模型系统中,不存在一个可以解决一致性问题的确定算法

节点失效、异步分布式系统,无法完全一致

CAP定理:一致性、可用性、分区容错性,三者不可兼得

一致性:所有节点访问同一份最新的数据副本

可用性:每次请求都能获取到非错的响应

分区容错性:因为网络故障导致的系统分区不影响系统的正常运行

根据以上定理,我们可以知道在一个区块链的异步分布式系统中是不可能达成一个强一致性的,为了解决这个问题,就要引入共识机制,根据不同的模型,也会设计不同的共识机制,如下

非拜占庭容错——适用于分布式数据库

共识机制:Paxos、Raft等等

特点:性能较高、容错性较差

拜占庭容错——适用于分布式账本(区块链)

共识机制:PoW、PoS、DPoS、PBFT

特点:容错性较高、性能较差

思路:1)提高恶意节点的犯错成本,降低错误出现的概率

2)允许一定比例恶意节点出现,依然实现账本一致

那么结合以上的知识,我们就可以总结出共识机制特点:

随机性

随机选择记账者(将军),提高作恶者的成本(连续作恶、大比例作恶)

随机数不可被预测、不可被操控

抗女巫攻击

抵抗刷小号来提高被选中概率的作恶手法

增加门槛:计算力(工作量证明)、资源(权益证明)

奖励机制

奖励诚实的参与者(比特币)

不诚实参与者的反激励机制

综上所述,在这些特性下,加固了区块链的安全性,提高作恶者的门槛,我们用三张图来详细讲述不同共识机制的区块链项目

打开网易新闻 查看精彩图片

PoW机制

打开网易新闻 查看精彩图片

PoS机制

打开网易新闻 查看精彩图片

DPoS机制

最后我们简单的介绍一下

实用拜占庭容错算法(PBTF)

解决拜占庭问题目前最有的办法,1999年提出,2008年图灵奖

将算法复杂度由指数级降低为多项式级

可容忍少于1/3节点作恶,节点数量越多,难度越大,性能越差

适用于强一致性要求的联盟链、私有链,或者节点数固定的公链,如DPoS公链

代表:EOS、Cosmos

这个共识机制最大的特点是:各节点对账本唯一状态的一致认同,不存在分叉。

以上是这节的内容,欢迎各位探讨和指正。