原文地址:http://www.360doc7.net/wxarticlenew/738011615.html?from=singlemessage&isappinstalled=0

2018年2月,图灵奖得主、MIT教授Sivio Micali募集400万美元开发Algorand区块链协议一事受到了国内外媒体的普遍关注。2017年春天,笔者有幸在MIT选修了Micali教授和MIT媒体实验室数字货币计划负责人Neha Narula合开的《共享公共账本》(Shared Public Ledger)课程。这门课主要就是讲解Algorand。Algorand的目标是建立一个低能耗、高速度、民主化、可拓展性好而且几乎不会出现分叉的分布式账本。Algorand没有引入激励机制或发行数字加密货币。

Algorand代表了区块链底层技术发展的一个重要方向。本文对Algorand做一个简单介绍,分享给国内读者。Algorand涉及非常复杂的数学,笔者力图用最少的数学介绍Algorand最核心的想法(涉及数学的主要是本文第三、四节,略过不读不会影响对文章大意的理解)。对Algorand感兴趣的读者可以阅读关于Algorand的工作论文(不是白皮书,最新版工作论文于2017年5月发布,下载地址是https://arxiv.org/abs/1607.01341)。本文不构成对Algorand的商业评论。当然,笔者衷心祝愿Micali教授能取得成功。

一、Algorand的发展背景

Algorand是MIT机械工程与计算机科学系Silvio Micali教授与合作者(主要是纽约大学石溪分校陈静副教授)于2016年提出的一个区块链协议。Micali教授为意大利裔美国人,1982年获加州大学伯克利分校计算机科学博士,1983年起在MIT任教。他的研究领域包括密码学、零知识(zero knowledge)、伪随机数生成、安全协议(secure protocol)和机制设计。Micali教授1993年获哥德尔奖(由欧洲理论计算机学会EATCS与美国计算机学会基础理论专业组织ACM SIGACT于1993年共同设立,颁发给理论计算机领域最杰出的学术论文),2004年获密码学领域的RSA奖(RSA是三位发明公钥-私钥密码系统的科学家Rivest、Shamir和Adleman的姓氏缩写),2012年获图灵奖(由计算机协会ACM于1966年设立,奖励给对计算机事业作出重要贡献的个人,有“计算机界诺贝尔奖”之称)。

Algorand由algorithm(算法)和random(随机)两个词合成,顾名思义,就是基于随机算法的公共账本协议(public ledger)。Algorand针对比特币区块链系统的几个核心缺陷进行了改进。

第一,比特币区块链系统的工作量证明共识机制需要消耗大量计算资源和能源。根据Digiconomist网站数据,截至2018年1月底,每产生一个比特币区块,需要运行 次哈希运算。考虑到哈希函数作为随机预言(random oracle)的性质,比特币区块的产生过程,相当于掷一个有面的骰子,直到掷出某一特定的面为止。比特币区块链系统一年的耗电量,与秘鲁全国一年的耗电量相当,而且还在快速增长中。这些巨量计算和耗电,除了产生比特币区块以外,对人类社会几乎没有任何价值。

第二,比特币区块链系统要长期存续,要求50%以上的计算资源掌握在诚实用户的手中。否则,恶意用户在力量占优时可能篡改区块链。但随着市场演变(中本聪应该没有预见到这种情况),比特币区块链系统中的计算资源集中在少数几个“矿池”中。这就构成了一个潜在的不稳定因素。“矿池”的存在也使比特币区块链系统偏离了其早期宣称的民主特征,形成了“矿工”和普通使用者这样不同阶层的使用者。从比特币历史上关于扩容的讨论以及多次分叉不难看出,比特币区块链系统已经形成了中心化程度很高的社区结构。

第三,比特币区块链系统容易出现分叉。根据中本聪的白皮书[Nakomoto, Satoshi, 2009, “Bitcoin: A Peer-to-Peer Electronic Cash System”.],当一笔交易被记入一个区块并接入区块链后,要等该笔交易所在区块后面再接上5个区块,才能比较肯定这笔交易进入比特币的公共账本,而非在某一个分叉上。因为比特币区块链系统平均每10分钟才能产生一个区块,一笔交易从被记入区块到被确认需要1个小时左右时间。

第四,比特币区块链系统的可拓展性比较差。比如,一个比特币区块的大小为1M,大约能容纳2000笔左右交易,因为平均每10分钟产生一个区块,比特币平均每秒钟能支持3-4笔交易;相比而言,Paypal平均每秒钟能支持193笔交易,Visa平均每秒钟能支持1667笔交易[http://www.altcointoday.com/bitcoin-ethereum-vs-visa-paypal-transactions-per-second/ ]。从这个意义上讲,比特币是人类历史上投入产出比最低的社会和技术试验之一。对可拓展性问题,比特币闪电网络是目前很受关注的一个解决方案。

鉴于比特币区块链系统的上述缺陷,Algorand的目标是:
1.能耗低,不管系统中有多用户,大约每1500名用户中只有1名会被系统挑中执行长达几秒钟的计算。
2.民主化,不会出现类似比特币区块链系统的“矿工”群体。
3.出现分叉的概率低于一兆分之一(即)。假设Algorand中平均每分钟产生一个区块(后文会给出有关测试数据),这个概率意味着平均每190万年出现一次分叉。
4.可拓展性好。

二、Algorand的基本设置

用户和交易特征

Algorand是一个公有链系统。用户(或者节点)加入Algorand不需要事先申请,可以随时加入。Algorand对用户数量也没有任何限制。每个用户持有多个公钥。每个公钥均是一个电子签名机制的一部分,也就是有一个与之对应的私钥。每个公钥对应着一定数量的货币。每笔交易实际上是一个电子签名,该电子签名将一定数量的货币从某一个公钥转移给另一个公钥,并用前一个公钥对应的私钥进行加密。不难看出,Algorand的这些设计,与比特币是一样的。

Algorand要求系统中2/3的货币由诚实用户掌握。诚实用户的含义是:其行为遵守有关指引(主要指拜占庭共识协议,见下文),并且能完美地发送和接收消息。诚实用户以外的是恶意用户,恶意用户的行为可以任意偏离有关指引。

对恶意用户,Algorand假设他们由一个“敌对者”(adversary)控制。“敌对者”能发起强大攻击,包括:
1.“敌对者”可以在任何时候瞬间地腐化任何他选中的用户,使其成为恶意用户(哪怕该用户之前是诚实用户)。
2.“敌对者”完全控制并且完美协调所有恶意用户。可以理解为,恶意用户的行为(包括发送和接收消息)完全由“敌对者”代理。
3.“敌对者”控制所有信息发送,但必须满足一点:诚实用户发出的消息能在一定时间内(该时间只与信息的存储大小有关)抵达95%的诚实用户。然而,“敌对者”几乎不可能伪造诚实用户的电子签名或者干涉诚实用户之间的通讯。

区块链结构

在Algorand中,与交易有关的信息均存储在一系列区块中。每个区块主要包括:
1.从上一个区块以来的交易信息;
2.一个哈希指针,相当于对所有前序区块所含信息的一个摘要或浓缩;
3.当期“领导者”电子签名后的“种子”参数(细节见后文)。
这样,这一系列区块通过这些哈希指针连接在一起,构成了区块链。如果某一区块的信息被“敌对者”篡改,其与后序区块中保存的哈希指针就会出现不匹配。这就使得区块链难以被篡改。

Algorand的上述设计与比特币区块链系统基本相同,但存在一个关键差别。目前,Algorand是一个单纯的分布式账本协议,没有引入激励机制,没有发行类似比特币的数字加密货币。Algorand中交易所用的货币是外生给定的(可以是任何法定货币或数字加密货币),交易只影响货币在不同用户之间的分配。而在比特币区块链系统中,“矿工”构建了被公共账本接受的区块后,就会得到系统给予的一定数量的比特币作为奖励。

网络通讯

与比特币区块链系统一样,Algorand假设用户之间的通讯采取“点对点传言”模式(peer-to-peer gossip):当某一用户传播一条消息后,第一次收到这条消息的用户随机并且独立地选择他的一些“邻居”,并将消息传给“邻居”们。当没有用户是第一次收到这条消息时,这条消息的传播就终止了。

Algorand对网络通讯的要求是:对任意大于95%的可及性参数(reachability)ρ和消息的存储大小参数μ,总存在一个时间参数λ(λ只与ρ和μ有关),使得一个诚实用户发出的存储大小为μ的消息,在经过λ长时间后,至少被超过ρ的诚实用户接收。

共识机制

Algorand中,用户(不是全部用户,仅指被系统随机挑中作为“验证者”的用户,详见下文)通过一个拜占庭协议(由Micali教授开发,称为BA★)对新区块达成共识。BA★执行起来非常快。大致言之,BA★每次循环有3个子步骤,在每次循环后均有1/3以上的概率能达成共识。一旦“验证者”对某一个新区块达成共识,超过一半的“验证者”再用自己的私钥对该区块进行电子签名(相当于认证),该区块就开始在Algorand网络中传播。

BA★的一个重要特征是:在点对点网络通讯下,BA★的参与者可更换(player-replaceable)。也就是,BA★每次循环的每一个子步骤均可由全新的、独立随机选择的参与者来执行。在这种情况下,BA★仍能正确、有效地达成共识。假设有上百万的用户,BA★每次循环的每一个子步骤的参与者可以完全不一样,而且每一批参与者都无法确定下一批参与者是谁,从而无法串谋。

密码抽签(cryptographic sortition)

密码抽签是Algorand的关键创新,也是其得名的由来,其要点如下。首先,Algorand创建并不断更新一个独立参数,称为“种子”。“种子”参数不仅不可能被“敌对者”预测,也不能被其操纵。

其次,在BA★每次循环中,Algorand基于当前 “种子”参数构建并公布一个随机算法(也被称为“可验证的随机函数”或verifiable random functions,见下文)。该随机算法中的一个关键参数是用户的私钥,这个私钥只有用户本人才知道。

接着,每个用户使用自己的私钥运行系统公布的随机算法,得到自己的凭证(credential)。凭证值满足一定条件的用户就是这一轮的“验证者”(verifiers)。“验证者”组装一个新区块并连同自己的凭证一起对外发出。其中,在第一个子步骤中凭证值最小(按字典方面排序,见下)的那个“验证者”的地位比较特殊,称为“领导者”。

最后,所有“验证者”基于“领导者”组装的新区块运行拜占庭协议BA★。在BA★的每次循环中的每一个子步骤中,被选中的“验证者”都是不同的。这样能有效防止验证权力集中在某些用户手中,避免“敌对者”通过腐化这些用户来攻击区块链。

从上述过程可以看出,第一,“验证者”在秘密情况下获知自己被选中,但他们只有公布凭证才能证明自己的“验证者”资格。尽管“敌对者”可以瞬间腐化身份公开的“验证者”,但已不能篡改或撤回他们已经对外发出的消息。第二,所有“验证者”公布自己的凭证并进行比较后,才能确定谁是“领导者”,也就是“领导者”可以视为由公共选举产生。第三,随机算法的性质决定了,事先很难判断谁将被选为“验证者”。因此,“验证者”的选择过程很难被操纵或预测。第四,尽管“敌对者”有可能事先安插一些交易来影响当前公共账本,但因为“种子”参数的存在,他仍然不可能通过影响“验证者”(特别是其中的“领导者”)的选择来攻击Algorand。接下来,对密码抽签和拜占庭协议BA★做一个相对技术化的介绍。

三、Algorand的密码抽签

密码抽签按两条线索执行:一是选出“验证者”和“领导者”;二是创建并不断完善“种子”参数。

四、Algorand的拜占庭协议BA★

拜占庭协议BA★相当于一个两阶段的投票机制。第一阶段,“验证者”对其收到的候选区块(为控制通讯成本,实际上用的是候选区块的哈希摘要)运行分级共识协议(graded consensus),选出“验证者”共识最多的候选区块。第二阶段,“验证者”对第一阶段选出的候选区块,运行二元拜占庭协议(binary Byzantine Agreement),即要么接受它,要么接受空区块。需要强调的,在每一阶段中的每一个子步骤,Algorand可能使用完全不同的“验证者”。




五、Algorand的测试情况

MIT计算机科学和人工智能实验室对Algorand进行了模拟测试[ Gilad, Yossi, Rotem Hemo, Silvio Micali, Georgios Vlachos, and Nickolai Zeldovich, 2017, “Algorand: Scaling Byzantine Agreements for Cryptocurrencies”. 本节引用的图均来自这篇文章。]。他们的测试在亚马逊云上进行,使用了1000台EC2虚拟机,发现:
第一,Algorand能在1分钟内确认交易,而且确认交易的时间随着用户数量的增加,变化不大。

第二,将用户数固定在5万,测试不同区块大小对通量(throughput,可以用产生一个区块的平均耗时来衡量)的影响。可以看出,区块越大,构建区块的耗时越长,但对拜占庭协议BA★的运行时间影响不大。

Algorand简介相关推荐

  1. 图灵奖得主Sivio Micali的Algorand区块链协议简介

    2018年2月,图灵奖得主.MIT教授Sivio Micali募集400万美元开发Algorand区块链协议一事受到了国内外媒体的普遍关注.2017年春天,笔者有幸在MIT选修了Micali教授和MI ...

  2. algorand共识协议_Algorand协议简介

    Algorand是权益证明(POS)的一个升级,彻底消除区块链分叉的可能性,可以在一小段时间内确认交易,Algorand的核心使用称为BA⋆的拜占庭协议,同时扩展到许多用户.即使一些用户是恶意的,网络 ...

  3. Algorand 系列一:VRF 密码学抽签原理及其在 Algorand 中的应用

    YOUChain Research YOUChain 研究团队,成员毕业于国内外顶级名校,有长期的工业界经验.我们持续跟踪的区块链学界和业界的前沿发展,致力于深入区块链本质,推动学术和技术发展.团队诚 ...

  4. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  5. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  6. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  7. TensorRT简介

    TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...

  8. 谷粒商城学习笔记——第一期:项目简介

    一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...

  9. 通俗易懂的Go协程的引入及GMP模型简介

    本文根据Golang深入理解GPM模型加之自己的理解整理而来 Go协程的引入及GMP模型 一.协程的由来 1. 单进程操作系统 2. 多线程/多进程操作系统 3. 引入协程 二.golang对协程的处 ...

最新文章

  1. idea springmvc_SSM三大框架使用Maven快速搭建整合(SpringMVC+Spring+Mybatis)
  2. Radio Button详细用法
  3. Codeforces 85D Sum of Medians
  4. c 语言 json序列化,C#中json字符串的序列化和反序列化 – 万能的聪哥 – 博客园...
  5. Python中的join函数
  6. 敏捷开发免费管理工具——火星人预览之四:故事板,燃尽图,我的工作项
  7. 纯粹透明背景的QGraphicsView
  8. 【VS2010安装教程】
  9. 小程序投标书_程序员接私活常用哪些平台?
  10. 博士申请 | 香港城市大学刘晨老师组招收机器学习方向全奖博士/博后/硕士/RA...
  11. PRCS-1016 : Failed to resolve Single Client Access Name
  12. 《My Fair Lady》All I want is a room somewhere
  13. 浅谈Flink对象重用(object reuse)
  14. 前端 js 微信 支付二维码
  15. 危化品爆炸场景下的应急通信系统解决方案
  16. k8s入坑之报错(9)k8s node节点加入到集群时卡住 “[preflight] Running pre-flight checks”...
  17. 浅谈PPO算法-玩转月球登陆
  18. 【声卡宿主】ProTools 2021.7.0使用安装教程
  19. 十月二日读书笔记(JSP网页的内置对象)
  20. 使用哈希表统计数组中数字出现的次数

热门文章

  1. Android webview里面的输入框点击不弹出软键盘 锁屏再解锁 重新获取焦点之后 就可以了
  2. 【Android】用Cubism 2制作自己的Live2D——来制作动态壁纸吧!
  3. 机器学习什么显卡_专攻机器学习 AMD官宣全球首款7nm显卡
  4. 游戏浅谈3-帝国荣耀
  5. OSG动画库Animation解析(一)
  6. CH32V307移植LVGL Master及Code::Blocks仿真笔记
  7. 多媒体演示文稿PowerPoint无法打开,可尝试修复此演示文稿 win10,office2010或2016的解决方法
  8. 什么编程语言最有前途
  9. Android模拟器 - error while loading state for instance 0x0 of device 'goldfish_pipe'
  10. 学习笔记(07):微信公众平台开发入门-案例:基于编辑模式开发“生活娱乐助手”...