不说谎的源代码:Libra区块链是中心化的

  • 时间:
  • 浏览:4

声明:本文由站长之家内容战略战略合作伙伴 巴比特 授权发布。

关于Libra项目,市场上暂且缺少深入的分析,包括长期和短期理论,媒体的报道也五花八门。然而,哪些地方地方分析当中,很久都集中在项目的愿景(与Facebook的业绩相比),可能性是针对Libra白皮书有三种的研究。而对于Libra源代码中隐藏的内容,却鲜有人提起。本报告旨在通过窥视Libra项目的代码库,了解其代码否是是反映了Facebook提出的逐步实现“去中心化”Libra项目的意图。

(注:原文作者是TD Research研究合伙人Raul Jordan,本文为译文)

基础知识

Libra项目是由有一3个大型团队以完整篇 中心化的辦法 构建的,你這個 团队可能性拥有“无限”的预算,使用Facebook最高的开发和项目管理标准。假如有一天,Facebook的工程师们,从一张白纸开始英语 ,花了极少量时间了解或多或少密码货币项目的发展前景,以及它们的权衡和设计决策。

亲戚亲戚大伙儿的任务否是“亲戚亲戚大伙儿如保构建Libra”,很久“哪些地方是一流的技术,例如P2P网络包、编程语言和RPC通信库,Facebook应该使用哪些地方地方技术构建Libra,即使是牺牲了去中心化”。

与以太坊最大避免 80 万个验证者不同,Libra不还要在你這個 约束下运行。假如有一天,Libra的代码还要设计成更像有一3个性能良好的服务器,很久否是有一3个完整篇 去中心化、拜占庭式的容错系统。为了填补哪些地方地方空白,Libra还都都都可以不能自由地开发其名为"Move"的智能合约编程语言,并构建我人个 的内部人员软件和工具来完成这项工作。

为哪些地方哪些地方地方决定不得劲要?

哪些地方地方决策不得劲要,它们与或多或少密码货币项目的软件治理思想形成了鲜明对比。Facebook不还要有一3个社区或一组核心开发人员的共识来决定将哪些地方技术融入到Libra中。Facebook在构建Libra时不还要在不相关的团队之间构建多客户端网络或一致性测试来构建相同的协议。可能性Libra 项目经理达成共识,即还要实施某项功能,还要使用或多或少技术,亲戚亲戚大伙儿肯定会让我人个 的工程师来建造。

而或多或少的密码货币项目则是在不同的约束下运行的,新一代的密码货币还要进行ICO,或进行种子轮融资,又可能性仅仅是让社区自愿为项目进行贡献,而后者正遭受着公地悲剧的困扰。可能性有一3个项目我我觉得成功地通过了融资挑战,比较慢它现在还要迎合公共/私人投资者的群体,通过其网络,获得挖矿者/验证者群体的一每段,并在短时间内发布有一3个产品。对于已被构建为不会许可模型的项目,它们在进行软件改进时,通常会遇到协调困难大问提,通常这还要不相关团队之间的很久讨论和协调来实现变更请求(RFC)。诚然,你這個 协调困难受益于无许可创新,任何工程师都可通过正确的论点和理由建议对协议进行改进,假如有一天获得支持,并通过社区的共识将其纳入未来的硬分叉。可能性Facebook真的决定走这条路,而Libra项目身前有有一3个更大的社区,它可能性会面临或多或少密码项目所遇到的同样的治理大问提。

考虑到协议的无许可改进承诺,所含基于优点和共识的特性,那为啥会 会 或多或少一流的技术并比较慢被哪些地方地方密码货币项目所采用呢?主要意味着着在于去中心化的项目,让你实现共识是非常困难的。一旦很久团队实现了有一3个协议,就比较慢创建让每我人个 都满意的结果,从而意味着着更多的治理痛苦。例如,在Go语言中实现和标准化通用序列化库,可能性要比在Rust等可访问通用类型的语言中要困难得多。

考虑到Facebook只需维护有一3个客户端,假如有一天已研究了一段时间的协议,它都都都可以不能根据我人个 的协议设计,结合任意多的实现决策。结论是,以有效的辦法 构建真正去中心化的项目是非常困难的。与或多或少密码货币相比,不受此约束的Facebook,在为产品发布强大的代码库方面可能性会趋于稳定优势。

验证者 vs 公共节点运行者

Libra自学的网站上提到: 

“自学的一项任务是与社区战略战略合作,随时间的推移,使网络逐渐过渡到无许可模式。”

尽管这绝对应该是Libra项目的目标,但亲戚亲戚大伙儿还是花时间去深入了解它的代码库,看看它的基础否是是为你這個 转换而建立,可能性这否是是还要从当前的实现中大幅度地脱离出来。

而第二件事,我说也是让你们对第一件事有最深入了解的一件事,很久特权验证者对网络的能见度,否是是与普通节点用户的能见度不同。其中最关键的或多或少是,任何用户(不仅仅是特权验证者)否是是不会都都都可以自由下载和一键复制账本的整个请况,以独立地验证交易(译者注:这也是去中心化区块链全节点的功能)。

关于源代码之外的主题,亲戚亲戚大伙儿能找到的最全面的信息是Libra的官方文档,它提供了该项目的鸟瞰图,以及关于如保运行和连接到运行中的测试网的说明。目前,Libra为用户提供了有一3个选项:

(1)运行连接至测试网验证者的本地客户端;

(2)运行每根本地链上的本地验证者节点;

对于选项(1),运行连接至验证者的本地客户端,Libra允许亲戚亲戚大伙儿访问有一3个 CLI(命令行界面),它允许亲戚亲戚大伙儿创建新账户、转移币,以及查看与测试网上帐户对应的请况/交易(或译为事务)信息。

也很久说,作为一名用户,我不都都都可以不都都都可以查询来自验证者的有限交易/请况信息,假如有一天比较慢查就看整请况信息或新交易提交到账本的选项。 

尽管上端的CLI 不知道们,这可能性很久软件故意模糊化了可能性趋于稳定的常规用户的信息。也很久说,在网络中读取每笔交易(或事务)的功能可能性趋于稳定,但可能性是被CLI工具隐藏了。我说可通过分叉项目并修改其代码,以使亲戚亲戚大伙儿不会都都都可以读取账本有三种?我的本地客户端否是是都都都可以不能和测试网完整篇 同步?让你们看看: 

可能性亲戚亲戚大伙儿想从网络中查询事件,亲戚亲戚大伙儿唯一能访问的信息是: 

假如有一天,在检查了可使用你這個 CLI工具执行的多个命令后,亲戚亲戚大伙儿发现该工具不都都都可以不都都都可以执行帐户创建、传输和查询验证者节点以获取特定信息的功能。可执行的查询信息,如余额、请况、提交的交易(事务)和交易(事务)类型。

当亲戚亲戚大伙儿连接到测试网时,亲戚亲戚大伙儿的节点并比较慢同步。相反,它将RPC请求发送到ac.testnet.libra.org上的有一3个远程节点,该节点会返回信息,其要求亲戚亲戚大伙儿完整篇 信任接收到的数据,而不还要进行独立验证。目前,使用Libra CLI的用户不都都都可以不都都都可以查看哪些地方地方内容。

运行有一3个本地验证器

Libra指定交易(事务)的生命周期,将其封装在 验证器runtime,而客户端很久作为单个入口点工作。

来源:https://developers.libra.org/docs/life-of-a-transaction

Libra节点连接到一组可信共识对等节点,哪些地方地方对等节点可辦法 公钥进行验证。目前,比较慢已知的辦法 都都都可以不能生成有一3个可与或多或少在线测试网验证者对等的节点,这是可能性trusted_peers配置选项当前为空。

Libra公开的唯一端点(endpoint)是facebook拥有的公共访问控制RPC url,它可能性在或多或少云基础设施上运行负载均衡器。确我我觉得下载请况/区块信息方面似乎比较慢访问控制,但有或多或少机制可根据配置选项在网络层验证共识对等节点。目前还不清楚在Libra主网发布时,其否是是会模糊化对等节点的ID和IP地址,假如有一天经身份验证的验证者,都都都可以不能很容易地阻止生产中未经身份验证的对等节点。目前很久清楚验证者否是是会被激励分享亲戚亲戚大伙儿的账本信息,可能性亲戚亲戚大伙儿为上端提到的特权支付了极少量资源。

Libra的术语突然将网络对等节点称为“验证者”,这进一步推动了仅运行RPC客户端的用户概念。 



pub fn gen_genesis_transaction>(

path: P,

faucet_account_keypair: &KeyPair,

trusted_peer_config: &TrustedPeersConfig,

) -> Result<()> {

let validator_set = trusted_peer_config

.peers

.iter()

.map(|(peer_id, peer)| {

ValidatorPublicKeys::new(

AccountAddress::try_from(peer_id.clone()).expect("[config] invalid peer_id"),

peer.get_consensus_public(),

peer.get_network_signing_public(),

peer.get_network_identity_public(),

)

})

Source: libra/config/config_builder/src/util.rs

以及 



/// Returns the key that establishes a validator's identity in the p2p network

pub fn network_identity_public_key(&self) -> &X25519PublicKey {

&self.network_identity_public_key

}

来源:libra/types/src/validator_public_keys.rs

上端的validator_set 是从可信的p2p对等节点列表中构建的,这意味着着有一3个网络和身份签名公钥可用于网络级别的访问控制。这意味着着不都都都可以不都都都可以经身份验证的验证者,才可能性被网络中的或多或少验证者视为受信任的对等节点。

结论

综上所述,研究表明对于Libra区块链而言,普通用户和验证者拥有不同的读取权限,前者目前无法访问有关完整篇 账本的信息。假如有一天,普通用户不都都都可以不都都都可以完整篇 一键复制Libra请况机,可能性亲戚亲戚大伙儿的客户端更多地是充当连接至实际运行网络的验证者节点的sidecar。亲戚亲戚大伙儿不知道当Libra正式上线后否是是还是另有一3个的请况,可能性这很久Libra项目仍在考虑的选着结果。此外,Libra的源代码突然将全节点命名为验证者,这添加了Facebook可能性认定你這個 方向的进一步证据。一旦Libra网络以你這個 辦法 投入生产,对于每个支付了 800 万美元的特权节点而言,亲戚亲戚大伙儿也就没哪些地方地方动力允许未经身份验证的对等方,对账本和请况数据进行访问控制。

相关资料:

https://libra.org/en-US/

https://developers.libra.org/docs/move-paper