区块链笔记-番外算法Snowflake to Avalanche(一)

今天我们来学习一下一个新的共识算法,他较以往有非常大的改变。雪崩算法如果在数学上可以给出更好地安全性证明以及活性证明,它可能在接下来一段时间大放异彩。

在 2018 年 5 月纽约举行的 Token Summit III 上,康奈尔教授埃米·冈·瑟勒(Emin Gun Sirer)发布了一个新型的区块链共识协议,它是由一组算法组成的家族,声称它是公式算法的重大突破和创新,这个算法家族集成了经典的 Non-Byzanting 共识算法和 Nakamoto 共识算法(即 POW) 两者的特点。用他们的话来说就是,简单而又强大无比。

亚稳态机制:

算法提出了一种基于亚稳态机制(metastable)的共识协议族。所谓亚稳态,是指系统在某段时间内处于稳定状态,但在另外一段时间内可能是不稳定的。稳态代表了系统的最低能量点,而亚稳态则是一个局部的而非全局的最低能量点。以下图中的小球为例,如果用比较小的力推小球,则会停留在位置1这个亚稳态上,而如果用比较大的力推,则会进入位置3这个真正的稳态上。

图 亚wen态示意图

那么这个新的共识协议族有什么特点呢?

绿色(Green):消耗很少能源

安静(Quiescent):没有交易时不需要工作(出块)

高效(Efficient):节点交互复杂度O(knlogn) ~ O(kn)

如何实现以上目标?主要依赖以下几种措施:

并行共识模型:不使用单一复制状态机(RSM)模型,每个节点维护自己的RSM(可以互相转移所有权),系统对有关联的交易只维护偏序(partial order)

反复随机采样:引导诚实节点产生相同输出

亚稳态决策:亚稳态决策可以使得一个大网络快速推进到一个不可逆的状态(虽然不能100%保证)

既然是共识协议,必然绕不过安全性和活性的证明。我们先看一下这两个特性的定义:

安全性(Safety):nothing bad happens

活性(Liveness):something good eventually happens

该论文证明,文中提出的算法可以提供强概率安全性保证,并且保证诚实节点的活性。所谓“强概率安全保证”,是指共识被逆转的可能性小到可以被忽略(甚至小于哈希冲突的概率),实际上POW提供的也是强概率安全性保证。

另外,文中的理论分析是基于同步系统假设,而实验过程则是在部分同步系统中完成的,实验结果和理论分析基本吻合。

雪泥算法SLUSH:


图 雪泥算法实现过程

为了算法的通用性,这里是以颜色冲突为例:R表示红色,B表示蓝色,⊥表示没有颜色(初始状态)。

初始状态:没有颜色(⊥)

收到交易:染成交易中指定的颜色,同时发起查询

查询:在网络中随机选取k个节点,如果规定时间内没有收到k个回复,再多选一些节点,直到收到k个回复为止

收到查询:如果没有染色,染成查询中指定的颜色,并回复该颜色,同时自己也发起查询。否则直接回复自己当前的颜色

决策:收到k个回复后,如果某种颜色所占比例超过阈值α(0.5~1),则把自己染成那种颜色。然后继续进入下一轮查询,一共查询m轮,决定最终结果

可以证明,随着节点数n的增长,m呈对数级增长,因此可以有效控制通信量。

Slush算法是一种非拜占庭容错(BFT)算法,但却是后面三种BFT算法的基石。

下面总结一下这个协议的特点:

(1)简单状态(simple state)

节点是 memoryless 的,在每一轮 query 之间,除了 color,不保存其他任何状态。

**(2)小样本(small sample) **

不像其他共识算法,每轮必须向所有节点发出请求。Slush 只需要向一个很小(常量 k)的随机样本集发出 query。

(3)反复抽样(repeated sampling)

通过反复抽样,可以放大随机扰动。比如,即使初始状态是一个 50/50 的对等分裂状态(收到了两种冲突的 color 响应 ,且他们数量相同),抽样过程中的随机扰动(perturbation) 也会导致一种 color 会获得轻微的优势,然而协议通过反复的抽样可以不断放大这种优势。

(4)抽样轮数或时间期限(用 m 表示)

如果 m 足够大,Slush 算法可以保证所有节点都有同等的机会被染色(colorized),每个节点每轮通信都会有一个常量的,可以预测的通信消耗。m 会随着 n 变大。 m 是指轮数或时间限制。 如果 Slush 被用在有 Byzantine 节点的网络中,那么由于 adversary 节点可以故意把自己翻转(flip)成一个与主流 color 不一样的 color 来打乱平衡,使得整个网络的安全性大大降低。 因此,我们把 Slush 协议作为 BFT 协议的原始状态,它不能提供完整的 BFT 保证。

雪花算法Snowflake:

Slush算法是无状态记忆的(memoryless),节点不保存和其他节点的交互历史。

Snowflake算法在该基础上,为每个节点增加了一个查询计数器,用于累积该节点对当前颜色的信任度。如果连续β轮都选择该颜色,则接受该颜色。


图 雪花算法实现

具体修改的部分:

每个节点维护一个计数器

每次颜色发生变化时,将该计数器清零

每次查询成功(收到αk个回复),并且颜色不变时,计数器加一

Snowflake 对 Slush 的改进非常简单,下面也做个总结:

(1)每个节点维护一个 counter 变量 。

(2)每当 color 进行改变,节点都会把 counter 值重置为 0。

(3)一旦 query 得到的响应结果中包含同一 color 的数量 ≥ αk,那么该节点就会把 counter 加 1。

当 Snowflake 选择了一个合适的 β 参数,和一个理想的 ε 安全系数,就可以同时保证 Safty 和 Liveness。

论文在后面还介绍了一个 phase-shift 点,correct node 更倾向与做出一个决定而不是维持在一个 bivalent 状态。 并且,还会有一个叫做 point-of-no-return 的时间点,Byzantine node 在 phase-shift 之后失去控制,而 Correct node 则在 point-of-no-return 点之后开始 commit color。


(要出差,回来继续)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • 这篇文章介绍一个最新的区块链共识算法,它于 2018 年 5 月首次发布,是由一组共识协议构成的一个共识家族。相比...
    juniway阅读 707评论 0 6
  • 其实,我总是听别人说我很幸运,可是,我似乎并不是很喜欢这个词,总感觉这个词也是再否定我的努力。我,是不是很奇怪呢 ...
    懵萌懵萌i阅读 185评论 1 1
  • 元旦刚放假回来,2018年1月2日,新的第二天,天气也别样的好。宣威市龙潭得基完小有新的大举动呢!他们有什...
    宣威018吴桂芳阅读 657评论 13 9
  • 基本操作员 一个运营商是一个特殊的符号,或者你使用来检查,更改或合并值的短语。例如,加法运算符(+)添加两个数字,...
    Fuuqiu阅读 235评论 0 0
  • 团团圆圆的脸,和老版电视剧《红楼梦》里的薛宝钗一样珠圆玉润,有着富贵恬然的夫人气质。黛眉轻扫,眼...
    城门下阅读 2,674评论 2 10