据悉,Libra白皮书共由53人署名撰写,其中包括了诸多权威专家和技术大牛。但是,Facebook首席执行官马克·扎克伯格,以及Facebook区块链项目负责人大卫·马库斯都没有署名参与。
Libra区块链参考了许多现有的区块链技术,包括以太坊的Account-based、实用拜占庭容错等等。不过,Libra虽然名为区块链,但本身的结构中并没有区块;此外,他们还开发了一个独特的智能合约语言“Move”。
整体来看,Libra白皮书似乎是“集各家所成”,在评估了当前各类区块链的优势后,进而设计出的一套最适合的机制与技术架构。
但是Libra白皮书给人的感觉依然是“缺乏亮点”,因为白皮书中并没有表示它们解决了目前区块链面临的问题,所以未免会让很多人感觉到很失望。
由此来看,发布这份白皮书的主要目的可能还是在于吸引更多社群讨论与反馈。
1
五年后:从联盟链变成“公有链”
根据白皮书以及一些确定的消息,Libra的节点是由Libra协会里的机构所运行,且必须通过一定的门槛,而参与的机构需要连续五年缴纳“发展金”,每年至少缴纳1000万美元帮助Libra发展,且参与的机构需要成立非营利组织,而在初期会由Libra协会运行这个区块链。
这种由特定组织内运行节点的区块链,其实就是我们通常所说的“联盟链”,Libra白皮书中称之为“许可型区块链”,这部分与Hyperledger十分相似。
此外,白皮书中也直接了当的写道:“Libra协议允许来自不同机构的一组副本共同维护可编程资源的数据库。”
而从白皮书看来,Libra会逐渐开放越来越多的机构参与,最后会开放100个节点,实现每秒1000笔交易,这些机构必须通过另外独立的代币进行链上投票,进而管理Libra的相关决策。
随着时间的推移,Libra最后会演变成公有区块链,所有人都可以作为节点验证交易,似乎暗示了Libra未来将会走向权益证明区块链。
另外值得注意的一点,因为Libra现在类似于联盟链,交易历史较不容易被重写,它不会要求用户验证整个帐本,用户只需要持有最后一个被验证的内容,这点与R3的Coda区块链类似,白皮书是这样写的:
“历史数据可能会超出单个服务器可以处理的数量。验证者可以随意丢弃在处理新交易时不需要的历史数据。”
2
不算区块链?
Libra不断在各种介绍中称自身为区块链,这一点其实比较令人困惑。因为严格来说Libra其实并不算是区块链,这点在Libra白皮书中也有写道:
分布式帐本中没有交易区块的概念。
在Libra中,并没有区块链形式的数据结构,取而代之的,在Libra之中是一种逻辑结构,而这种结构是用来协调系统的已确认快照。所有数据都存储在“单个版本控制的数据库”中,数据库中有64位数的哈希值,这些哈希值对应了系统执行的交易数据。
有趣的是,白皮书表示数据库是针对“可编程资源”,而不只是可编程货币。这意味着Libra不仅是支付系统,也可以在上面撰写智能合约。
3
类似PBFT的共识算法
Libra的共识算法“LibraBFT”基于HotStuff框架,而该系统的节点验证方式类似于20年就出现的实用拜占庭容错,其方式如下:
1.节点轮流当领导验证节点,客户端的交易数据给领导节点。
2.领导节点将交易数据交给其他验证节点。
3.领导节点和验证节点同时验证此交易,并各自形成包含验证数据的新帐本数据。
4.验证者在新帐本数据投票,产生共识协议,包含“交易Ti”以及新的帐本“i版本”。
5.客户端可向验证节点查询数据,包括整个帐本。
这个共识算法与PBFT非常相似,每一个收到信息的节点,都会广播至其他人,不断重复进行信息交换,相互验证,让可信的节点之间能够确认正确的信息,识别出有问题的节点。这种系统可以容忍33%、也就是三分之一的不诚实节点作恶。
4
Libra的帐户系统:Account-based
Libra区块链协议的帐户是匿名的,用户经过KYC认证后,可以通过生成多个私钥对创建多个帐户。由同一用户控制,而帐户之间没有固有的连结。这是参考比特币和以太坊的设计。
而Libra的帐户系统是接近以太坊的Account-based,意指每个人都有一个帐户,每个人通过私钥控制自己的钱包,能够存钱、转帐的私人钱包。每个用户可以生成一个帐户,而这个帐户是唯一的,该帐户可以分配任意数量的资产。
其中“交易”特别指的是由个人帐户所送出的签名封包,可以是纯粹的转帐,也可以是拿来启动智能合约的Functioncall。在Account-based的系统下,Libra的快照除了包含的交易列表外,还有一个Globalstates记录所有帐户的余额状态。
5
帐本数据存储问题:尚未解决
帐本数据存储资源遭到滥用是以太坊目前遇到的问题,即用户在区块链帐本增加占用的存储资源时,不需要额外支付成本,导致资料存储量无限制增加。
而Libra在这个问题上似乎尚未找到答案,白皮书中是这样写的:“我们预计,随着系统的使用,最终与帐户相关的存储增长可能会成为一个问题。”
目前还不确定Libra是否会考虑像未来“以太坊2.0”的更新中,正考虑实现的一种状态租赁功能,即向用户收取存储数据的费用,Libra白皮书指出,为了管理对计算容量的需求,Libra协议将收取以Libra代币计价的交易费用,但没有明确定义:
正如Gas鼓励负责任的使用计算资源一样,我们期望存储可能也需要一种类似“基于租金的机制”。我们正在评估各种最适合生态系统的“基于租金的机制”。
6
Move智能合约语言
在Libra白皮书中提到了一个新的智能合约语言,叫做“Move”,许多开发者都认为Move是为了数字资产而生的智能合约语言,这点又类似于以太坊。Move智能合约语言有三种用处:发行数字资产、灵活处理区块链交易、节点管理。
Move采用的是静态类型系统,本质上是一种逻辑约束。相比以太坊的智能合约语言来说要严格地多,这种类型系统的优点是,很多编程低级错误都可以在编译的时候发现,而不是拖到运行期才爆出bug。
此外,除了降低错误率之外,Move智能合约语言还导入了“First-classResources”。
传统的编程语言,包括以太坊智能合约语言中,对于数字资产的记账是采用的Value方式,这会导致一个问题:记账是有可能记错的。
事实上记错帐的智能合约相当得多。譬如说,A转了10块钱给B,结果B的帐户多了10块钱,但是A的账户余额却没变。这种错误在过去两年层出不穷,甚至一度搞得大家已经对智能合约的未来丧失了信心。
Move合约采用了一种吸收了传统理论“线性逻辑”的类型,叫做Resource,数字资产是用“Resource”来定义,这样一来,数字资产就像资源一样,这样就会产生两种特性:
1.数字资产不能复制;
2.数字资产不能凭空消失。
摘用白皮书摘要中的一句话:“作为一等公民的资源是一种非常普遍的概念,程序员不仅可以用它实现安全的数字资产,同时也可以编写正确的业务逻辑,实现正确的访问控制策略。”
这意味者,Move智能合约语言是专为是为操作数字资产而产生的,Move的静态类型系统使得智能合约代码能够在编译期,检查出绝大多数的资源使用错误。避免智能合约出现漏洞。
现在Move语言并没有开放给一般人使用,Libra在官网介绍中写道,未来将会开始扩展智能合约扩展Move平台,并持续优化:
Move语言目前仅用于内置智能合约,例如管理验证者节点集和Libra币的合约,随着这种语言趋于稳定,协会计划面向所有第三方开发提供。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。