Vitalik Buterin 详细解答了以太坊 2.0 中文社区关于 staking 的疑惑,他表示 ETH 2.0 与 Cosmos、Tezos 等 staking 较为火热的公链的设计不同,在前期暂时没有「委托」的概念,即持币人不能将持有的 ETH 去中心化地委托给节点代为挖矿。

原文标题:《ETH2.0 如何 Staking,我们去问了 V 神》
作者: Rudy 卢地

昨日荣幸被拉进了新建立的以太坊 2.0 中文社区,进去时群里只有几十人,一看 V 神的微信也在群里,并且 V 神那会好像非常有时间(后来知道了是在台北机场等候飞机),一直在群里非常活跃地与各位以太坊 2.0 爱好者们互动(中文表达能力也是越来越强了),整个下午变成了一场非常长时间的线上 AMA。

AMA 谈及了分片、治理、DApp、1.0 和 2.0 过渡等等,我和小伙伴们瞅准机会当然也问了不少 staking 相关的问题,之前只能在以太坊论坛等公开网络上寻找 V 神与其他人的碎片化解读,今天终于能得到 V 神的亲自讲解,一些之前非常想问的问题都得到了解答,心情十分舒畅。

现在便将这场 AMA 中与 staking 相关的提问与 V 神的解答整理一下,应该是目前设计版本的权威解读了。

解读整理

1. 32ETH 是成为一个节点所需的质押值,既是下限也是上限。如果有 320ETH 则只能建立 10 个节点,而不能将 320ETH 质押给 1 个节点。

2. 32ETH,对应 1 个节点,对应 1 个私钥。

3. 可以通过 1 个客户端运行多个节点,但验证、签名的区块数也相应增多,如果同时运行数百节点可能需要租赁服务器。

4. ETH 2.0 与 Cosmos、Tezos 等 staking 较为火热的公链的设计不同,在前期暂时没有「委托」的概念,也即持币人不能将持有的 ETH 去中心化地委托给节点代为挖矿。

5. 但在阶段 2 (最早开启的是阶段 0)将可以通过合约成为节点,届时节点服务商可以发起节点合约,设定返利规则,其他持币人通过往合约打币「凑齐」32ETH 来参与,并得到分红。

(最后附有 AMA 中 Staking 部分实录)

Staking 服务商的发展机会

依照 V 神目前给出的解释,在阶段 0 与阶段 1 无法实现去中心化委托,那么持有 ETH 的持币者无法将 ETH 质押给节点代为挖矿,Staking 服务商难以再沿袭之前建立节点、社区拉票、返利分红这样的模式,那么还会有哪些机会呢?

虽然以太坊这样设计的目的是为了鼓励更多的用户参与到挖矿之中,实现节点的去中心化,但是持币者们依然难以直接参与到 ETH2.0 的节点网络中。一来 32ETH 依然是一个不低的门槛,这将使得大量小持币者无法参与;二来节点需要 24 小时运行出块,虽然以太坊已经尽力最小化离线会带来的惩罚,来鼓励大众参与,但 24 小时运行也是一件累人的工作,何况还要处理节点升级、运维、防灾等等麻烦事情。

无论是持币少而不能参与,还是由于无法 24 小时在线而造成的收益不充分,都会在 ETH 增发下造成隐形的通胀损失,这必然是 ETH 持币者们不乐意见到的。针对这样的需求,Staking 服务商针对 ETH 2.0 可以探索这样几条道路。

1. 提供技术支持服务

让用户掌握私钥,Staking 服务商为其提供完整的节点技术服务,包括服务器租赁、节点升级、运维、防灾等等,收取一定的技术服务费用。

2. 中心化钱包

虽然不能去中心化委托,但可以通过提供统一的中心化钱包让用户充币,Staking 服务商再将充入的币每 32ETH 建立一个节点,按照一定的返利率对所有充币用户返利。这种办法既能解决持币者运行节点的问题,还能让持币不足 32ETH 的持币者获得 Staking 收益,但是弊端是节点跑路的风险,中心化钱包的提供者需要获得 ETH 持币者的充分信任。

3. 等待阶段 2 上线,实现去中心化委托

依照 V 神的表述,直到阶段 2 才能用合约实现 Validator 的收益取款,如果能用合约实现取款则可以让多个持币者往合约打币凑齐 32ETH,并根据合约的规则分配收益,规则在合约中透明,也没有卷走本金的风险。如果该智能合约可以实现,则 Staking 服务商可以以小额 ETH 启动大批量节点合约,并号召持币者往合约中打币,颇有种拼团发车的意味。不过按照目前的说法这需要等到阶段 2 上线,时间未知。

AMA 实录

节点条件

竹风:我关心 ETH2.0 要什么条件才能做节点

Vitalik Buterin:32 以太币和普通电脑应该够了。

大志:超过 32 个怎么办?如果有 320 个币怎么办?分 10 个节点跑吗

Vitalik Buterin:可以跑一个客户端,客户端都能管理多个 validator id (验证人身份)。但是 validator id 越多,那么需要验证的数据越多。比如如果你有 10000 以太币,可能需要服务器。

Kai:这里说的数据越多,是指同样的链上数据,若干 validator (验证人)进行 vote (投票)的次数越多吗?

Vitalik Buterin:这是分片的特点,分片的区块是给 validator id 分配的,所以如果你有很多 validator id 你需要验证和签名更多区块。

大志:10 个 id 就要保管 10 个私钥吗?还是 1 个私钥只需要 1 个客户端就可以管理 10 个 id?

Vitalik Buterin:10 个私钥。但是客户端可以用一个私钥生成多个私钥。

去中心化委托的可能

Rudy@InfPool:这样看起来,ETH 2.0 的 staking 应该不含「委托 " 的部分了。如果自己不够 32ETH,也不能去中心化地委托给其他节点?也许中心化钱包可以做一个 pool (矿池),人为地分配,每 32ETH 成立一个 Validator。

Vitalik Buterin:Phase 2 (阶段 2)后可以用合约做委托,私钥的持有者为你签名区块等等,但是不能 withdraw (取款)给自己的账户。

Rudy@InfPool:您的意思是,Phase 2 后,可以几个人通过 1 个合约凑齐 32ETH,共同成为 1 个 Validator?

Vitalik Buterin:嗯,我多描述一下这个方法吧。

你开一个 validator 的时候,需要设置两个公钥:签名的公钥和取款的公钥。Phase 2 后,不一定需要设置取款公钥,也可以设置取款合约,签名的私钥能 withdraw,withdraw 完成后 validator 里面的资金都给取款合约的地址。

所以你开新的 validator 的时候,可以先发比如 1 以太币,设置取款合约,这个合约的规则是,谁 deposit (存款)多少谁按照比例 withdraw 多少。比如,你 deposit 1 以太币,然后有 3 人 deposit 8,10,13 以太币,一共 32,所以 validator 变成 active (活跃)。一段时间后,你发 withdraw 的交易,现在因为奖励这个 validator 的 balance (余额)是 33.6 以太币(加 5%),33.6 以太币给合约,合约的规则分配 1.05 给你,8.4,10.5 和 13.65 给其他的参与者。

签名的私钥是你的,谁能 withdraw 多少的规则是合约定的。别人能看一个还未 activated 的 validator 的 withdraw 合约的规则,如果他们觉得是合理的他们能发他们的币给这个 validator。这个是委托的方法。

Rudy@InfPool:明白了,但是要等到 phase 2。我最早在 ethresearch 的这个帖子里看到合约做 validator 的构想,帖子名字叫《Decentralized Casper Validator Proposal》(关于去中心化 Casper 验证人的提案),也推荐一下:https://ethresear.ch/t/decentralized-casper-validator-proposal/1430

32 ETH 门槛

blockpunk@ 无涯:32eth 门槛还是很高

Vitalik Buterin:32 这个数字是看客户端效率设置的。如果是 4 以太币,validator id 会很多,链的 overhead 会太高了。

但是客户端效率的提升可以用去 2 个方向:一个是降低 validator 的最低 eth,比如到 8,同时提高分片的数量;第二个是不提高这些数字,让客户端变得越来越 low resource,这样越来越多用户能跑 beacon node (信标链节点)。

硬件要求

blockpunk@ 无涯:一个拥有 320000 个以太币的客户端,建立的 10000 个 vaildator 会被随机数分到 1024 条分片上,那这个客户端就得存储全部分片的数据对吗 ? 这样一台机器的带宽和存储都撑不住吧。

Vitalik Buterin:是。最近的计划不是 1024 分片,是 64 分片,2048 个 committee (委员会)。如果你的以太币超过 6 万,你需要处理几乎所有区块,所以土豪可能要泡服务器。

Rudy@InfPool:处理所有区块,租用服务器是否可以做到?再往上,6 万和 60 万的区别应该就不大了吧。

Vitalik Buterin:其实不是特别多数据,2.7 MB/sec,当然乘以 p2p 网络的 overhead 等等。

来源链接:mp.weixin.qq.com