位置:编程技术网 > 区块链 > 正文 >

区块链布道者Jameson Lopp:Facebook“Libra”白皮书全解析(3)

2019年06月25日 13:54来源:未知手机版

qq头像欧美,涉嫌犯罪案件移送书,qq非主流情侣网名

执行交易

包括矿工费(gas fee)扣除在内,区块链核心逻辑的很多部分都是用Move来定义的。为了避免循环,VM在这些核心组件的执行期间禁用了gas的计量。

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

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

这个回答了较早前Libra币是不是ETH或BTC这样的原生资产的问题。我希望这些数字货币只是系统推出时允许的默认或者唯一的资源类型,其他资源晚点再推出。

相对于更高级的源语言,Move基于堆栈的字节码指令更少。此外,每条指令都有简单的语义,可通过甚至更少量的原子步骤来表示。这减少了Libra协议的规范足迹,令发现规范的实现错误更容易。

似乎他们已经进行了周翔的考虑;希望这意味着其脚本语言的安全性审查要比以太坊做得更好。

我们认为“Libra区块链”其实不是区块链

验证过的数据结构和存储

Libra协议用一颗Merkle树为账本历史提供经验证的数据结构......具体来说,账本历史用Merkle树累加器法来形成Merkle树,这同时也提供了有效的添加操作。

再次地,我们看到所谓的“Libra区块链” 其实并不是区块链。这个协议似乎设计得非常好, 但当账本历史的数据结构是一组经过签名的账本状态时,他们仍然称之为区块链,这一点真的很奇怪 。验证者为每个账本状态做出承诺,并且所有历史账本状态也都在Merkle树中得到承诺,但我还没有真正看到形成一条链条的任何反向数据链表,更不用说区块链了。

账号的验证者是该序列化表示的哈希

请注意,这种表示需要在对帐户进行任何修改后对整个帐户的验证者进行重新计算。该操作的代价为O(n),其中n表示完整帐户用字节表示的长度。

嗯,如果对给定帐户的数据存储量没有限制的话,这似乎给DoS攻击打开了方便之门。

我们预计,随着系统的使用,最终与帐户相关的存储增长可能会成为一个问题。正如gas鼓励负责任地使用计算资源一样,我们预期存储可能也需要一种类似租金式的机制。我们正在评估各种最适合本生态系统的基于租金的机制。

另一个未能得到解决的问题。我已经等不及想看到“租金太TM高了!”的表情包了。

投票权必须在创世期间以及创世之后的一段时间内依然保持诚实,以便客户端同步到新配置上。离线时间超过该时间段的客户端需要用某些外部信息源(source of truth)重新同步,以获取其信任的检查点。

哎哟哟。现在还不清楚这个“时间段”有多长,但如果一个创世不到一天,那我猜具体的“时间段”也不到一天。看起来该共识协议还没有健壮到参与者可以随意按照自己的意愿离开和重新加入网络的地步。

拜占庭容错共识

LibraBFT假设一组 3f + 1 选票在一组可能是诚实的验证者(拜占庭人)之间进行分配。当拜占庭验证者控制的选票最多为 f 票时,LibraBFT仍然是安全的,能防止双花(double spends)和分叉等攻击。

跟PBFT十分相似,这种共识算法可容忍1/3的验证者不诚实。 HotStuff修改似乎挺合理:

通过让验证者对一个区块的状态而不仅仅是交易序列进行签名来拒绝不确定性漏洞。

一个发出明确超时信号的 pacemaker,验证者靠达到法定人数进入下一轮——这应该可以提高活跃度。

不可预测的的领导选举机制来限制对领导者的DoS攻击

聚合签名保留签署仲裁认证的身份验证者以便对区块的接受进行投票。

联网

Libra 协议的每一个验证者均维护该系统完整的成员关系视图,并且直接连接到需要进行通信的任何验证者。不能直接连接的验证者被认为属于系统可容忍的拜占庭故障配额范围之内。

本文地址:http://www.reviewcode.cn/qukuailian/53244.html 转载请注明出处!

今日热点资讯