编者按:本文来自Crypto Valley Live(Live(ID:Crypto Valley),作者Micah Zoltu,李翰博翻译,Odaily Daily Daily Daily授权转载。
参与者以太坊客户端开发者——任何维护以太坊客户端的人。这包括Geth、OpenEthereum、Nethermind开发者、Besu开发者以及维护这些客户端的以太坊经典分叉的开发者(对于ETC分叉的维护者来说,他们的参与有点特殊,今天在这里就不讨论这个问题了)。
用户——使用以太坊进行交易的人。这包括使用dapp的人,收发钱的人等等。
用户授权——通常,用户会将自己的决策权委托给第三方。Infura和集中式exchange是两种非常常见的客户端。主流dapp是另一种常见的用户委托,用户会去自己喜欢的dapp所在的连锁。当我们谈到用户做决定的时候,我们经常会委托给其他地方,但最终,这是用户的决定。
流程的每个客户都有自己的开发人员,他们有自己的动机、愿景等。每个产品的开发者会决定他们想在客户端放什么,什么时候发布客户端,发布更新的时候客户端会有什么功能。
现在不同的客户端对于开发者来说是可选的,但是在过去,客户端开发者表示希望保持相互兼容,所以他们通常会派一个代表参与沟通,试图与其他客户端开发者协调。
最终,每个客户端团队将发布他们认为合适的客户端更新,这些更新(理想情况下)将与其他客户端兼容,并具有与其他客户端相同的分支块编号。如果客户端发布兼容的代码并共享一个fork块触发器,那么当用户运行时,客户端将能够相互通信。
一旦客户端发布,客户端开发者和/或他们的支持者将向用户发布公告,用户将选择是否更新客户端或可能切换客户端。用户通常将这一决定委托给第三方,如Infura或中央交易所,但最终用户可以决定他们想在哪里交易。在代理投票的情况下,如果他们不同意他们的客户,他们通常可以转换供应商(这对于托管代理来说有点棘手,因为托管人可能会拒绝把你的钱交给托管人不同意的链)。
谁来做决定?这里没有单一的决策者。任何人都可以发布客户端,公告客户端,分叉客户端(都是开源的)等等。用户可以选择使用他们想要的任何客户端。
每个客户端的核心开发者都有一套他们个人比较关心的特殊内容,他们通常会表达给其他客户端开发者。如果所有的客户端开发人员都同意开发相同的功能,那么事情会进展顺利,他们会在发布时间表上进行协调。
如果客户端开发人员不同意发布什么功能或何时发布,那么他们中的一些人可能会开发、宣布和发布不同的功能集。我们以前在ETH/ETC的分叉中看到过这一点。并不是所有的客户端开发人员都同意如何进行,所以我们最终得到了两个不同的链,它们由不同的组维护。
如何处理分歧?没有一个核心开发人员认为这是一个好主意,他们都决定不将它集成到他们维护的客户端中。
一些核心开发者认为这是一个好主意,但不愿意分叉,而另一些人认为这是一个坏主意,愿意分叉。
一些核心开发者认为这是一个好主意,愿意分叉,而另一些人认为这是一个坏主意,不想分叉。
有些核心开发者觉得好,愿意分叉,有些觉得不好,愿意分叉。
所有核心开发者都认为这是一个好主意。
在1和5的情况下,事情进行得非常顺利。
在案例2和案例3中,通常会进行讨论,试图通过了解人们产生分歧的根源来达成共识,如果可能的话,试图找到解决这些问题的可行方案。但是,如果不能达成‘大致共识’,那么信念更坚定的一方可能会获胜。
在4的情况下,我们有一个类似ETH/ETC的fork。
用户如何参与?作为以太坊的用户,你可以选择是否运行某个给定的客户端,也就是说如果你认为变化不好,你可以选择根本不升级。事实上,你也鼓励自己尝试说服他人(在适当的场合)和你一起运行不同的客户端,如果你认为这样做是最好的。
如果你有技术头脑,也可以通过向核心开发者提出新的技术想法来参与(比如通过https://ethresear.ch)。您还可以通过加入现有团队、维护自己的fork或从头构建新的客户端来参与客户端的开发。
开发者如何决定写什么代码?以太坊的每个客户端开发者都有自己的动机,有些是众所周知的,有些是保密的。其中一些动机是财务上的(例如,他们得到了其他有自己动机的人的赞助),而另一些动机是利他的(例如,他们想建立一个更能抵抗审查的未来)。
然而,由于上述‘用户决定运行什么’的特征,核心开发者通常构建他们认为用户现在和将来会想要运行的软件。大多数以太坊客户端开发者对编写没人用的软件不感兴趣,所以最后他们通常会拿走他们认为用户想要的,或者对他们有利的东西。