从 Staking 聊起,4 种掌控以太坊网络的方式
2023-02-10 18:39
0xTodd
2023-02-10 18:39
订阅此专栏
收藏此文章

今天借着 Kraken 暂停 Staking 这个新闻,想做一个 Staking 的科普&分析:

 

- 本质上,Staking 最重要的就是看 2 把私钥的归属权

- 由于 2 把私钥的归属权不同,又诞生了 4 类 Staking 方案

 

我相信有这篇超长 thread,你对于 Lido,Rocket,Coinbase,Kraken,SSV 以及 Ebunker 能有一个更深的理解。

 

如果把以太坊看作是一家公司的话,负责 Staking 的验证者(Validator)就是员工。它的工作就是验证交易的合法性,然后打包区块上链(虽然构建区块这活儿,如今也已经慢慢外包给 MEV 服务商了)。

首先,作为验证者,你需要证明你的员工身份,毕竟不是谁都可以来随便验证。交了 32ETH 押金后,你需要持证上岗(即:【验证 key】)。

 

理论上,做 Staking 的第一步,就是创建一个验证 key。随后,你拿着你的验证 key,也就是你的工作证,才能给每一个交易盖戳。

 

第二,以太坊贴心地设计出了第二把私钥,用于接收刚刚提到的押金(32ETH)。

 

当你去做验证者时,你会要填一个“提现地址”。它是未来你提取本金和工资的地址,而那个地址的私钥理论上应当在你的手里(即:【提现 key】)。

 

我打个比方,这是你的工资卡。

 

这样 2 把私钥:①验证 key(工作证)、②提现 key(工资卡)的用途,我想大家都明白了。

 

接下来,根据 2 把私钥的不同归属,才诞生了四种 Staking 解决方案:

-CEX 类

- 大池子类(Pooled Staking)

-SaaS 类(Staking as a Service)

-Solo 类

以太坊基金会的四种 Staking 划分

方案一 CEX 类 / 全托管

如果你使用交易所 Staking 方案,例如 Binance,Coinbase 或者今天刚宣布停止 Staking 服务的 Kraken。你会发现,你根本没有创建过【验证 key】,也没有填过【提现 key】,那这种就是标准的“全托管”。

 

那这两把钥匙分别在哪呢?

- 验证 key 在 Binance Pool 或者 Coinbase Pool

- 提现 key 则在 Binance 和 CB 的冷钱包

 

你根本不用上班(参与验证),工资卡也给了交易所帮你保管。这种方案是最省心的,而且有保底。

 

但是不适用于对去中心化有追求的人,毕竟 FUD 三天两头有,而且现在看美国甚至不允许你这样搞。

 

方案二 大池类 Staking(Pooled Staking)

这就是 Lido 和 Rocket Pool 的 Staking 方案。你仍然不用创建两把 Keys,由 Lido 和 Rocket 管理,那它和交易所的区别在哪呢?

 

先聊聊验证 key:

交易所:显然,它旗下就 1 家运营,即它自己。

 

Lido:Lido 1.0 旗下有 29 家专业运营商,Lido 把 ETH 都委由他们管理,所以验证 key 是相对分散的,29 家运营商各拿一部分。等于说 Lido 是个集团,旗下有强力打工天团 29 人,你自己不用打工,让打工天团专业人士帮你上班。所以,运营商抽 5% 分成,Lido 再抽 5%。

 

Rocket Pool:Rocket Pool 旗下可以有无数家运营商,任何人带着机器 / 云服务器 +16 个 ETH 都可以来当运营商。等于说 Rocket Pool 是众包平台,旗下一堆美团骑手,自带电动车(机器 / 云服务器)和机房,帮你跑节点。

理所当然,他们也要抽成。

 

再聊聊提现 key:

这里有必要再补充一个原理:Staking 提现到底是个什么流程?

 

我之前的帖子又简单介绍过上海升级以及提现,传送门→

https://twitter.com/0x_Todd/status/1619950421124206593

 

众所周知,以太坊是两条链: 以太坊 1.0(执行层) Beacon Chain(共识层)。 当你去 Stake 时,第一步是把 ETH 汇款到以太坊 1.0 Beacon 金库地址(https://etherscan.io/address/0x00000000219ab540356cbb839cbe05303d7705fa…)锁仓,然后 Beacon Chain 给你在共识层生成对应的 eth。

注意这些 ETH 是锁住,而非在 1.0 上销毁,或者是跨链到 beacon chain 上,它只是被锁住 - 映射而已。

Staking 的链上步骤

而上海升级后,提现将是一种新的交易类型。当你提现时:

 

1.你的节点通知 Beacon Chain,发出提现信号

2.排队

3.排队到你后,Beacon Chain 通知以太坊 1.0 的金库

4.以太坊 1.0 的金库地址给你指定的地址汇款,比如 0xTodd.eth

 

所以,所谓我的【提现 key】,本质上是 0xTodd.eth 这个地址的私钥。

 

而 Lido & Rocket 的提现 key,是帮你又多包了 3 层:

1.你通知 Lido\RPL,我要提现

2.Lido\RPL 通知运营商,某某节点要提现

3.运营商通知 Beacon Chain,某某节点要提现

4.排队

5.Beacon Chain 通知以太坊 1.0 金库

6.以太坊 1.0 的金库地址给 Lido\RPL 提现金库汇款

7.你销毁了 stETH\rETH,Lido\RPL 智能合约给你的地址汇款。

 

PS:如果换成交易所,第 7 步就是 CZ\阿姆斯特朗给你的 Binance\Coinbase 中心账户直接加余额。

 

对于大池子类方案,

第 1、4、5、6、7 步都无懈可击✅,是纯粹链上操作。

而薄弱环节在第 2、3 步⚠️。

 

理论上,大池子类方案可以拒绝你的提现,比如你因为使用龙卷风被美国 OAFC 制裁了,那么第 2、3 步不给你传信就能做到。

 

我为什么叫它“大池子”方案,因为它所有节点的提现地址,填的都是同一个地址,即 Lido\RPL 的提现金库智能合约地址。

 

当然,对于 CEX 而言,它们仍然有较大的进步。

 

但是由于第 2、3 步的操作空间的存在,也让这类方案成为了一个很接近“全托管”的方案。毕竟,提现 key 理论上仍然为大池子所有,你手中持有的只是“提现地址”的“提现地址”。

 

所以,对于不掌握最终资金去向的方案,我都倾向于划归“全托管”。

 

部分 Rocket Pool 支持者经常声称它是完全去中心化的,这个广告语深入人心。

 

但是当你看完此 thread,你会知道,它是在验证 key 部分,做到了去中心化,任何人都可以当验证者(Lido V2 也正在努力实现)。

 

而在提现 key 这个部分,作为用户,仍然无法参与,你的资产仍然静静地躺在第三方的钱包当中。

 

当然,Lido,Rocket 相比交易所来说,仅多操作一两步,却更加去中心化,仍是不错的折中方案。尤其是 Lido,stETH 流动性非常赞(目前远超其他所有 LSD 方案),是重要加分项。

 

方案三 SaaS(Staking as a Service)类 / 小池子类

到了第三步,Staking 就更加原教旨主义了。我个人是有一定的去中心化洁癖的,尤其是经历了一系列 CEX 暴雷后。

 

刚才做了比喻,验证 key 是工作证;提现 key 是工资卡。

 

那么,人们天然就会想,有没有一种方案,就让别人替我打工,同时我自己领工资呢?

 

现实生活没有这种美事儿,但以太坊网络有,就是 SaaS 或叫 VaaS(Validator as a Service)。我们以非托管矿池 Ebunker 为例。

 

我们首先要做的,是把验证 key 做成 keystore 给到 Ebunker Pool。接下来,由专业矿池来维护这个节点的出块。同时,提现地址填我自己的,即我掌握最终以太坊的提现权。

 

总结下:

【验证 key】,我和矿池各一份;

【提现 key】,只有我有。

 

即:矿池打工 / 我拿钱 / 矿池拿抽成。

 

这个方案和大池子类有什么区别呢?区别在:

 

Pooled 类,提现地址是统一的(即 Lido\RPL 金库),所以它是“大池子”。

SaaS 类,提现地址是每个人都填自己的,所以它是“小池子”。

 

PS:大池子,小池子的说法是我起的,我觉得这个很形象,便于理解🥰。

 

那你可能会问,那像 SaaS 类,如果矿池不帮你去 Beacon chain 广播,你还是无法提现啊?

 

关键来了,因为你手里有你的【验证 key】,如果最差情况发生,例如矿池 rug 了,你还可以亲自去跑这个节点,亲自广播。

 

同时,你手里还有【提现 key】,所以你可以亲自提现,完好无损取回本金。

 

而在大池子类方案里,最坏情况发生后,你是没有这个能力的,因为你既没有验证 key 也没有提现 key。

 

那你可能会问第二个问题,SaaS 方案中,小池子矿池能否做到卷我钱跑路? 这是以太坊 Staking 设计的精巧之处,因为你在创建节点时,会填入自己的提现地址,矿池无法篡改它。所以,即便矿池 rug 了,你的本金绝对无法被矿池拿走,因为偷走它的难度≈攻击以太坊本身。

而在大池子方案里,最坏情况发生后,理论上它可以携款跑路。很简单,它只要升级它的金库合约,将它的 ownership 转移给攻击者。当然这是最坏情形,发生的概率很小。

 

为了反制这一点,Lido 引入了多签来管理智能合约升级;而 Rocker Pool 似乎对此事讳莫如深,暂时没有找到它讨论合约升级的相关内容。

 

所以,对于不想打工(毕竟 7*24 运维节点不是个轻松活),又有安全性要求(不给第三方管理资金),选择 SaaS 服务是个不错的选择。除了 Ebunker 之外,还有一些矿池提供类似的“非托管”服务,可以到 Rated 上查询。

 

当然,缺点也有,所有的非托管 SaaS 类,均没有 LSD 方案。道理也很浅显,人家不掌握你的私钥,怎么敢给你发存折(LSD)?当然,有些 SaaS 矿池也会提供大池子方案,大池子方案就可以给 LSD。

 

再用精简的话说:谁掌握私钥决定了是否可以 LSD。CEX、大池子方案都可以,小池子,Solo 都不行。

 

上海升级后,以太坊提现最久 1-2 个月,SaaS 类小池子方案,流动性也得到了一定的保障,所以,这也是我个人最喜欢的方案,省心 / 稍费事 / 不把私钥给别人 /APR 不错。(前提:你拥有超过 32 ETH,否则使用 LSD)

 

第四类解决方案:Solo 类

 

最后,给大家介绍一下最终的圣杯,Solo Staking。

Solo 顾名思义,自己玩,不引入任何第三方,去中心化和安全性拉到满星的方案。

 

Solo 矿工,自己独自占有验证 key 和提现 key。优点显而易见,安全、没人抽成,给以太坊增加多样性,而且…满足精神世界的需求!

 

缺点也显而易见:自己亲自打工,需要成本:时间成本(维护它),资金成本(租赁服务器 / 搭建物理机房)。若不 24 小时维护,你的 APR 会略低一些,因为有惩罚。

 

例如,目前全网出块有效率为 97%,Vitalik 可能就是一个 Solo 矿工,专业如他,也只能做到 96% 有效率,Rocket Pool 更低,它是众包的,有效率只有 95%。

来自:Rated

Solo 的门槛我觉得至少是 10K 以太坊,也就是 30 组节点以上,一方面是考虑才能出块的稳定性(抢不到 MEV 的区块,也是很难受的)。一方面是收入打不平成本。

 

但是,如果你的以太足够多,甚至超过 30K,50K,那你可以考虑雇点人来跑,毕竟付工资要比被大池子 / 小池子按百分比抽佣便宜,肯定要盈余更多。

 

而且,Solo 是永恒的圣杯。如果数量足够大,我是强烈建议研究一下 Solo。数量低于 100K,建议重温一下第 2 类和第 3 类。

 

另外,插入一个支线。

SSV 是干嘛用的?SSV 其实是 DVT 这门技术的研究者,它暂时和上述四类方案不是竞争对手,而是合作关系。DTV 是用于拆分验证 key 的。

 

当你的验证 key 被拆成 4 份之后,妙处在于:

①   一个运营商掉线,那其他运营商可以立刻补上;

②   同时每个运营商都不清楚完整的验证 key,这个让验证这个环节更去中心化,它可以让 Lido 类、SaaS 类和 Solo 方案变得更强。

 

终于写完了这篇!虽然很长,希望这篇分析能帮大家彻底捋清所有 Staking 方案之间的关系和异同。欢迎大家 mark,随时复习。有任何很关于以太坊 or Staking 任何问题,欢迎推特 DM 私信@0x_todd。

 

最后的最后!欢迎大家一起来当验证者!为以太坊网络安全做出你的贡献🧐

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

0xTodd
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开