8BTCCI: 11129.18 -2.20% 8BTCVI: 5209.73 -2.54% 24H成交额: ¥4126.40亿 +3.48% 总市值: ¥15752.53亿 -2.00%
Libra区块链论文解析——引言、数据逻辑模型(part 1)

Libra区块链论文解析——引言、数据逻辑模型(part 1)

格密链 发布在 区块链 海盗号 16666

本文由陈智罡博士撰写。

 

摘要 摘要中的第一句话就表明了facebook做Libra区块链的目的(做什么):

建立一个能够支持稳定加密货币的区块链,从而为全世界人民提供便捷的电子支付。

论文中特别强调该区块链是一个去中心化的可编程数据库。体现了Facebook满满的诚意,就是要落地应用。换成其它公司,哪敢称自己的区块链是数据库。在区块链界是存在鄙视链的,公有链鄙视联盟链,联盟链鄙视私有链,私有链只好看着数据库笑笑。

所以整个Libra技术论文紧紧围绕建立一个电子支付的区块链平台展开。

如何做呢?

为了建立该电子支付区块链平台,提出了Libra协议。该协议的目标是促进创新,降低进入门槛,改善金融服务。所以在Libra协议里,不仅包含技术,还有社区管理、生态建设等。

为了测试Libra协议,目前开发实现了一个协议原型:Libra核。“核(core)”在这里的含义是开发出了一个区块链大厦的地基,期望全世界都参与到Libra协议建设中,为其改进提高做出共同努力。

Libra协议具体功能是什么?

摘要第2段指出:Libra协议允许系统中的验证者(即记账者)共同维护这个具有可编程资源的数据库,而这些验证者们是来自于不同参与方的代表。这里有一个新名词:可编程资源。该资源由用户账户所拥有,并且遵守资源开发者所制定的规则。

具体的资源可以是币,或者其它具有可编程特性的东西。例如还可以是债券等。

验证者处理交易并且与其它验证者共同执行协议,以达到对数据库状态的共识,即账本的一致性。交易是基于系统中已经定义好的规则,在将来版本中,用户通过使用Move编程语言可以自定义智能合约来处理交易。这里引出了Libra区块链中另外一个重要的特征,就是内置了用于交易场景的编程语言Move。但是目前该编程语言还未完全成熟,没有发布正式版本。

Libra区块链中的核心机制都是通过Move定义,例如币,验证成员。这些核心机制有助于建立一种独特的治理机制,目前这种机制是建立在现有参与方的稳定性和声誉的基础上,但随着时间的推移将过渡到完全开放的系统。

以上就是摘要的全部内容。通过读论文中的摘要,可以领会论文的概貌,例如:目的,做什么,怎么做,效果。

从我们对论文摘要的解析,可以体会到Libra区块链的目的很明确,就是要建立一个全世界通用的区块链支付系统。该系统的核心是Libra协议,该协议是Libra区块链的基石。针对的对象是维护一个可编程资源的数据库。

目前Libra区块链只实现了Libra协议的原型,更多的开发留待更多的参与者共同开发。Libra协议的核心机制都是通过Move编程语言定义的,所以具有灵活性、可扩展性。但是目前为了落地与测试,用户还不能自定义规则。从摘要就能看到,Libra区块链是一个联盟链,记账者(论文中称为验证者)都是Libra区块链的参与方代表,是一个封闭的圈子。当然愿景是未来逐步开放到所有持有Libra币的参与者。

 

整个技术论文分为10部分:

1 Introduction--引言

2 Logical Data Model--逻辑数据模型

3 Executing Transactions--交易的执行

4 Authenticated Data Structures and Storage--可认证的数据结构和存储

5 Byzantine Fault Tolerant Consensus--拜占庭容错共识

6 Networking--网络

7 Libra Core Implementation-- Libra 内核实现

8 Performance--性能

9 Implementing Libra Ecosystem Policies with Move--使用Move实现Libra生态系统规则

10 What's Next for Libra?-- Libra发展规划

 

1 Introduction--引言

 

如果说摘要是对整个论文描述的一个浓缩,引言就是对论文的一个概览。横看成岭侧成峰,远近高低各不同,引言会进一步介绍论文的出发点,技术轮廓,创新点以及挑战。所以,引言一定要写好,读者或者审稿人能够通过引言对论文打出印象分,这个分数直接影响了该论文的前途。

读Libra技术论文的引言,就能够对它整个技术框架,创新点,性能等有个了解。对于一般非技术人员,读完引言就可以理解Libra区块链的特性了。

引言第1段就引出Libra区块链想解决的问题:

尽管互联网极大的促进了金融服务业的发展,但是对于那些最需要金融服务的人来说,获得金融服务仍然是有限的——受成本、可靠性和跨境汇款能力的影响。

为解决上述问题,论文提出了Libra协议。该协议支持Libra生态系统,旨在解决这些挑战,扩大资本准入,并作为创新性金融服务的平台。

为了实现上述宏观目标,这个生态系统中提供了一种全新的全球货币——Libra币。那么和现实中的货币有什么关系呢?

Libra币是与一些不同国家信誉良好的央行存款和国债绑定的,而且这些货币都经历了相对较低的波动,因此Libra币天生继承了这一稳定性,以及地理上来自不同地方的资产组合的优势。

这里指出Libra币的国际性,与一些央行都挂钩,凸显了Libra币的信用。

01

为了发展成为全球金融基础设施,Libra协议必须能够满足大规模的交易量。除此之外,还提供实现其经济和管理政策的灵活性。

交易规模是目前区块链技术的痛,这里论文里强调需要解决该问题。不禁让人想看看是如何解决的。

Libra协议从一开始就从整体设计上解决这些需求,并建立在前人的项目和研究基础之上,结合了目前一些新颖的方法和成熟的技术。

注意,新颖和成熟是并列的,前者说明了创新,后者说明了落地应用。

读到这里,是不是感觉很像比特币的技术路线,都是采用前人已有的技术,然后进行改造,为我使用。一切围绕着落地应用为目标。

金融服务业健康竞争和创新的一个重要前提是能够依赖共同的基础设施处理交易、维持账户,以确保不同服务和组织之间能够沟通合作。这句话很关键,说出了需要为多方合作提供一个公共平台的必要性,显然该平台应该是开放、公平以及有良好信用保证的。

为了提供上述平台,Libra协议使用区块链技术,利用区块链的去中心化特性,不受某一方控制,通过降低进入壁垒和成本,使得初创企业和现有企业能够在公平竞争的环境中竞争,并尝试新的业务模式和金融应用。

上面层层递进,从宏观金融问题,引入到区块链平台。下面将说到Libra区块链中的各个角色。

我们继续解析引言的第2部分。

引言的上一部分(引言1)讲了Libra的商业应用以及宏观目标。下面分别从项目的管理和技术方面,具体说说Libra区块链。

 

Libra区块链的管理

 

Libra区块链是去中心化的,由一些称为“验证者”的角色共同处理交易和维护区块链的账本状态。这些验证者们构成了Libra联盟成员,他们提供网络治理和Libra币的储备。

初始阶段,Libra联盟由来自不同区域的基金会会员组成。基金会会员是按照一定的标准选出,会员包括那些促使Libra生态系统发展以及注入资本的股东。以后,会员资格将逐步完全开放,Libra币持有者都可以进入。

Libra联盟已经发布了一些报告,包括发展规划愿景,管理结构,币的生态,以及朝着公链发展的路线图。

这篇技术论文是为了建立Libra区块链技术框架所迈出的第一步。发布这些早期的报告是为了对整个设计方案、发展计划以及研究方面为解决问题的挑战,征求社区的意见和反馈。为此,Libra建立了社区,以便大家参与讨论,共谋发展。下面具体说技术。

 

Libra协议

 

论文直接指出:Libra区块链是一个基于密码学认证的数据库,是通过Libra协议支持其运行。

数据库?那么区块链的账本又在哪里呢?

紧接着论文说:该数据库存储一个可编程资源的账本。可编程资源是什么东东。例如可编程资源可以是Libra币,当然也可以是其它的资源,例如债券等。资源是遵守由声明模块所制定的规则,也是存储在数据库中。

一个资源属于某个账户所有,该账户是由公钥所认证。一个账户直接代表系统的终端用户,或者某个实体,例如钱包,账户的行为代表着用户。

Libra区块链中有了两个核心角色:验证者和客户。读者要牢牢记住,Libra是一个区块链支付系统,所以一切都是以交易为中心。由于是去中心化的,所以达成共识是技术关键。

验证者的职责是维护数据库,将客户提交的交易存入数据库,然后更新数据库的状态。验证者是通过执行分布式共识算法,以达成对提交到数据库中的交易以及执行交易结果的共识。这些交易在数据库中形成一个不断增长的交易列表。

共识协议必须具有可靠性,能够抵御来自少数验证者可能的恶意行为。验证者轮流对已提交到数据库的交易进行处理。

02

在验证者中有一个“验证者头目”的角色,该验证者头目负责将收到的交易分发给其它验证者,这些交易可能来自于客户直接提交给验证者头目的交易,或者来自于其它验证者提交给头目的交易。

所有验证者执行头目发给自己的交易,并且形成一个可认证的数据结构,该结构包含了账本的最新状态。为了达成共识,验证者对数据结构的验证进行投票。

为了确认处于数据库状态第i版本的交易Ti,共识协议输出对第i版本下数据库整个状态的签名,包括数据库的全部历史。该签名用于响应来自客户的查询。

客户能够向验证者提出读取数据库中数据的查询,由于数据库是基于密码技术认证的,所以必须对能够保证对客户查询提供准确的响应。为此,当客户向验证者提出查询数据库时,该验证者返回他所知道的目前数据库最新状态版本认证的签名。这样就把时间和数据联系起来,已保持数据库状态的一致性。

此外,客户也可以通过验证者同步整个数据库,建立一个数据库的副本。客户通过数据库的副本能够校验验证者执行交易的正确性。这提供了系统的可审计性和透明性。客户端也可以从其他客户端中读取其保存的数据库副本。

图1显示了使用Libra协议进行交互的两种实体类型:(1)验证者(维护数据库)和(2)客户(对数据库执行查询并提交交易来更新数据库)。

03

图1:Libra协议的概述

至此,Libra区块链协议的轮廓介绍完了。为了大家更清楚,我们通过一个例子来说明。

例如,客户端A想要向客户端B转1个Libra币,那么客户端A就向Libra区块链提交一个交易。区块链平台收到交易,可能是验证者头目收到,也可能是其它验证者收到,无论谁收到交易都要提交给验证者头目。然后验证者头目再将交易分发给其它验证者去验证。验证者收到头目发来的交易后,执行交易并且对其验证,形成一个可认证的数据结构。注意这里我们所说的认证,就是指通过密码学手段达到的。然后验证者们对该认证进行投票。最后共识算法输出对整个数据库状态的一个签名,从而对该交易入库进行确认。

引言就此解析完毕,论文下面就是对各个方面进行详细描述。

读完引言,似乎感觉整个论文缺少技术创新点。在论文中也确实说是系统由已经存在的技术组成。所以在引言中看不到对创新点的描述。

不过通过摘要以及引言看出,Libra不在于技术创新,而在于系统落地应用的商业模式的创新。

 

2 Logical Data Model--逻辑数据模型

 

在比特币里面有个很重要的概念:时间戳。通过时间戳把交易与时间绑定,时间戳还控制着整个比特币系统运行的节奏。我们在解读比特币白皮书的文章里(解析比特币白皮书之时间戳服务)详细解释了其背后的含义。

Libra区块链是一个数据库,如何把数据与时间进行挂钩,交易与时间的关系,以及历史交易如何查询(也是一个与时间有关的问题),这些都属于数据逻辑模型需要阐述的。

Libra区块链中的所有数据都对应于数据库的某一个版本号,数据库的版本号表明了该数据库在某一段时间的状态。所以在描述Libra区块链中的交易时,必须指明是在哪一个版本状态下进行的。

一个版本号是一个无符号64位整数,与系统执行的交易数量相对应。

所以在Libra区块链中,通过一个三元组(Ti,Oi,Si) 来刻画交易的状态。其中Ti 表示当前的交易,Oi表示交易执行的结果,Si 表示账本状态。通过这三个元素刻画了交易的状态。例如对执行某个交易的操作Apply,可以用三元组来刻画,即在账本状态Si-1下执行交易Ti ,执行的结果为Oi ,新的账本状态是Si 。形式化表示为:

05

Libra协议通过Move语言实现区块链支付系统中对操作的执行。本节主要关注带有版本号的数据库。通过版本号控制的数据库允许验证者完成以下操作:

1. 在最新版本的账本下,执行某个交易

2. 对客户查询当前以及历史账本记录做出响应

问题来了,能够反映某个版本下的账本数据结构应该是什么样的呢?为什么要让账本的历史数据都是可查的呢?

首先从账本状态说起。

04

 

账本状态

 

账本状态根本上反映了Libra系统的客观状态。例如在某个时间某个用户持有多少Libra 币(当然这里时间是通过版本号来反映的)。而且为了执行交易,验证者必须知道目前账本的状态。

所以账本状态是执行操作依赖的基础,也是反映Libra系统的状态晴雨表。

Libra协议采用的是基于账户的模型。这是与比特币不同的地方,比特币采用的UTXO模型可以参考我们的比特币白皮书解析文章(解析比特币白皮书之交易)。

账本状态通过“键值对”存储在数据库中。学过数据库的人对“键值对”的概念不陌生。键值对将账户地址(key)映射到账户值(value)。账户值是由已发布的Move资源和模块构成,其中Move资源存储的是数据值,而模块存储的是代码。账户的初始状态是由创世块赋值。

下面解释账户地址。

 

账户地址

 

账户地址是一个长度为256位的值。为了建立一个账户,首先需要用户生成一个公钥私钥对(vk, sk),公钥 vk用于验证,私钥sk 用于签名。通过对公钥vk计算哈希值后产生一个账户地址a = H(vk)。

当某个账户将一笔交易发送给某个用户时,将调用create_account(a) Move指令产生一个账户,该新账户与这个用户对应。这种情况一般是发生在交易产生时,目标地址a还没有账户的情况下。

注意有了地址,还需要创建与之对应的账户。

一旦账户建立后,用户就可以使用该账户下的私钥sk 对交易签名。有时为了防止密钥可能被攻击的危险,可以采用密钥替换机制,每隔一段时间采用新密钥,终止原密钥的使用。当然使用新密钥意味着需要建立新的账户地址。所以一个用户可以有多个账户。

Libra协议允许一个用户建立多个账户,而且不会把账户与现实世界的身份对应起来。属于统一用户的账户之间没有关联关系。因此Libra协议提供了一种伪匿名的特性,与比特币和以太坊类似。

(未完待续)

文章标签: Facebook Libra
评论
登录 账号发表你的看法,还没有账号?立即免费 注册