LIBRA:解读Facebook Libra运行机制九大问题

6月18日,Facebook发布Libra白皮书,引起了国内各界热议,而白皮书详细的技术运行机制却鲜有静下心来的探讨,本文译自《未来前沿》作者JamesonLopp的一篇评论文章,他深入研究了FacebookLibra长达26页的技术文档,对53处印象深刻,因此本文是JamesonLopp对Libra所运行的平台协议的九大问题的深度解读。

摘要

“Libra协议允许不同的机构验证人节点共同维护一个可编程资源的数据库。”

解读:这就意味着,这些机构可以自上而下地控制这个系统。并且请注意,它指的是这个数据库可用于“可编程资源”而不仅仅是数字货币。

“这些资源由不同的公钥加密验证帐户所拥有,并遵循这些开发人员所制定的规则。”

解读:使用类似“资源”一类的词,使我怀疑,这个数据库绝不仅是用于一个稳定币。

“交易是基于已有的智能合约,在未来的版本中,用户将使用一种名为Move的新编程语言来定义智能合约。我们使用Move来定义这条链的核心机制,比如货币和验证人节点资格。”

解读:这就有意思了。使用定制的智能合约语言会导致很多问题,比如语言功能是否足够丰富、该系统抗攻击能力是否足够强,对开发人员是否足够友好,以及是否能让开发人员不用自讨苦吃等等。

“这些核心机制在早期能够创建一种独特的治理机制,该机制依托于现有机构的稳定性和信誉度,但随着时间的推移,这个机制会过渡到完全开放的系统。”

解读:听起来Libra协会将会是一个基于投票机制和已有企业信誉而建立的联盟。

一简介

“这个生态系统将提供一种全新的全球货币,该货币完全由一篮子银行存款和高信用度的央行国债支撑。”

解读:Libra是一个通用的加密货币协议,而第一个资产就是稳定币。

“随着时间的推移,Libra的会员申请将完全开放,并且只根据Libra的持有量。”

解读:听起来很像POS机制。但这个计划是在五年后才开放会员资格,虽然我猜测他们可能会遇到跟以太坊相同的问题,但还是希望到那个时候他们已经搞定了POS机制。

“Libra协会发表了一些报告,展示了他们将向无许可系统转变的路线图。”

解读:我确信这将是区块链历史上第一次从许可制过渡到无许可制。未来整个网络有可能都转变为POS机制,但为了维持Libra稳定币的锚定机制,需要先让传统金融体系进来,而Libra协会就是来做这件事的。

“验证节点轮流确认交易的过程。当一个节点成为领导者时,它将向其他节点广播交易信息,无论是用户直接提交的还是由其他节点间接提交的交易信息。所有节点都执行交易,并形成一个经验证过的,包含新交易记录的数据结构。作为共识机制的一部分,节点会对这个数据结构进行投票。”

解读:这看起来像拜占庭容错机制,这一机制已有20年历史,已经得到了广泛的认同,不过Facebook可能会对这个机制进行调整。我们在白皮书的第5节中看到,新机制名叫LibraBFT,是HotStuff共识协议的变体。

“在i版本中,作为发起交易Ti的一部分,共识协议会输出一个签名,签在i版本的完整数据库上,包括整个历史记录,以便响应客户的验证需求。”

解读:这一点值得注意,因为这意味着新的节点要能加入网络并快速同步,且不必回放区块链的整个历史记录,前提是它们信任现有的节点。

二、逻辑数据模型

Libra协议使用基于帐户的数据模型来对分类账本状态进行编码。

从数据结构的角度来看,Libra更像以太坊或Ripple,而不是比特币。UTXO模型有优点也有缺点,比如由于其输出记录更简化,因此拥有更高的隐私度和更强的记录能力。但是处理复杂的智能合约时会比较困难。因此,账户模式是有意义的,因为Facebook不太可能关注隐私,尽管该平台听起来对智能合同很感兴趣。

“Libra协议并没把账户和真实世界的身份联系起来。用户可以通过生成多个密钥对从而自由地创建多个帐户。由同一用户控制的帐户彼此之间没有内在的关联。该方案是模仿比特币和以太坊,为用户提供虚拟身份。”

解读:这太让人惊喜了,但我想知道Libracoin是否也是这样的资产。对于那些想要开发隐私应用的程序员来说,观察这个系统的开放程度将是一件很有趣的事情。

“每个资源都有一个用模块广播的样式。资源样式是由样式的名称和资源广播模块的名称和地址组成的。”

解读:这意味,只要每个资产都有一个惟一的名称,您就可以生成一个地址,并且在这个地址上任意分配资产。

“执行一个交易Ti将生成一个新的分类帐本状态Si,以及执行状态代码、gas使用量和事件列表。”

解读:OK,现在我们知道了如何保护Libra系统免受攻击,应该是利用了类似于Ethereum的资源消耗系统。

“在分布式账本的历史上没有交易的概念。”

解读:这一点很有趣。Libra协议中没有实际的区块链数据结构,区块更像是一个虚拟的逻辑结构,节点使用它来配合已确认的系统状态快照。回过头来看,这一节的第一句话更有意义:

“Libra区块链中的所有数据都存储在一个版本控制的数据库中。版本号是一个临时的64位整数,对应系统执行的交易数。”

解读:我所熟悉的每一个高级加密资产网络都以相同的方式工作:出现一个系统状态,然后执行一笔交易,实际上是一个状态转换函数,然后出现一个新的系统状态。

将成批的交易记录放入容器或区块的目的是为了对它们进行排序和戳时间戳。这对于无许可网络非常重要,在这种网络中,数据通过动态多方成员签名进行身份验证,节点可以自由地加入和离开网络。因为Libra运行一个经过许可的系统,所以它可以使用一个更有效的协同算法,而不需要批量处理交易,因为交易历史记录被重写的可能性很小。

“在最初版本的Libra协议中,只有一小部分Move功能可供用户使用。虽然Move用于定义核心系统概念,例如Libracoin,但是用户无法宣布自己的资源样式,因此不能产出定制模块。这种方法让Move语言和工具链走向成熟,得益于实现核心系统组件的经验,而且比用户知道还要早。这种方法还避免了交易执行和数据存储方面的可伸缩性挑战,而交易执行和数据存储是通用智能合约平台所固有的。”

解读:这听起来非常类似于前面提到的“openvalidatormembership”计划。似乎Facebook还没有解决Ethereum多年来一直在努力解决的所有重大问题。

“为了管理对计算能力的需求,Libra协议收取以Libracoin计价的交易费用。”

解读:Libracoin实际上是协议的原生单位,就像ETH是以太坊的原生单位一样。这就引出了另一个关于Libra的假名性质的问题:你能在没有AML/KYC的情况下获得Libracoin吗?如果没有,那么您似乎无法匿名使用系统的任何功能。读取Libra钱包中发现,它将需要AML/KYC。所以我想知道最终是否会有一些进入系统的通道没有受到严格控制。

“该系统的设计目的是在正常运行期间,当有足够的容量时,有较低的费用。”

解读:这确实很模糊,并引发了许多问题:什么是低收费?什么是正常操作?什么是足够的容量?

三、执行交易

“区块链的核心逻辑的许多部分都是使用Move定义的,包括gas费用的扣除。为了避免循环,VM在执行这些核心组件时禁用了gas计量。”

解读:这听起来相当危险,但文档的作者指出,必须防御性地编写核心组件,以防止DoS攻击。

“Move的关键特性是能够定义自定义的资源类型……Move类型系统为资源提供了特殊的安全保障。资源永远不能复制,只能移动。这些保证由MoveVM静态执行。这使得我们可以用移动语言将Libracoin表示为一种资源类型。”

解读:这就澄清了之前的问题:Libracoin是否像ETH或BTC一样是天生的资产。我希望这些币只是系统启动时默认的或唯一允许的资源类型,其他资源将在稍后提供。

“Move的基于堆栈的字节码比高级源代码的指令更少。此外,每个指令都有简单的语义,可以通过更少的原子步骤来表达。这减少了Libra协议的规范占用空间,并且更容易发现实现错误。”

解读:这听起来是经过深思熟虑的,希望这代表他们的脚本语言的安全性将比Ethereum获得更好的审查。

四、已验证的数据结构和存储

“Libra协议使用一个Merkle树来为分类帐本记录提供一个经过验证的数据结构……具体来说,分类帐本记录使用Merkle树累加器方法来形成Merkle树,这也提供了高效的附加操作。”

解读:我们再一次看到Libra的区块链实际上不是区块链。奇怪的是,这个协议似乎设计得很好,但是当分类帐本记录的数据结构是一组有签名的分类帐状态时,他们仍然把它称为区块链。节点正在为每个分类帐状态做出承诺,所有的历史分类帐状态也在Merkle树中被承诺,但是我还没有看到任何形成链的数据的反向链表,更不用说形成块链了。

“帐户的节点是一个序列化表示的哈希值。注意,这种表示需要在对帐户进行任何修改之后,对整个帐户重新计算认证者。该操作的代价是O(n),其中n是完整帐户的字节表示长度。”

解读:emmm,如果没有对给定帐户存储的数据量进行限制,这听起来像是DoS攻击的开端。

“我们预计,随着系统的使用,最终与帐户相关的存储增长可能会成为一个问题。正如gas鼓励负责任地使用计算资源一样,我们预计可能需要类似的寻租存储机制。我们正在评估一系列最适合生态系统的寻租机制方法。”

解答:另一个未解决的问题。迫不及待地想说“租金太高了!”

“为了允许客户同步到新配置,在epoch期间和epoch之后的一段时间内,投票权必须有所保证。离线时间超过此期间的客户需要使用一些外部数据源重新同步,以获得它们信任的检查点。”

解读:不清楚这个“时间段”有多长,但是如果一个epoch小于一天,那么我猜指定的“时间段”也是。似乎这个共识协议不够强大,参与者可能会离开并重新加入他们希望的网络。

五、拜占庭容错机制

“LibraBFT假设一组3f1的投票分布在一组验证人节点中,这些节点可能是诚实的,也可能是拜占庭式的。LibraBFT仍然是安全的,当最多f票由拜占庭节点控制时,它可以防止双花和分叉等攻击。”

解答:就像PBFT一样,这种一致算法可以容忍33%的验证器不诚实。HotStuff听起来很合理:

1、通过验证人节点对块的状态(而不仅仅是交易顺序)进行签名来抵制非决定论错误。

2、一个会发出显式超时的起搏器,验证人节点依赖于这些超时的法定数量来移动到下一轮,这应该会提高活性。

3、无法预测的领导人选举机制,以限制DoS攻击领导人。

六、网络

“Libra协议中的每个验证器都维护着系统的所有成员关系图,并直接连接到需要与之通信的任何验证人节点。不能直接连接的节点被认为属于系统所能容忍的拜占庭式故障的范围。“

解读:这将需要大量的工作,以便将系统扩展到超过几百个验证人节点。

七、Libra重点内容

“Libra区块链的安全性取决于验证人节点、移动程序和移动VM的正确实现。解决Libra核心的这些问题是正在进行的工作。”

解读:虽然他们在Rust中编写了实现,但这对性能和安全性来说似乎是一个良好的开端,但这部分内容已经基本总结完毕。

八、性能

“我们预计Libra协议的首次发布将支持每秒1000个TPS,在提交和提交交易之间有10秒的最终时间。”

解读:因为只有100个节点,而且它们都是相互直接连接的,所以10秒的块时间听起来是可行的。

最小的阶段要求:

·40Mbps网络连接

·1商用CPU

·16TBSSD

前面有一些关于维护节点从头执行初期同步的能力的引用,而不是信任来自其他节点的签名状态。我预计,如果Libra得到了很多使用,那么执行这样的同步将很快变得非常不切实际,因此,节点安全模型将高度依赖于信任节点。

九、用Move实现Libra的生态系统策略

“Libra的coin储备是实现保值的关键机制。通过储备,每枚币都有一套稳定的流动资产作为后盾。Libra的合约允许协会在需求增加时铸造新硬币,当需求减少时销毁它们。该协会不制定货币政策。它只能根据授权经销商的要求铸造和销毁币。用户不必担心这种关联会导致通胀或货币贬值:要铸造新硬币,必须有相应的法定存款准备金。”

解读:但现在我们讨论的是网络外部的事件。正如白皮书前面所述,网络无法执行使用网络状态外部数据输入的脚本。因此,上述代码片段中的“can”和“must”修饰语肯定是指Libra的协会政策或合约义务,而Libra的社交网络并不知道这些。

“共识算法依赖于节点集管理移动模块来维护当前的节点,并管理节点之间的投票分配。最初,Libra的区块链只给创始成员投票。”

解读:假设节点对节点集的更改进行投票,这听起来会导致类似于我们在利害攸关系统的证明中看到的问题——长程攻击。如果创始成员的私钥的一个足够的阈值被破坏,攻击者可以从创世区块中编写一个新的分类帐本记录吗?如果是,其他节点会接受吗?目前尚不清楚共识协议是否允许重写旧的状态,还是只允许追加。

“我们计划逐步过渡到POS的阶段。”

解读:如果他们能解决这些悬而未决的问题,那就太棒了。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:0ms0-4:269ms