Zilliqa的设计构思 第1部分:网络分片

2017年10月16日,Zilliqa博客发布,Rita翻译
欢迎加入咱们的社区,向咱们提问并获取最新(但愿也是最棒的)资讯!
webphtml

正如咱们以前文章介绍的那样,Zilliqa是一个新的区块链平台,每秒可处理数千个交易, 所以Zilliqa有潜力与VISA和MasterCard等传统的支付方式相匹敌。 更重要的是,Zilliqa的交易吞吐量能够随网络规模增大而近似线性增加。git

从这篇文章开始,咱们将用一系列的文章逐步介绍Zilliqa的设计构思。此篇将介绍Zilliqa可扩展性的核心思想 — —分片(Sharding)。Zilliqa的分片含多个层面,包括网络分片、交易分片和计算分片(network sharding, transaction sharding, and computational sharding)。其中最重要的是网络分片,由于其余分片机制都创建在网络分片之上。web

图片描述

那么,到底什么是网络分片呢?数据库

实际上,网络分片(咱们将在本文中将其简称为分片)是一种将Zilliqa网络划分红一系列包含更少节点的群组的机制,这样的每一个群组被称为分片(shard)。好比说,当一个网络由1000个节点构成时,咱们能够将此网络划分为10个、每一个由100个节点组成的分片。安全

Zilliqa真正可扩展性的秘诀就在于网络分片。假设咱们有一个包含1000个节点的网络,微信

Zilliqa将自动地把该网络分红10个、每一个包含100个节点的分片,且全部分片可并行地处理交易。若是每一个分片每秒能处理10个不一样交易,则全部分片每秒可一并处理100个交易。因为分片架构能平行地处理交易,所以Zilliqa的吞吐量可随着网络规模增长而线性增加。网络

分片的想法固然不是新事物,事实上,它能够追溯到数据库领域,在数据库中它被用来提升性能、可扩展性和I/O带宽。然而,在区块链中分片的想法起初是由Zilliqa团队成员于2015年在合著的学术论文(最终以A架构

Secure Sharding Protocol For Open Blockchains为题发表于CCS 2016)中提出的。app

就是这样吗?听起来很简单噢!函数

虽然想法听着很简单,但在工做中实践起来却并不是如此。为了理解面临的挑战,让咱们首先从实现分片要解决的一些关键问题入手:

一、对女巫攻击的防护(Sybil Resistance)。因为Zilliqa是一个公有区块链平台,任何有链接因特网电脑的人均可以使用它。包括Zilliqa在内的任何公有区块链的运行都须要足够数量的节点,所以公有区块链难以免恶意节点的进入。根据定义,恶意节点会试图经过操纵多个节点来破坏系统,并影响任何基于多数节点的决策过程。这就是一般所说的女巫攻击(Sybil Attacks)。

二、建立分片。让咱们先假设女巫攻击的问题经过某种方式被解决了,而且假设网络中1000个节点被分为10个、每一个包含100个节点的分片。那么哪一个节点被分配到哪一个分片是由谁决定的呢?这固然不能由Zilliqa团队成员所控制的一个节点或一组节点决定,由于若是Zilliqa团队变成恶意的(只是假设),那么他们能够将全部恶意节点集中在一个分片中来损害Zilliqa的安全性。顺便说一句,若是您不知道Zilliqa团队成员是谁,欢迎随时查看咱们的团队组成(连接https://www.zilliqa.com/team....)。

三、分片大小。这个问题很简单,好比说咱们能够拥有一个由10个节点组成的小分片吗?答案固然是不能够!事情固然没那么简单。事实上若是分片很小,那么攻击者就会更容易控制它,并且因为这些分片运行了Zilliqa协议的某些部分(如共识),咱们固然不但愿由一个很小的分片(颇有可能只包含恶意节点)来决定接受哪些或拒绝哪些交易。

Zilliqa如何解决这些问题呢?

下面,咱们来介绍Zilliqa解决上述问题的方法。

一、防控女巫节点。有几种可能的方式可以使女巫攻击代价高昂或难以进行。例如,经过要求节点存入至关多的金钱(或代币)做为抵押,或要求他们执行一些计算密集型任务(也被称为工做量证实,即PoW)。Zilliqa就使用PoW。每一个但愿加入Zilliqa网络的新节点都必须先执行PoW,网络中的现有节点验证新节点的PoW并受权其加入网络。PoW至关于Zilliqa网络的入场券,只有拥有有效入场券的节点才能加入网络。PoW使任何真实世界的个体难以操纵不少个节点。

二、自动建立分片。在Zilliqa中使用PoW会自动提供一种建立分片的方法:Zilliqa首先会基于POW选举出一组目录服务委员会(directory service committee,简称DS委员会)的专门节点,并按期移出一名DS委员会老成员、增长一名新成员,这一特定间隔被称为DS周期(DS-epoch)。在此过程当中,Zilliqa使用先进先出策略,新进入委员会的节点是最快解决PoW的节点,所以任什么时候候DS委员会的大小都是固定的。DS委员会一旦当选,便启动分片程序,网络中的全部其余节点当即执行另外一个PoW,其PoW由DS委员会验证,每一个节点根据提交状况和随机性,被分配到特定的分片。PoW提交的最后几位二进制数字决定了节点将被分配到哪一个分片。

三、选择合适的尺寸。选择合适的分片大小对系统的安全相当重要。由于提交PoW是使用散列函数(hash function)生成的,所以使用PoW建立分片至关于随机无差异地抽样一个节点集。下图显示了不一样分片大小中至少三分之一的成员是恶意的几率。请注意,若是分片大小为100时,此几率大约为0.04。因为咱们但愿拥有绝对多数的好的节点(用于以后的共识),100做为分片大小显然是不安全的。好消息是随着分片大小的增长,这一律率不断下降。从600个节点开始,几率降至百万分之一。出于这个缘由,Zilliqa认为最小分片大小为600。

图片描述

特定大小的分片中至少有三分之一的恶意节点的几率表。

因为咱们想限制恶意节点的数量,几率越小,Zilliqa就越安全。 对于100个节点的分片大小,这一可能性至关高。

在Zilliqa中,咱们选择了600的分片大小,其包含三分之一的恶意节点的几率为百万分之一。

若是你想知道咱们如何算出这些几率,请阅读咱们的分片论文,连接https://dl.acm.org/citation.c...

分片带来了什么?

正如本文开头所讨论的那样,网络分片为并行处理交易开辟了新航路 — — 每一个分片如今都能独立处理交易并所以产生高吞吐量。事实上,每当交易到达网络时,它就被分配到一个特定的分片上。分配是由交易发送地址的前几位二进制数字决定的,这就叫作交易分片。

分片还使计算执行和智能合约运行十分高效。例如,一部分分片能够充当映射器(mapper),其余部分分片能够充当归约器(reducer),并不是常有效地执行映射-归约任务(map-reduce task),这也被称为计算分片。

结束语

其实,分片中仍然可能存在恶意节点,由于任何恶意节点(就像一个诚实的节点)均可以作PoW并加入网络。所以相当重要的就是,尽管分片中存在恶意节点(数量有限),但分片必须可以在新的一组交易中达成共识并提出下一个区块。

Zilliqa如何利用这种分片架构搭建安全高效的共识协议是本系列文章中下一部分的主题。

咱们很高兴地邀请​​您加入咱们的社区,与技术专家、金融业者和加密数字货币爱好者们一同探讨!您能够经过如下方式关注咱们的进展:

微博:https://weibo.com/zilliqa

微信公众号:ZilliqaCN

Zilliqa中文社区联盟: http://www.zilliqa.com.cn

关注咱们的推特:https://twitter.com/Zilliqa

经过邮箱订阅咱们的新闻:http://zilliqa.us16.list-mana...

关注咱们的博客:https://blog.zilliqa.com/

Reddit:https://www.reddit.com/r/zilliqa

Slack:https://invite.zilliqa.com/

Gitter:https://gitter.im/Zilliqa/

电报群:https://t.me/zilliqachat

相关文章
相关标签/搜索