ETH 2.0 新的机制,新的生态
博上
发表于 2022-11-5 17:49:18
131
0
0
作为验证者,就是运行节点,也就是一个以太坊2.0 的客户端软件,目前很多公司在做开发测试,任何人都可以下载客户端并模拟运行 ETH 2.0 的信标链。0 t! U0 `( I6 ]9 g1 A
& s- _5 u) k6 c7 \9 }9 c' ]3 B
现在各个机构和各人都在抵押ETH,然后运行节点充当验证者,好处当然大大的。0 v; O: V$ _# W
出于安全性着想,信标链上需要有52.4个ETH被抵押,才会正式启动,因为当网络上存在多个客户端实现时,单个客户端的一个 bug 对网络带来毁灭性影响的可能性会大大降低。如果在一个客户端中出现了一个bug,该客户端会无法参与共识,但整个网络还能继续运行并敲定交易,因为其他的客户端不太可能会出现同样的bug。换句话说,其他的客户端会维持共识。因此,多客户端并存能提高网络安全。写这篇文章的时候,已经427%的进度了,就是说远远超标了,当然,信标网已经启动了。4 o& b: ~. Q" F
* U( _: ? S: Y* Q% F1 v
抵押,运行节点当验证人,这个生态圈正在被建立,无论中心化的,还是去中心化的,熙熙攘攘,皆为利来。无论中心化还是去中心化,这块蛋糕基本被分成两块:ETH Staking和Node provider,针对大机构,一般抵押就是实打实的要求最少32 个ETH,而现在也出现了一些开发中产品,针对散户降低要求,有的是0.5ETH,最少的是0.01ETH,有点人性的提供ETH的替代产品,保持流动性,比如aETH,sETH,还有的把抵押的ETH变成借贷USDC,USDC没有问题,但是给机构带来风险,不知道几个机构愿意这么干,具体我还没研究过。4 k! ]/ ^8 ^! @3 G1 N4 a1 L& z2 k
" x: E& {' `% ~' U8 ?
还有一块蛋糕就是运行节点,很多机构提供了一键运行验证人节点,当然天下没有免费的午餐,您得出点血,如果做得去中心化的,签名的钥匙自己保管,通过远程签名授权,让运行节点的运营商去签字验证区块,获取奖励。大多数产品都提供一站式服务,抵押+运营节点。你也可以申请做节点运营商,很多产品只需要抵押一些以太坊就可以了,比如16ETH,你可以获取别人抵押ETH后你挖矿产生的部分收益,但是也要承担风险,如果掉线了,你得一人承担,从你的16ETH里扣除,不公平?当然,谁叫你没钱买足32ETH呢?这个世界就是这么残酷。如果自己资金不足,可以去aws,虚拟主机啥的申请一个,或者你家网络足够稳定不掉线(这个我跟朋友讨论过,还是外面租机器靠谱),然后运行节点,申请做节点运营商。
目前已经有了不少产品,但是从界面上也看不出是不是去中心化的,除非你直接登陆币安,火币,看到的产品肯定是中心化的,别的DAPP都大同小异,但是从使用过程中,你可以感受它是不是去中心化的,还是半去中心化的,从下面这个表格来判断。先说说两种钥匙,Validator Key 和 Withdraw Key,前者是节点运营商签字区块用的,后者是抵押者在未来(也许2年后Phase 2做出来,也许永远)取回自己抵押的bETH(按1:1兑换成信标链上的币)和奖励的bETH用的。如果你能自己保管两者,不用把私钥交给产品,那么这就是完全去中心化的;如果Validator Key被人家保管,Withdraw Key 自己保管,那么就是半去中心化的,我觉得这个很好,毕竟,大多数人不会在意怎么运行节点,只要收钱就行;如果两个都被人家保管,那么就是中心化的,这个时候,你就要小心了,毕竟收钱的钥匙在人家手里,万一人家跑了。。。
! m$ f- t3 X3 W+ c3 I" |% r
其实我觉得让别人保管签名钥匙也没有什么大问题,毕竟节点实时运行,要频繁签名验证区块,但是能自己保管也可以,比如Blox,就用了一种远程签名技术,钥匙你自己保管,文件到你那里签个名就行,但是这个给运营带来了断线风险,如果这个在你自己机器上,所以把这个放到别的服务器上也是不错的主意,但是,我既然要自己租机器放私钥,为何不索性在机器上运行个节点呢?如果这个私钥由Blox替你保管,需要时候签个名,那不就跟把私钥控制权给别人差不多吗?! V: Z9 k o/ Y
关于Withdraw Key,它是抵押32ETH的那个人的取款钥匙,它当然是直接抵押ETH的那个人或机构,如果是众筹抵押呢?比如,这种情形好说,反正以太坊的抵押合约认准直接抵押32ETH的那个地址的钥匙。* h" Y" X5 l& m* q0 P0 ?
, v$ z9 G4 P6 [/ `8 ~
如果是这种众筹情形呢?这种带micro pool的产品,允许用户低于32ETH来抵押而享受抵押的回报,它必须有一个软件(更可能是智能合约)来管理micro pool,这个Withdraw Key肯定不在用户手里了,但是合约中会有用户的以太坊地址和这个Withdraw Key的映射关系,以便对财富进行分配。& F( y7 Z2 b" l0 ?6 u
最近研究了一些产品,机构搞的中心化抵押产品我实在不敢相信,这个圈子大骗子和小骗子太多,这个ETH要锁定至少1-2年出不来,机构提供的ETH 替代品,随时可能失去流动性,这个我还是把它们往好的地方想,如果再邪恶一点,甚至根本不会去抵押,而是进了自己的腰包。还有个问题没有一个产品说清楚的,就是由信标链产生的bETH,这个算谁的?既然机构提供了流动性替代产品,抵押ETH产生的bETH算是谁的?但是既然用户手里有Withdraw Key,那么等ETH Phase 2的时候,用户应该可以得到自己的bETH吧。
还有些带白皮书的去中心化和半去中心化的产品,比如Blox Staking,要2021年三季度上线,号称是一个完全去中心化的产品(User withdrawal keys AND validator keys are never stored by Blox),Rocket Pool ,一个由创始人2016年就开始写代码,写到现在刚出来Beta测试版的,Staked, StakeWise(中心化方式,Validator key用户不掌握,Withdraw key在用户手里),CodeFi ,以太坊 2.0 质押赛道上的重度参与者。CodeFi Activate 和以太坊基金会(EF) 合作推出了 Eth2 Launch Pad,为那些运行自己验证人节点的硬核用户,提供了直观的页面引导。这些产品基本大同小异,都有以下几个功能:4 m6 w6 U) i; q/ S4 _4 l
带微池的ETH抵押:一般都有抵押的门槛,比如已经商用的Stkr 平台的最低存入量为 0.5 ETH,而Rocket Pool号称最低0.01ETH,而我在stakewise测试网上就无底线了,随便多少ETH,来着不拒,它按照回报的10%来收费;* C9 d% E2 Q& c) i+ @, r
6 v" m u) T8 k) _' Y1 i$ `" a
节点运营:有的提供节点运行的环境,不用操心,但是得付费,比如stakewise,你得抵押32ETH,然后月租费是10DAI,我想这也算公平,你到外面去租个机器运行,大概也要这个价格吧,还免了自己操心;$ W2 s6 x$ ^/ ?- H
7 p+ P3 Z4 Q. A
钥匙的管理:带微池抵押的两把钥匙都不在自己手里,这个可以理解,如果直接抵押了32个ETH由项目方包办节点运行的,Validator Key不在自己手里,而Withdraw Key由自己掌管。9 o& C, O5 Y$ M7 O4 E" z
testnet上亲测可以玩耍的平台有:
https://stakewise.io/app/solo
' r6 F3 W( r: r. P/ _) D) Z. q
Rocket Pool号称今天可以玩了,但是亲测下还是不行,慢慢等吧。
8 b/ G8 p S8 J0 n2 U$ L
https://beta.rocketpool.net/
& ~/ d& l4 B+ z, U
想对这玩意有真正详细的了解,不如硬核一回,自己搭建节点,在测试网络上先试验跑一下。这篇文章和另外一片文章写得很详细,如何在Goerli ETH 1.0 测试网和Medalla (目前应用多的是pyrmont,medalla对用户诸多限制,而且据说版本很乱) ETH 2.0 测试网上跑Ethereum 2.0 Validator Node。但是区块链技术更新太快,必须配合官方网站的内容才能真正搭建一个验证节点。我各人安装体会是:以官方的为准绳,medium那两篇文章里东西有可能会过时,比如它用的medalla的测试网络,而最新使用广泛的是pymont,不过可以用它来配置成系统重启能自动启动节点程序。' y. e, X4 z5 B; t- I0 r$ g5 D' ^* S0 _
* m. x, v- \& w, b
要跑验证节点,不是单独安装这么一个应用就可以的,得安装ETH1的全节点,当然也可以跟现有第三方的服务连接,比如infura,但是官方建议自己安装,为了保证更加去中心化。还要安装ETH2的Beacon节点。对机器还是有些要求的,并不是V神所说,随便什么机器都能跑的。这是对机器配置的最低要求:0 F; z+ [2 T: ~8 p
Dual-core CPU, 2015 or newer5 \! Q$ ?- ~" r
7 x! r- F5 Q3 S* Y7 a
8 GB RAM! Z2 u! Z0 u$ S- p
3 g2 R2 ?) O- m- s/ I* p/ N
128 GB solid state storage1 }$ p; x$ w, r2 j7 T
10 Mb/s download, 5 Mb/s upload broadband connection+ e: z5 H' v* @' H! Q5 R, Q
如果要自己跑ETH 1 节点,再增加400G的硬盘容量 s. L$ y, {+ \3 U6 w' T- g
这个节点运行结构图如下,- J& [3 ?0 x) G: Q7 q
在这个过程中会生成2组Key,就是上面说到的“withdrawal keys and validator keys”,需要把生成key的种子记住了,下次取款时候需要。这个生成的deposit.json主要内容如下:
A validator deposits by sending a transaction that calls a function on the deposit contract on the eth1 chain. A deposit specifies:: u/ g+ m. A5 x$ Q2 f8 ?
The public key corresponding to the private key that will be used to sign messages
The withdrawal credentials (hash of the public key that will be used to withdraw funds once the validator is done validating)
The deposit amount. Q, s! j% X* T
7 k5 R2 |. h3 i3 p* h6 l/ {
把deposit.json文件上传到ETH2 launchpad后,就会要求抵押32ETH了,连上我的metamask钱包,找到Goerli testnet,就把钱转过去了,所以这个系统应该是知道谁抵押过32ETH的。这也是我一直之前疑惑的地方,怎么把谁抵押了ETH这个事情跟生成的两组key联系起来。但是我觉得这个事情是中心化系统做的,然后写进合约里去。
我觉得自己搞还是要小心的,要考虑好各种网络安全,还要注意不要因为无知而被罚款,这里是官方的一个防止罚款指南。还有就是机器性能真的很重要,这边的家庭网络,可能只能满足最低带宽需求。+ S4 ~: u: D+ [: C% B" h
还有些小工具用来检查节点运行是否正常的:
9 ? R4 ^$ t: }% c
这个检查ETH1的节点是否正常。
geth attach localhost:8545
eth.syncing& A Y& z& f* \
检查ETH 2.0 的Beacon Chain节点运行状况:4 a. w' _+ I# }+ Y0 x6 L8 {
lighthouse --debug-level debug `bn
" O3 x9 L; V- w2 o5 o! l3 U7 _
再所有配置文件里,都要填上网络配置:
3 I# Y8 v k+ i: U$ X1 P1 v) V: U
–network pyrmont
8 m8 ]( t& ?; A
在Beacon Node 同步上之前,Validator还工作不了。总之速度非常慢。然后Validator Client还要去排队,据说需要好几天才能轮上。我觉得币价是个刺激因素,以后是否会冷下来,让普通人能快速排上队。
, v- n5 @6 b2 T& L) j; T! r; V
最后,nano是个很难玩的编辑器,然后ubuntu里很多文件都需要超级用户才能打开的,它自身带的text edit很好用,所以我用这个命令打开所有要编辑的文件:' X' r2 h2 [* I. m8 K% u% `
sudo gedi
成为第一个吐槽的人