注册
关闭
区块链大帝

区块链大帝

发布于 2019-07-29 阅读数 5096

区块链入门 | 详解区块链的“三大利器”

区块链是一个新事物。随着比特币等数字货币越来越多地走进人们视野,区块链被认为代表了互联网未来的方向。但是从技术上来说,区块链本身并不是突破性的技术创新,而是一种巧妙的技术组合。通过将P2P网络技术、密码学和分布式共识技术结合而诞生了具有开创性的比特币。这三项技术也共同构成了区块链的三大基石。我们今天来聊一聊这三大技术,并会通过拜占庭将军问题的引入来讲述一种叫做实用拜占庭容错算法的共识协议。

区块链入门 | 详解区块链的“三大利器”

首先是P2P网络技术。讲到P2P大家第一印象可能会想到人人贷、陆金所等借贷平台。其实这种P2P借贷平台与区块链中的P2P并不是一个东西,但两者其实有某种意义上的共通之处。

P2P网络,也被称为对等网络,是一种没有中心服务器,依靠用户群交换信息的互联网体系。我们知道,中心化的互联网体系一般采用服务器/客户端模式。在这种模式下,由中心化的服务器对特定端口进行监听,而用户只需要按照约定的协议方式向服务器发送请求便可以得到响应,获得所期望的服务。中心化服务器请求一般通过域名来进行访问,而域名实际上代表的是互联网上的一个ip地址。

我们当前中心化的服务器就像是枢纽站一样,掌控着所有用户的数据,尽管管理很方便,但是缺点也是显而易见的:一旦崩溃的话,就会导致全网的服务挂掉,比如之前的鹿晗事件导致微博服务器瘫痪。在安全性方面,如果中央服务器被黑客入侵,或者病毒感染,就能够很快的将病毒辐射到所有的客户端用户。中央服务器对用户数据的掌控性太强,如果一个商家道德底线过低,可能会肆意分析、售卖我们的数据;这些都是中心化服务器的潜在问题;

区块链入门 | 详解区块链的“三大利器”

对等网络P2P的出现,其初衷便站在了上述那种中心化网络的的对立面。在对等网络里,每一个网络节点,所具有的功能,在逻辑上是完全对等的,全网无特殊节点,不存在谁是服务端,谁是客户端;换句话说,每个节点既是服务端也是客户端;在P2P网络中,每个网络节点,具有相同的数据收发权限,并都可以对外提供全网所需的全部服务;也正是因为这一点,任何一个节点垮掉,都不会对整个网络的稳定性构成威胁,其安全性能更加可靠。

区块链系统之所以选择P2P作为其组网模型,就是因为两者的出发点都是去中心化,可以说具有高度的契合性。中本聪在白皮书中提过,在电子现金系统中,第三方系统是多余的,没有价值的,意思就是整个系统不要依赖任何特殊的第三方来完成自身系统的运转。P2P网络的优势就是全网平等、无特殊节点,两者的思想高度契合,所以最终被使用来作为区块链网络的第一个关键的支撑技术。区块链中的每一个节点都位于全世界的各个角落,通过P2P网络传输数据,将需要的交易和区块的信息在网络上传输到其他的节点。

其次是密码学技术。在去中心化的区块链世界,密码学的使用就几乎无处不在了。例如,哈希函数被多次用于区块链的结构体系中,用以实现其无法篡改的特性;而公钥密码学则多次用于区块链的身份认证、交易签名。此外,还有一些关于密码学中的前沿科学,如安全多方计算、零知识证明等则正在致力于被应用于区块链隐私保护中。我们将在后面的章节讲述公钥密码学在区块链身份认证中的应用,这里就先不去讲过多的内容。

区块链入门 | 详解区块链的“三大利器”

最后是分布式共识机制。在比特币这样的自由网络中,节点们绝大多数会按照协议的规定去执行指令,然而也很可能会有一些节点并不按照协议规定的行为去执行。例如,有部分节点可能因为掉线而突然中止工作,还有的节点可能为了一些其他目的发送非法交易或进行黑客行为,以试图阻碍比特币网络的正常运转。这些非正常的节点,又被称之为故障节点。在这样自由的公共网络中,我们没有办法去阻止这部分用户的非正常行为,那么如何设置协议使得网络可以防止这部分行为对网络运转带来的影响,使得网络的安全性与一致性不会受到阻碍呢?

其实,关于分布式共识机制作用的描述,在很早的时候有一位密码学家Lamport曾经在论文中虚构了一个叫做拜占庭将军的故事,作为分布式领域非常经典的问题。

拜占庭将军问题讲述的是在幅员辽阔的拜占庭帝国,有多位将军率领各自的部队驻扎在帝国各处,将军们只能靠通讯员进行两两通讯。在观察了敌人以后,忠诚的将军们必须制订一个统一的行动计划。然而,这些将军中有叛徒,叛变的将军企图用错误的消息来影响着统一行动计划的制订与传播,从而阻止忠诚的将军们达成一致。例如,忠诚的A将军决意进攻,并将这一指示传达给其他将军,而B将军在收到指令之后却告知C将军他收到了A将军撤退的指示。如果单凭这两条指令,忠诚的C将军无法肯定能与A将军达成统一的进攻,因为他无法知晓A与B中哪一位是叛徒,究竟是哪一位将军在阻碍统一战斗计划的达成。 为此,Lamport从数学上证明了,只要这些好的将军们坚持听从大多数将军们的意见,即少数服从多数,同时坏将军的数量小于三分之一,那么好将军们就可以达成正确的共识。

拜占庭将军问题后来被引申到通信领域,指的是一个由互不信任的节点组成的点对点网络,描述一个分布式系统中进行信息交互通信时面临的难题。假设区块链分布式网络中存在出错的节点或者恶意节点,这些节点可能因为种种原因伪造签名、恶意破坏系统的一致性。这就要求区块链网络的共识机制有容错设计,在部分节点作恶或者失效之时仍然能达成整体的一致性。

区块链入门 | 详解区块链的“三大利器”

MIT的两位教授在1999年提出了实用拜占庭容错算法,英文简称PBFT,将该问题的算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。

目前有一些机构正在关注实用拜占庭容错算法,例如Fabric联盟链也曾经使用该算法作为其共识协议,迅雷发布的玩客链也是使用的这一共识算法。

但是拜占庭容错算法也存在着一定的缺点,首先计算效率依赖于参与协议的节点数量,不适用于节点数量过大的区块链系统,扩展性差;其次系统节点是固定的,无法应对公有链的开放环境,一般仅适用于带身份认证的联盟链或私有链系统;还有就是系统的失效节点数量要小于全网节点的三分之一,容错率相对较低;另外拜占庭容错算法不能很好的存储记录其交易信息,黑客能够截取一些失效的副本,这会让信息外漏。

无论如何,实用拜占庭容错算法的出现大幅推动了分布式领域的共识算法研究。如今应用于区块链的不少共识算法都是在该算法的基础上进化而来。这也让我们期待更多更好的共识算法的出现。

原创:Dipperin 蔡庆丰

  • 0
区块链大帝
区块链大帝

0 条评论