用户决定运行什么,核心开发者通常会构建他们认为用户现在和未来会想要运行的软件。

原文标题:《深度丨以太坊价格飞涨的背后-治理是如何运作的?》
撰文:Micah Zoltu
翻译:李翰博

参与者

以太坊客户端开发者:任何维护以太坊客户端的人。这包括 Geth、OpenEthereum、Nethermind 开发者以及 Besu 开发者和维护这些客户端的 Ethereum Classic 分叉的开发者(对于 ETC 分叉的维护者,他们的参与有点特殊,我今天不会在这里讨论这个问题)。

用户:使用以太坊进行交易的人。这包括使用 DApp 的人,发送 / 接收币的人等。

用户委托:通常情况下,用户会将自己的决策权委托给第三方。Infura 和中心化交易所是两个非常常见的委托人。主流的 dapp 是另一类常见的用户委托,用户会去他们最喜欢的 dapp 所在链上。当我们说到用户做决定的时候,很多时候会委托给其他地方,但最终还是用户的决定。

以太坊开发生态繁荣,治理是如何运作的?

流程

每个客户端都有自己的开发者,他们有自己的动机、愿景等。每一个产品的开发者之间都会决定他们想要在客户端中放入什么,什么时候发布客户端,以及发布更新时客户端会有什么功能。

现在不同客户端对于开发者来说是可选的,但在过去,客户端开发者表示希望彼此保持兼容,所以他们通常会派一名代表参与交流,试图与其他客户端开发者协调。

最终,每个客户端团队都会发布他们认为合适的客户端更新 ,这些更新(理想情况下)将与其他客户端兼容,并拥有与其他客户端一致的分叉块号。如果客户端发布兼容的代码,共享一个 fork 块触发器,那么客户端在用户运行时将能够相互通信。

一旦客户端发布,客户端开发者和 / 或他们的支持者会向用户做公告,用户会选择是否更新客户端,或者可能切换客户端。用户通常会将这一决定委托给第三方,如 Infura 或中心化交易所,但最终用户可以决定他们想要在什么哪里进行交易。在委托投票的情况下,如果他们不同意他们的委托人,他们通常可以切换供应商(这对于托管委托来说有点棘手,因为托管人可能会拒绝把你的钱交给托管人不同意的链上)。

以太坊开发生态繁荣,治理是如何运作的?

谁来做决定?

这里没有单一的决策者。任何人都可以发布一个客户端 ,宣布一个客户端 ,分叉一个客户端 (它们都是开源的)等等,用户可以选择使用任何他们想要的客户端 。

每个客户端的核心开发者都有一套他们个人所关心的特殊内容,他们通常会向其他客户端开发者表达。如果所有的客户端开发者都同意开发同样的功能,那么事情就会很顺利,他们会在发布时间表上进行协调。

如果客户端开发者没有就发布什么功能或何时发布达成一致,那么他们中的一些人可能会开发、宣布并推出不同的功能集。我们之前在 ETH/ETC 的分叉中就看到了这种情况,并不是所有的客户端开发者都同意如何进行,所以我们最终得到了两条不同的链 ,由不同的群体来维护。

如何处理分歧?

  1. 没有一个核心开发人员认为这是一个好主意,他们都决定不把它集成到他们维护的客户端中。
  2. 一些核心开发人员认为这是一个好主意,但不愿意分叉,而另一些人认为这是一个坏主意,愿意分叉。
  3. 有些核心开发人员认为这是个好主意,愿意分叉,而有些人认为这是个坏主意,不愿意分叉。
  4. 一些核心开发人员认为这是一个好主意,愿意分叉,而另一些人认为这是不好的,愿意分叉。
  5. 所有核心开发人员都认为这是一个好主意。

在 1 和 5 的情况下,事情进展非常顺利。

在 2 和 3 的情况下,通常会进行讨论,试图通过了解人们产生分歧的根本原因来达成共识,如果可能的话,试图为这些问题找到一个可行的解决方案,但如果不能达成「粗略的共识」,那么信念更坚定的一方可能会获胜。

在 4 的情况下,我们有一个类似 ETH/ETC 的分叉。

用户如何参与其中?

作为以太坊的用户,您可以选择是否运行一个给定的客户端,这意味着如果您认为改变不好,您可以选择干脆不升级。事实上你也鼓励您尝试说服其他人(在适当的场合)和您一起运行不同的客户端,如果您认为这样做是最好的。

如果你有技术头脑,你也可以通过向核心开发人员提出新的技术想法来参与(例如,通过 ethresear)。你也可以通过加入现有的团队、维护自己的 fork 或者从头开始构建一个新的客户端来参与客户端的开发。

以太坊开发生态繁荣,治理是如何运作的?

开发者如何决定要写什么代码?

每个以太坊客户端开发者都有自己的动机,有些是众所周知的,有些是保密的。这些动机有些是经济上的(例如,他们被别人赞助,而别人也有自己的动机),有些动机是利他的(例如,他们想建立一个更抗审查的未来)。

然而,由于上文提到的「用户决定运行什么」的特点,核心开发者通常会构建他们认为用户现在和未来会想要运行的软件。大多数以太坊客户端开发者对编写没有人使用的软件不感兴趣,所以最终他们通常以他们认为用户想要的东西,或者对用户有利的东西为指导。