ETH:解决客户端多样性问题的一个技术方案:小众客户端项目

截至发稿时,以太坊有多个客户端实现,但 Geth / go-ethereum 作为一个多数客户端脱颖而出,拥有 80%~90% 网络占有率。尽管这是对客户端稳定性及其开发者的褒奖,但这种情况会带来不良后果。

在以太坊1.0里,当一个单一的客户端在网络里占绝对的主导,其弊端是众所周知的:

如果 Geth 在一个 DoS 攻击里崩溃了,依赖它的用户将无法进行交易或跟上权威链。

如果 Geth 有一个共识故障,依赖它的用户将会看到不同版本的网络状态。

前一个问题有点糟糕,因为它会导致网络中断,但这是最糟糕的情况了。然而,后一个问题也特别糟糕,因为通过对网络的错误 (无效) 状态作出不可逆转的反应它会导致出现双花情况。高级用户 (如交易所) 通过同时运行多个客户端来解决上述问题,并在客户端间无法达成共识时发出警报 (例如禁止存款/提款)。

币印潘志彪:EIP1559鸡肋方案,没有解决问题:币印创始人潘志彪在微博表示:#EIP1559#

1. 不要给自己加戏,本来就不需要矿工投票;

2. 拥堵现象来说,鸡肋方案,没有解决问题;

3. 造成部分通缩了,牺牲矿工一点利益,维护社区长远和大局;

4. 路线图也早就说明白了,最终要转POS,演什么苦情戏呢?

5. 尊重开发者和社区。[2021/2/27 17:58:17]

矿池也通常运行多个客户端,尽管对它们来说,在开发者搞清楚情况前在链分叉的两边都挖矿更有利,因为这可以避免它们因在历史上站错队而失去所有收入。无论怎样,区块链会继续延展下去,而无效的侧链最终不会成为权威链的一部分。一切如常进行。

在以太坊 2.0 里,一个新的潜在问题是出现以下两种情况:

IFP失败开发者讨论成立BCH基金会解决开发资金和决策问题:5月18日,BitcoinCash官方发文《比特币现金基金会能否解决BCH的资金和决策问题?》称,在近日的一场直播中,ABC开发者和ViaBTC创始人杨海坡共同讨论成立BCH基金会的想法,以应对BCH面临的开发资金和决策问题。杨海坡表示,比特币现金应该为决策、资金建立一个完善的平台。关于成立BCH基金会,杨海坡表示,在基金会的结构问题上,担心基金会可能会因为缺乏资金而受到影响。同时他呼吁通过基金会成员投票来简化方式。关于基金会成员的选择问题,杨海坡建议他自己、Amaury Sechet和江卓尔(当时已离开讨论)成为基金会的初始成员。而如果有人想加入基金会,他们需要支付一定数额的费用,然后由现有的基金会成员对新成员进行投票,决定新成员能否加入基金会。此外,江卓尔还讨论了一种类似于诺贝尔奖的资助方案,但并未透漏更多细节。此前消息,5月15日比特币现金升级后,比特币现金基础设施融资计划(IFP)未被激活,宣告失败。[2020/5/19]

如果1/3 + 1 的网络验证者出现共识故障,网络就无法继续做最终敲定。

动态 | JCC通证将上线WBF交易所 提供解决全球跨境汇款问题的金融服务:Juncacash(JCC)是Junca平台的数字通证,通过提供线上(低手续费)以及线下(实体ATM)解决全球跨境汇款难的问题。2020年2月28日11:00,JCC(JCC/BTC)将在WBF交易所正式上线。

Junca平台是去年春季与菲律宾政府联手,开展以菲律宾为首的金融科技服务业务,优势是为JCC持有者提供价廉质优的跨境汇款体验,而对于JCC项目,将获得现有的百亿级交易分额。

此外,Junca平台的“atom”的自动柜员机(ATM)可将数字资产与法定货币相互兑换,20年春起在菲律宾主要都市推出。菲律宾政府批准推广“atom”意在利用区块链技术,解决海外菲籍劳工的跨境汇款问题。[2020/2/17]

如果 2/3 的网络验证者出现共识故障,无效链会被最终敲定。

声音 | Gate已建立GT安全法制基金 建立公链目标是解决用户区块链资产问题:关于Gate公链平台的治理机制与主要目标,Gate.io创始人韩林表示,短期来看,Gate.io建立了一个GT安全法制基金,将从市场上公开购买5000万GT,也将通过法律、司法、商业保险、钱包技术等途径打造一个安全、合规、健全的区块链资产保障平台。此外,Gatechain的主要目标是解决用户区块链资产安全问题,同时还会基于Gatechain推出高速去中心化交易平台以及跨链服务。此外,由于大量资金流入参与GT认购,现在市场担心GT会对币市产生一定的虹吸效应,对此,韩林表示,在机制设置里面,允许用户通过USDT、BTC、ETH等多个币种下单,避免对单一币种的市场影响。并且每天的认购系数非常低,95%以上的资金仍然保留在用户账号,用户可以参与正常市场交易。(华尔街见闻)[2019/4/10]

有一些提议是将多数客户端的漏洞“写入”协议中,以避免重组最终敲定的结果,但这只是火上浇油。这不是激励验证者运行其他类型的客户端,而似乎是开发者为此惩罚他们,因为所有由有效但小众的客户端生成的区块都会变成孤块。这从本质上就锁定了 一个100%的单客户端网络。

另一个提议是要求人们运行一个小众的客户端,这一点一直被置若罔闻 (多年了),原因不过是当有一个在大多数情况下更好且可用的客户端时,为什么会有人想运行一个没那么稳定的客户端?维护基础设施是很耗时的,而且与照看可能不稳定的东西相比,人们有更好的事情要做。

似乎我们在这里有一个冲突:对于用户来说,运行 Geth 又好又简单,但可能会损害网络;而运行其他客户端可能没那么稳定且烦人,但可能会拯救网络。由于要求验证者运行一个小众客户端是不公平的 (并首当其冲地承担所有问题),这个项目旨在提出一个不一样的要求:还是要运行小众客户端,为你最喜欢的客户端充当哨兵。

在深入 minority 项目是什么之前,有必要强调它不是什么。虽然我们表明的目标是让用户 (也) 运行小众客户端,这个项目不是关于实际设置和运行以太坊客户端的。有各种项目让家庭用户可以轻松运行一个或另一个客户端 (例如 DappNode),但一旦我们达到产品级的基础设施要求,它在很大程度上取决于个人使用情况、预算限制和开发运营能力,以提出关于运行什么、运行多少、在哪里和如何部署的“最佳”解决方案。

minority 项目假设验证者已经熟悉如何最好地部署到他们的基础设施;以及如何以合理稳定的方式提供和维护不同的独立客户端。其目标是成为共识层和执行层客户端之间的通信层,使得任何人都可以运行多个客户端 (多数的、小众的和组合),并且在接受一个状态变换 (无论是一个执行结果或要给共识更新) 之前达成一个 N/M 的共识。

例如:

minority 协调器可以确保只有在 2/3 的共识层客户端都对新链头达成共识时 (例如,Lighthouse 和 Lodestar 赞成,Teku 反对),执行层客户端的链头才会更新 。

minority 协调器可以确保只有在 2/3 的执行层客户端对新的状态根达成共识 (例如,Geth 和 Nethermind 赞成,OpenEthereum 反对) 时,执行数据才会被接受。

在共识层和执行层客户端间的高级通信层有一个额外的好处,就是能够对各种客户端统一收集和报告行为指标;并有可能在它们失控,导致网络中断之前检测到操作降级问题。通信中间件也允许统一收集两层之间事件的审计轨迹,有可能有助于调试客户端问题。

常见问题

Q: 运行一个执行客户端已经很昂贵了!要求验证者运行 2-3 个不是太过分了吗?

在撰写本文时,1 个 ETH= 3785 美元。运行一个验证者需要 32 个 ETH 的初始存款,相当于 12 万美元。在这个资金量级上,我们觉得并行运行 3 个执行层客户端以支持验证者是可以接受的安全投资。

Q: 运行一个额外的中间件意味着更多的工作!为什么共识层客户端不直接与多个执行层客户端通信?

共识层客户端和执行层客户端之间的多路复用解耦使得它们可以在任何时候被调换,而不会发生意外的行为变化。在任何一边重新实现多路复用器都会在最低程度带来轻微变化,最终可能需要拓扑重构来改变底层组件。

Q: 运行一个分布式多路复用器是显然的选项。中央协调器不是更简单吗?

中央服务器无疑更简单,但它也会形成单点故障,无论是因为硬件故障、软件错误还是机器过载。我们无法控制共识/执行层客户端生成的负载,所以在面对故障时,保持它们隔离似乎更安全。去中心化的架构也可能证明更容易横向扩展。

Q: 运行每个客户端都要带上多路复用器不是很奇怪吗?为什么不用一个编排集群?

每个客户端运行都带上一个额外的进程确实比简单地将它们指向一个编排集群需要更多的工作,但它可以减少复杂性,因为共识/执行层客户端仍然以1对1的形式运行。把集群理念带到任何一个客户端层,都要求这些客户端有效地处理1对N的连接问题,这是我们一开始就尽量避免的。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:15ms0-0:969ms