文档章节

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

Zilliqa
 Zilliqa
发布于 2018/11/28 17:17
字数 2300
阅读 146
收藏 0

2017年10月16日,Zilliqa博客发布,Rita翻译

欢迎加入我们的社区,向我们提问并获取最新(希望也是最棒的)资讯!

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

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

 

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

实际上,网络分片(我们将在本文中将其简称为分片)是一种将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)中提出的。

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

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

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

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

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

Zilliqa如何解决这些问题呢?

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

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

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

3、选择合适的尺寸。选择合适的分片大小对系统的安全至关重要。因为提交PoW是使用散列函数(hash function)生成的,因此使用PoW创建分片相当于随机无差别地抽样一个节点集。下图显示了不同分片大小中至少三分之一的成员是恶意的概率。请注意,如果分片大小为100时,此概率大约为0.04。由于我们希望拥有绝对多数的好的节点(用于之后的共识),100作为分片大小显然是不安全的。好消息是随着分片大小的增加,这一概率不断降低。从600个节点开始,概率降至百万分之一。出于这个原因,Zilliqa认为最小分片大小为600。

 

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

由于我们想限制恶意节点的数量,概率越小,Zilliqa就越安全。 对于100个节点的分片大小,这一可能性相当高。

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

如果你想知道我们如何算出这些概率,请阅读我们的分片论文,链接https://dl.acm.org/citation.cfm?id=2978389

分片带来了什么?

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

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

结束语

其实,分片中仍然可能存在恶意节点,因为任何恶意节点(就像一个诚实的节点)都可以做PoW并加入网络。因此至关重要的就是,尽管分片中存在恶意节点(数量有限),但分片必须能够在新的一组交易中达成共识并提出下一个区块。

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

 

© 著作权归作者所有

Zilliqa
粉丝 0
博文 19
码字总数 40140
作品 0
东城
私信 提问
你想知道的都在这里:Zilliqa CTO贾瑶琪回答社区成员自由提问

前言 11月9日(周五)晚20:00,Zilliqa CTO贾瑶琪微信做客TokenGazer举办的《一问到底》活动,与社区成员进行了全程自由问答互动。活动原定时间为1个小时,在社区成员的积极参与和热情推动下...

Zilliqa爱好者中文社区
2018/11/14
0
0
区块链精进手册 | 025 | 大师的投资思想(6):认识风险

1. 一种通证:ZIL ZIL是Zilliqa区块链网络的通证,总发行量恒定为210亿枚,如今流通的市值超过6亿美金,排行第25。 Zilliqa是一条基础公链,与其他公链如以太坊、EOS、AE等都有着直接的竞争关...

马烈_Bodhi
2018/10/17
0
0
zilliqa,第一个实现了分片技术提升性能的公链

分片的技术一直在区块量行业被提起,但以太网络的分片推进也是相当的缓慢。相反,Zilliqa,作为第一个使用了分片技术用来提升整体网络吞吐量的公链,已经上线了。在Zilliqa自己的测试网络上,...

苍天鸭
04/15
0
0
这些数字精灵住在以太坊网络上,但是他们在Zilliqa网络上战斗

在我唯一的“精灵”升级到第四级之前,我的以太坊就用完了。 这就是我第一次玩Etheremon这个游戏的体验。这是一款建立在世界第二大区块链网络以太坊上的仿效Pokemon的游戏。我当时正好有相当...

Zilliqa爱好者中文社区
2018/09/25
0
0
zilliqa的Scilla,一种实现区块链并行计算的智能合约语言

我们在前面的文章中介绍了Zilliqa,市面上第一个利用分片技术实现了比较高的TPS的区块链公链。我们曾经提到,Zilliqa的智能合约语言叫Scilla,是一种主要针对基于区块链并行计算的应用而设计...

苍天鸭
04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

学习记录 java面试题(一)

1. JDK和JRE的区别 JDK是整个JAVA的核心,包括了Java运行环境JRE,一堆Java工具和Java基础的类库。通过JDK开发人员将源码 文件(java文件)编译成字节码文件(class文件)。 JRE是Java运行环境,...

Pole丶逐
31分钟前
7
0
springboot 部署到外部tomcat

入口类继承SpringBootServletInitializer 并重写protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)方法 如下 import org.springframework.boot.SpringApplic......

雷开你的门
37分钟前
4
0
hashCode和equals方法的关系

equals相等,hashcode必相等; hashCode()在哈希表中起作用,如HashSet、HashMap等。 当我们向哈希表(如HashSet、HashMap等)中添加对象object时,首先调用hashCode()方法计算object的哈希码,...

无名氏的程序员
42分钟前
6
0
技术分享 | MySQL 慢查询记录原理和内容解析

作者:高鹏 文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。 源码版本:percona 5.7.14 本文为学习记录,可能有误请谅解,也提供了一些...

爱可生
50分钟前
4
0
elementui 树型节点

节点选择时,勾选节点。 提交给后端时,传递 this.$refs.menuTree.getCheckedKeys(); 半选父节点 getHalfCheckedKeys() 不需要提交。...

东东笔记
51分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部