如果你过去几天一直在互联网上,你可能已经听说了Libra,Facebook在区块链技术方面的新冒险。他们的目标是深远的--"实现一个简单的全球货币和金融基础设施,使数十亿人获得权力"。
虽然白皮书只发布了几天,但它已经收到了截然不同的意见。有些人说,它将把加密货币带入主流,并赋予世界各地的人们权力,其他人则指出区块链的几个先天缺陷,以及对Facebook这个公司缺乏信任。
与我们的软件工程师乔治-阿加波夫一起,我们决定跳过热门话题和争议(下面不提奥威尔),从技术方面回顾区块链。
我们将回答一些问题:Libra的主要特点是什么,那里的技术选择是否合理,以及它们对这个项目的未来有何启示。
Libra的简要概述
Libra有两个主要特点,将其与你习惯看到的区块链区分开来。
首先,它是经过许可的。Facebook已经与其他几家公司(包括Visa、Stripe、Uber)合作,创建了Libra协会。现在,其成员是唯一能够在网络上验证交易的人,并在决定该协议的未来方面有发言权。Libra计划在5年左右的时间里开始转向无权限,但目前还没有任何详细的信息。
第二,Libra是一个稳定币。Libra协会将储存低风险的工具储备,这些工具将支持该币的价值并提供收入以维持区块链的运作(Libra的用户不会从这些工具中获得任何回报)。
Libra还具有一个非常有趣的用于交易处理和智能合约的编程语言,Move。Move的灵感来自于Rust和它的资源控制。我们将在相应的章节中对Move进行更多的阐述。
天秤座区块链:太阳下没有新东西
Libra的创造者在他们的技术选择上采取了一条安全和可预测的道路。他们使用基于VMware的HotStuff的定制BFT协议,使用Merkle树的变种来存储交易及其历史(他们有一个明确的策略,即如何修剪所有的历史,只保留区块链的快照)。
有几个问题是由封闭的法定人数解决的。例如,关于每秒1000笔交易的直觉似乎是公平合理的,因为如果共识是由少数实体处理的,有很多旧的技巧来实现这个数量的交易。
白皮书指出,他们现在没有解决无权限区块链中这些问题的方案,所以不清楚未来如何以及是否会进行过渡。
Move:智能合约语言的漂亮转折
Move语言是Libra中对我们来说最有趣的部分。不仅仅是因为我们最近一直在为Tezos研究智能合约语言。
基本上,Move是一种合约语言,其执行模式接近于以太坊的模式。它被编译成类型化的汇编,类似于Michelson。
它最创新的部分是,它在编译时应用了资源控制的技术(类似于Rust中的技术)。这些是Move的类型系统的一部分,有助于防止创建有问题的智能合约。
为了展示一个例子,下面是白皮书中的一些Move代码。主要的想法是,硬币只能被移动(而不是像收款人那样被复制),而且只能发生一次。其他的都会被类型系统拒绝。
public main(payee: address, amount: u64) {
let coin: 0x0.Currency.Coin = 0x0.Currency.withdraw_from_sender(copy(amount));
0x0.Currency.deposit(copy(payee), move(coin));
}
这种线性逻辑的使用很符合金融合同的语义,尽管他们使用的语法似乎过于复杂(并不完全清楚Rust的所有复杂性是否有必要)。
总的来说,这个领域的创新是值得欢迎的,也是必要的,因为现在使用的智能合约语言还远远不够完美。比特币脚本优雅而简单,但很难用,而且容易出错。Solidity因其设计缺陷而臭名昭著。甚至Michelson也有一些奇怪的语义。Move看起来并不像什么会超越其他的东西,但是这个功能会让它脱颖而出。
结论
天秤座是像有些人说的那样是一个宏伟的失败吗?可能不是,至少在技术上不是。看到大公司尝试区块链解决方案,甚至在一些地方进行创新,这是非常好的。
所用的解决方案似乎很合理,适合他们的目标。天秤座是否会实现其变得开放的承诺,我们将不得不看。现在,我们只能祝愿扎克伯格在与监管机构的斗争中取得好成绩。