Algorand简介

原文地址: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★的运行时间影响不大。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值