对Libra的一些思考

来源:财经网 作者: 2019/06/27

比特币开发者Jameson Lopp对Facebook发布的Libra区块链技术白皮书发表了一些个人见解,并对该白皮书进行了解读,他认为,Libra并不完全是区块链,而更偏向于似以太坊和瑞波。

本文由财经网-链上财经编译自Medium,不代表财经网-链上财经的观点。

原文链接:https://onezero.medium.com/thoughts-on-libra-blockchain-49b8f6c26372

作者:Jameson Lopp   编译:LornaQ

比特币开发者Jameson Lopp对Facebook发布的Libra区块链技术白皮书发表了一些个人见解,并对该白皮书进行了解读,他认为,Libra并不完全是区块链,而更偏向于似以太坊和瑞波。

“不同机构的节点通过Libra协议的副本,即作为验证者节点,共同维护一个可编程资源的数据库。”

这句话表明,该系统由这些机构自上而下地控制。然而,需要注意这里所说的数据库可用于可编程的资源,而不仅仅是加密货币。

“这些资源由通过公钥加密验证的不同帐户所拥有,这些账户需要遵循开发者所制定的规则。”

这句话中使用广义的类似“资源类型”的词,我认为这个数据库绝不仅只用于一个稳定币。

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

值得注意的是,使用定制的智能合约语言会导致很多问题,比如语言功能是否足够丰富、该系统抗攻击能力是否足够强、对开发者是否足够友好、易用等等。

“这些核心机制在早期能够创建一种独特的治理机制,该机制依托于现有机构的稳定性和良好信誉,但随着时间的推移,这个机制会过渡为一个分散的、不断成长的开源贡献者社群。”

也就是说,Libra协会将会是一个依托于投票机制和基于已有企业信誉而建立的联盟。

简介

“对于每个新创建的Libra 加密货币,在 Libra 储备中都有相对应价值的一篮子银行存款和短期政府债券,以此建立人们对其内在价值的信任。”

Libra是一个通用的加密货币协议,第一个资产将是稳定币。

“随着时间的推移,Libra的成员制申请将完全开放,并且Libra的持有量将作为唯一标准。”

听起来倾向于POS机制。但明显地,这个成员制将在五年后开放,虽然我猜测他们可能会遇到跟以太坊之前相同的问题,但还是希望五年后他们会选择POS机制。

“Libra协会发布了报告框架,路线图显示目标是让Libra网络成为非许可性网络。”

我确信这将是区块链历史上第一次从许可型过渡到非许可型。未来整个网络有可能都转变为POS机制,但为了维持Libra稳定币的锚定机制,需要先让传统金融体系进来,而协会的工作之一就是与社群合作、研究和实施从从许可型向非许可型过渡。

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

这类似于拜占庭容错机制,这一机制已有20余年历史,已经得到了广泛的认可,不过Facebook将会对该机制进行调整。白皮书的第5节提到,Libra 区块链采用了基于 LibraBFT 共识协议,是HotStuff共识协议的变体。

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

这一点很重要,首先这意味着新的验证者节点需要能够加入网络,其次在不需要回放区块链的整个历史记录的条件下快速同步,这就需要它们信任现有的验证者节点。

逻辑数据模型

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

从数据结构的角度来看,Libra更倾向于似以太坊或Ripple瑞波,而不是比特币。UTXO(Unspent Transaction Output未消费交易输出)模型有其优缺点,例如,由于其输出记录简化,因而隐私性强和交易记录能力强。但是,它处理复杂的智能合约时会比较困难。因此,账户模型就处于优势地位,因为从以往案例来看Facebook不太关注隐私性,尽管该平台听起来对智能合约颇有兴趣。

“Libra区块链遵循匿名原则,允许用户持有一个或多个与他们真实身份无关的地址。用户可以通过生成多个密钥对来自由地创建多个帐户。同一用户拥有的不同帐户之间没有内在关联。该方案效仿比特币和以太坊,为用户提供匿名性。”

我很想知道加密资产Libra是否也具有上述匿名性。对于注重隐私性的开发者来说,值得持续关注该系统的开放性。

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

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

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

由此可知如何保护Libra系统免受攻击,可能是利用了类似于以太坊的资源消耗系统。

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

Libra协议中没有实际的区块链数据结构,区块更像是一个虚拟的逻辑结构,验证者节点使用它来配合已确认的系统状态快照。

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

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

0 WnowcZcUmqOfxUAD

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

“在初始版本的 Libra协议中,用户只能使用一小部分Move的功能。虽然Move用于定义核心系统概念,例如Libra加密资产,但是用户无法宣布自己的资源类型,因此不能产出定制模块。由于可实现核心系统组件的经验,因此,这种方法让Move语言和工具链逐渐成熟。这种方法还避免了通用智能合约平台所固有的交易执行和数据存储方面的可伸缩性弊端 。”

似乎Facebook还没有解决以太坊多年来一直在努力解决的所有重大问题。

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

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

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

这听起来很模糊,并且会引出许多问题:低收费的标准是什么?什么是正常操作? 足够的容量的标准是多少?

行交易

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

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

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

之前的疑惑得以解决:Libra 加密资产是否像ETH或BTC一样是原生的资产。我希望这些币只是系统启动时默认的或唯一允许的资源类型,其他资源将在以后提供。

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

这听起来是经过深思熟虑的,希望这意味着Libra的脚本语言的安全性将比以太坊更好。

验证的数据构和存

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

Libra实际上并不完全是区块链。值得注意的是,这个协议似乎设计得很好,但是当分类帐本记录的数据结构是一组有签名的分类帐状态时,他们仍然把它称为区块链。验证着节点正在为每个分类帐状态做出承诺,并且所有的历史分类帐状态也在默克尔树中承诺,但是我还没有看到任何形成链的数据的反向链表,更不用说形成块链了。

“帐户的验证者节点是一个序列化表示的哈希值。”

注意,这种表示形式需要在对帐户进行任何修改之后,对整个帐户重新计算认证者。该操作的成本是O(n),其中n是完整帐户的字节表示长度。”

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

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

另一个未解决的问题:“租金太高了!”

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

目前尚不清楚这个“时间段”有多长,但是如果一个epoch小于一天,那么我猜指定的“时间段”也是。似乎这个共识协议不够强大,参与者可以按照自己的意愿离开并重新加入任意网络。

拜占庭容机制

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

与PBFT非常相似,这种一致性算法可以容忍33%的验证者不诚实。修改的HotStuff听起来很合理:

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

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

3、不可预测的领导者选举机制,以限制DoS攻击领导者。

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

这将需要大量的工作,才能将系统扩展到超过几百个验证人节点。

Libra核心内容

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

虽然他们在Rust部分编写了实施,但这对性能和安全性来说似乎是一个良好的开端,但这部分内容基本总结到位。

性能

“我们预计Libra协议的首发将支持每秒1000 TPS,并且在提交与确定交易之间有10秒的最终时间。”

因为前期只有100个验证者节点,而且它们都是直接相互连接的,所以10秒的出块时间貌似是可行的。

最小节点要求:

·  40 Mbps网络连接

· 1 商用CPU

·  16TB SSD

之前有一些关于维护节点从头执行初期同步的能力的参考文献,而不是信任来自其他节点的签名状态。我认为,如果Libra得到了广泛的使用,那么执行这样的同步将变得不切实际,因此,节点安全模型将高度依赖于信任的验证者节点。

Move实现Libra的生策略

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

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

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

假设验证者节点对验证者节点集的更改进行投票,这似乎会导致远程攻击 。如果创始成员的私钥的足够阈值遭到破坏,攻击者是否可以从创世区块中编写一个新的分类帐本记录?如果是,其他节点会接受吗?目前尚不清楚共识协议是否允许重写旧的状态,或允许追加。

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

如果他们可以解决尚未解决的问题,系统会逐步完善。

编辑:覃耀
分享到:

相关新闻