Jameson Lopp关于“Libra区块链”的思考

摘要:我读过的任何内容都没有让我相信这个系统会抵制审查制度。

相比于Facebook昨日公布的Libra白皮书,一同公布的还有Libra技术文档白皮书。

 

而在今日,比特币开发者、专业密码朋克Jameson Lopp 对这一份包含53位作者,长达26页的技术文档进行了研究分析。其从逻辑数据模型、执行交易、身份验证、数据结构存储、LibraBFT、性能等多方面对Libra技术文档进行了拆分概述。

 

以下为Jameson Lopp对Libra技术文档的思考解读


摘要

白皮书:Libra协议允许来自不同机构的一组副本(称为验证器)共同维护可编程资源的数据库。

Jameson Lopp:系统将由一系列权威以自上而下的方式控制。然而,请注意,该数据库是针对“可编程资源”而不是数字货币。

白皮书:这些资源由公钥加密认证的不同用户帐户拥有,并遵守这些资源的开发人员指定的自定义规则。

Jameson Lopp:使用诸如“资源”之类的通用词语使我怀疑这不仅仅是一个稳定币。

白皮书:Libra协议允许来自不同机构的一组副本(称为验证器)共同维护可编程资源的数据库。“交易基于预定的合约。在未来的版本中,用户将使用一种名为Move的新编程语言来定义智能合约。我们使用Move来定义区块链的核心机制,比如代币和验证器成员资格。

Jameson Lopp:使用自定义构建的智能合约语言会导致很多问题,比如该语言的特性有多丰富,以及该系统对合约的强大程度。对于开发人员的友好程度以及Libra在多大程度上能够保护智能合约开发人员免于陷入困境,也会有一些问题。

白皮书:这些核心机制能够创建一种独特的治理机制,该机制建立在早期现有机构的稳定性和声誉的基础上,但随着时间的推移会过渡到完全开放的系统。

Jameson Lopp:听起来Libra协会将是一个可以通过投票和某种声誉来发展自己的联盟。

1.简介

白皮书:这一生态系统将提供一种新的全球货币——Libra货币——将由一系列银行存款和高质量中央银行的国债全额支持。

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

白皮书:随着时间的推移,Libra的会员资格将完全开放,并且仅基于Libra的会员持有量。

Jameson Lopp:听起来很像POS。显然,他们的计划是在5年后开放会员资格,并希望他们在那时能够找到POS……我预计他们会遇到和以太坊一样的问题!

白皮书:该协会发表的报告概述了向无许可制度转变的路线图。

Jameson Lopp:我很确定这将是分布式网络从许可到无许可过渡的第一个世界。也许网络作为一个整体可以切换到PoS,但为了维护稳定的peg / basket,一些实体必须保持与传统金融体系的桥梁畅通。这将是一个通过Libra协会持续集中控制的点。

白皮书:验证者轮流推动接受交易的过程。当验证器充当领导者时,它向其他验证器提议交易,包括客户端直接提交给它的交易和通过其他验证器间接提交的交易。所有验证器都执行交易,并形成一个包含新分类帐历史记录的经过身份验证的数据结构。作为共识协议的一部分,验证器对该数据结构的验证器进行投票。

Jameson Lopp:这听起来像是Practical Byzantine Fault Tolerance(拜占庭式的实用容错算法)——这是一种已有20年历史的老算法。但他们可能做了一些调整。我们在白皮书的第5节中了解到,它被称为LibraBFT,是HotStuff协商一致协议的变体。

白皮书:作为在版本i上提交交易Ti的一部分,共识协议在版本i上输出数据库的完整状态的签名(包括它的整个历史记录),以便对来自客户机的查询的响应进行身份验证。

Jameson Lopp:这主要是因为它意味着新验证器应该能够加入网络并快速同步,而不必重播区块链的整个历史记录,前提是它们信任现有的验证器。

2.逻辑数据模型

白皮书:Libra协议使用基于帐户的数据模型来编码分类帐状态。

Jameson Lopp:从数据结构的角度来看,Libra更像以太坊或Ripple,而不是比特币。由于基于输出的历史记录的简单性,UTXO模型有其优点和缺点,比如更好的隐私性和更健壮的交易历史记录。但是处理复杂的智能合约可能会更加困难。因此,账户模式是有意义的,Facebook不太可能关心隐私,而它确实对智能合约感兴趣。

白皮书:Libra的协议并不会将账户和真实身份相联系。用户可以通过生成多个密钥来自由创建多个帐户。由同一用户控制的帐户彼此之间没有内在的链接。该方案以比特币和以太坊为例,为用户提供假名。

Jameson Lopp:同时,我也想知道Libra的稳定币的资产情况是否也是如此…观察这个系统对于想要构建更隐私保护的应用程序的开发人员是很有趣的。

白皮书:每个资源都有一个模块声明的类型。资源类型是名义类型,由类型的名称和资源声明模块的名称和地址组成。

Jameson Lopp:听起来人们可以生成一个地址,只要每个资产都有一个惟一的名称,该地址就可以分配任意数量的资产。

白皮书:执行交易Ti将生成一个新的分类账状态Si,并且执行状态代码、gas usage和事件列表。

Jameson Lopp:那么现在我们知道如何通过类似于以太坊的资源成本系统来保护系统免受资源耗尽攻击。

白皮书:在分类账的历史上其实没有交易的概念。

Jameson Lopp:有趣的是,Libra协议中没有实际的区块链数据结构——区块更多的是一个虚拟/逻辑结构,用于协调系统状态的已确认快照。现在这一节的第一句话更有意义了:

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

Jameson Lopp:我所熟悉的每个加密资产网络在非常高的层次上都以相同的方式工作:存在系统状态,然后执行交易,实际上是一个状态转换功能,然后存在新的系统状态。

将成批交易放入容器(块)的目的是为了进行订购/加盖时间戳。这对于通过动态多方成员签名(验证者可以自由地加入和离开网络)验证数据的无许可网络非常重要。由于Libra运行的是一个经过许可的系统,所以它可以使用一个更高效的一致性算法,而不需要批处理事务,因为事务历史记录被重写的可能性很小。

白皮书:在Libra协议的初始版本中,只有一小部分Move功能可供用户使用。虽然Move用于定义核心系统概念,例如Libra货币,但是用户无法发布声明自己的资源类型的自定义模块。在向用户公开之前,这种方法允许移动语言和工具链变得成熟——这是由实现核心系统组件的经验决定的。这种方法还避免了事务执行和数据存储方面的可扩展性挑战,而事务执行和数据存储是通用智能合约平台所固有的。

Jameson Lopp:这听起来非常类似于前面提到的“开放验证器成员资格”计划。似乎Facebook并没有解决Ethereum多年来一直在努力解决的任何一个大问题。

白皮书:为了管理对计算能力的需求,Libra协议收取以Libra币计价的交易费用。

Jameson Lopp:有趣的是,听起来Libra的币实际上是协议的原生单位,就像ETH是以太坊的原生单位一样。这就导致了更多关于天秤座假名性质的问题;你可以在没有AML/KYC的情况下获得币吗?如果没有,那么你似乎无法匿名使用系统的任何功能。通过阅读Calibra wallet,它将需要AML/KYC,因此我想知道最终是否会有进入不受严格控制的系统中。

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

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


3.执行交易

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

Jameson Lopp:这听起来相当危险,但作者指出,核心组件必须以防御性方式编写,以防止DoS攻击。

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

Jameson Lopp:这就澄清了之前的问题:Libra币是否像ETH或BTC一样是天生的资产。我希望这些币只是默认的/唯一的资源类型。

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

Jameson Lopp:这听起来是经过深思熟虑的;希望这意味着他们的脚本语言的安全性将比Ethereum得到更好的审查。

4.经过身份验证的数据结构和存储

白皮书:Libra协议使用一个Merkle tree为分类帐历史提供一个经过验证的数据结构。具体来说,分类帐历史使用Merkle tree累加器方法来形成Merkle tree,这也提供了高效的附加操作。

Jameson Lopp:我们再一次看到“Libra区块链”实际上不是区块链。这个协议看起来设计得很好,但是当分类帐历史的数据结构是一组有签名的分类帐状态时,他们却一直称它为区块链,这真的很奇怪。验证者正在为每个分类帐状态做出承诺,所有的历史分类帐状态也在Merkle tree中被承诺,但是我还没有看到任何形成链的数据的反向链表,更不用说形成区块了。

白皮书:帐户的验证器是此序列化表示的哈希值。注意,这种表示需要在对帐户进行任何修改之后,对整个帐户重新计算身份验证器。该操作的代价是O(n),其中n是完整帐户的字节表示长度。

Jameson Lopp:如果没有对给定帐户存储的数据量进行限制,那么听起来就像DoS向量。

白皮书:我们预计,随着系统的使用,最终与帐户相关的存储增长可能会成为一个问题。正如Gas鼓励负责任的使用一样。对于计算资源,我们希望可能需要类似的基于rent的存储机制。我们正在评估一系列最适合生态系统的基于rent的机制的方法。

Jameson Lopp:另一个未解决的问题。迫不及待地想说“the rent is too damn high!!”

白皮书:为了允许客户端同步到新配置,epoch期间和epoch之后的一段时间内的投票权都必须保持诚实。离线时间超过此期间的客户机需要使用一些外部数据源重新同步,以获得它们信任的检查点。

Jameson Lopp:目前尚不清楚“这个时期”有多长,但如果一个epoch不到一天,我猜它也不到一天。似乎这个共识协议不够强大,参与者可能会离开并重新加入他们希望的网络。

5.LibraBFT

白皮书:LibraBFT假设一组3f + 1的投票分布在一组验证器中,这些验证器可能是诚实的,也可能是拜占庭式的。LibraBFT仍然是安全的,当最多f票由拜占庭验证员控制时,它可以防止双重开销和分叉等攻击。

Jameson Lopp:就像PBFT一样,这种一致算法可以容忍33%的验证器不诚实。HotStuff修改听起来经过深思熟虑:

1、通过让验证员对区块的状态(而不仅仅是事务序列)进行签名来抵制非决定性错误。

2、一个发出明确超时信号的pacemaker,验证器依赖于其中的仲裁来进入下一轮——这应该可以提高活性。

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

4、聚合签名保留签署仲裁证书的身份验证器,以对块接受进行投票。

6.网络

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

Jameson Lopp:这将需要大量的工作,以便将系统扩展到超过数百个验证器。

7、Libra核心实施

白皮书:Libra区块链的安全性取决于验证器、Move程序和Move VM的正确实现。解决Libra核心的这些问题是一个正在进行的工作。

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

8、性能

白皮书:我们期待Libra协议的首次推出,以支持1000次支付计算。每秒1000次支付交易,并且在提交和提交的交易之间有10秒的最终时间。由于只有100个左右的验证器并且它们都直接相互连接,因此10秒的“区块时间”听起来可行。

Jameson Lopp:

最小节点要求:

40 Mbps Internet connection

1 commodity CPU

16 TB SSD

之前有一些参考文献要求保持验证器从头开始执行初始同步的能力,而不是信任来自其他验证器的签名状态。我预计,如果Libra得到充分利用,那么执行这样的同步将很快变得非常不切实际,因此节点安全模型将高度依赖于信任验证器。

9、用Move实施Libra生态系统政策

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

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

白皮书:一致性算法依赖于验证器集管理Move模块来维护当前的验证器集并管理验证器之间的投票分配。最初,Libra 区块链仅向创始成员授予选票。


Jameson Lopp:假设验证器对验证器集的更改进行投票,这听起来会导致类似于我们在POS系统中看到的问题——远程攻击。如果创始成员的私钥的阈值受到损害,攻击者是否可以从创世块中编写一个新的分类帐历史记录吗?如果是,其他节点会接受吗?目前尚不清楚共识协议是否允许重写旧状态或仅仅是附加状态。

白皮书:我们计划逐步过渡到POS

Jameson Lopp:如果他们能解决未解决的问题。

突出的问题:

治理是如何工作的?

我们可以看到Libra协会是一个由成员组成的委员会,需要2/3的绝对多数人才能做出改变。他们是唯一被允许铸造或销毁Libra币的人,但如果有足够的共识,他们可以做出任何他们想要的改变。

是否需要AML / KYC?

显然不是在协议级别,但Calibra钱包声明所有用户将通过政府发布验证ID。这听起来就像Calibra钱包将是至少一段时间内唯一可用的钱包,所以目前还不清楚如果开发人员和用户可以在Libra上运行应用程序的网络,不遵守相同的标准口径。

什么是低费用?什么是正常操作?什么是足够的容量?

Calibra 钱包FAQ承诺收费低,但这似乎与在高负载时底层协议的操作相冲突。

白皮书:交易费用将是低成本和透明的,特别是如果你是国际汇款。Calibra将削减费用,以帮助人们保留更多的钱。

Libra真的会对开发者开放吗?

根据实现无许可共识的计划:

白皮书:Libra区块链将向所有人开放——任何消费者、开发者或企业都可以使用Libra网络,在其基础上构建产品,并通过他们的服务增加价值。开放获取确保了进入和创新的低门槛,并鼓励有利于消费者的健康竞争。

Jameson Lopp:我怀疑开发人员能够在这个平台上运行他们梦寐以求的任何技术上有效的应用程序。我读过的任何内容都没有让我相信这个系统会抵制审查制度,但只有时间会证明!


作者:Jameson Lopp  比特币开发者、专业密码朋克

编译:共享财经马明  责编:共享财经Neo

本文来源: 区块链新金融 文章作者: Jameson Lopp 我要纠错
声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。
提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

金色财经 > 区块链 > Jameson Lopp关于“Libra区块链”的思考