解读stETH的巧妙设计,它是如何按天自动发放收益的?

《巧妙的合约设计,看看 stETH 如何按天自动发放收益?让你的 ETH 参与质押获取稳定利息》

来源:ZAN Team

笔者把自己为数不多的 ETH 兑换为 stETH 后,发现 stETH 每天都在自然增长,不断获取收益。但是却没有看到账户有交易产生,这是为什么呢?本文带大家一起来看看背后的巧妙设计,揭开收益发放的秘密。

解读stETH的巧妙设计,它是如何按天自动发放收益的?

1 个 stETH 过去几天后已经有了一些收益

在这之前先介绍一下 stETH 赚取收益背后的逻辑,也就是以太坊的质押(Staking),已经了解这部分概念的读者可以直接跳到后面。

解读stETH的巧妙设计,它是如何按天自动发放收益的?

最初的以太坊和比特币一样是通过工作量证明(Proof of Work,PoW)来作为它的共识机制,但是 PoW 因为耗电以及其它安全性和性能上发展的考虑,以太坊从 2022 年 9 月开始升级为权益证明(Proof of Stake,PoS)。

原本依靠算力挖矿来吸引矿工实现共识的以太坊,摇身一变,变成了依靠大家通过质押 ETH 获取投票权,通过投票来获取收益,从而激励大家通过 PoS 的方式来实现共识。

通过质押 32 个 ETH 可以加入以太坊网络,可以成为验证者,负责存储数据、处理交易以及向区块链添加新区块。只要运行将交易正确打包为新区块并检查其他验证者工作,就会获得 ETH 奖励,这样就相当于你可以通过质押的方式让 ETH 可以拥有相对稳定的收益。

但是这样的质押对于普通用户来说还是太麻烦,毕竟 32 个以太坊和一台要能够全年无休接入以太坊网络的专用计算机还是有一定的门槛的。而且质押 ETH 会使得丧失了这部分 ETH 的流动性。于是就有了流动性质押衍生品(Liquid Staking Derivatives,LSD),它旨在解决传统质押中的门槛和流动性问题,允许用户质押 32 个以下的 ETH,以及不需要自己拥有节点,而是把 ETH 委托给第三方质押,并获取相应的质押代币(如 Lido 的 stETH 或 Rocket Pool 的 rETH),这些流动性代币可以在其他平台上交易、借贷或用于其他金融活动,这样,用户既能更便捷参与到质押中获得奖励,又能保持资金的灵活性。

解读stETH的巧妙设计,它是如何按天自动发放收益的?

所以 stETH 本质的逻辑就是把 ETH 给到 Lido,Lido 会用这些 ETH 去参与以太坊的 PoS 以获取收益,用户会得到对应的 stETH 作为凭证。接下来就是 Lido 要把收益发放给这些拥有 stETH 的地址。

我们可以看到 stETH 的收益每天都会自动更新,下图是我们测试的收益情况,对应每天都可以检查加密钱包验证相关内容。

解读stETH的巧妙设计,它是如何按天自动发放收益的?

但是到这里我想熟悉智能合约开发的同学就会疑惑了:每天发放这么少的收益,可能收益都不够付 GAS 的。

确实,如果 Lido 按照最简单的做法来发放收益的话,那确实难以覆盖 GAS 的成本。从我们的直觉来看,要往如此众多的地址发送代币,GAS 是难以想象的。

但是确实 Lido 就实现了钱包中的 stETH 收益自动增长,而且我们并没有发现该地址有任何交易,这是怎么实现的呢?

我们找到了 Lido 的合约 https://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84 追溯到合约的 balanceOf 方法:

解读stETH的巧妙设计,它是如何按天自动发放收益的?

balanceOf 是符合 ERC20 规范的方法,钱包就是通过该方法获取用户有多少 token 的。

我们可以看到 stETH 的合约中这里调用了 getPooledEthByShares 方法。该方法入参是 mapping (address => uint256) private shares;。这代表用户有多少 stETH?显然不是,不然每天都需要更新每个地址的数据,虽然这样也可以做到只要调用合约中的方法来更新 shares 来实现一次交易就能更新所有地址的 token,但是显然这样做 GAS 的消耗同样也是巨大的。

想必到这里大家已经要猜到合约是怎么实现的了,我们继续来看 getPooledEthByShares 方法。

解读stETH的巧妙设计,它是如何按天自动发放收益的?

可以看到最终返回的结果是用地址中 sharesAmount 乘以 _getTotalPooledEther() 再除 _getTotalShares。

_getTotalPooledEther 代表总共有多少 stETH(按照 stETH 兑 ETH 为 1:1 的话也代表有多少 ETH),_getTotalShares 代表有多少份额。这样一算每个地址有多少 stETH 就是动态计算出来的了。

举例说如果现在一共有 1000 个份额(Shares,也就是 _getTotalShares 方法返回的数量),其中 A 地址有 100 份(对应上面的 sharesAmount)。这 1000 个份额对应 1000 个 stETH(也就是 _getTotalPooledEther)返回的数量。那么按照这个计算,A 地址就对应有 100 个 stETH。那 Lido 拿这总得 1000 个 ETH 去质押获取到 1 个 ETH 的收益后对应更新 _getTotalPooledEther 为 1001,也就是最初总共 1000 个的 stETH 变多变成 1001 个了,那么新的计算出来 A 地址就拥有了 100 * 1001 / 1000 = 100.1 个 stETH。

简单点说就是每个地址拥有的股份不变,股份对应的 stETH 变多了,那么一计算自然 stETH 就变多了。

我们继续看代码, _getTotalPooledEther 中的逻辑是会受到 handleOracleReport 方法影响,而这个方法则会更新合约中的相关数据。具体的调用是会通过 https://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee 合约定期调用 submitReportData 更新数据(submitReportData 中会调用 Lido 合约的 handleOracleReport):

解读stETH的巧妙设计,它是如何按天自动发放收益的?

我们可以看到每天都会有调用更新相关内容,这就是为什么虽然我们无法看到我们的地址中有发放收益的交易,但是金额依然每天在变化的原因。

这背后其实体现了以太坊 ERC20 智能合约的一个特点,就是这些 ERC20 的合约拥有多少代币并不是写死在地址上的,而是合约方法返回的,所以可能会出现账号虽然没有任何交易,但是代币的数量也可能发生变化。这一方面让 ERC20 合约更灵活,但是另外一方面也给很多对合约不熟悉的朋友带来了很多困惑,希望本文可以帮助大家更多的理解智能合约,更安全的和智能合约交互。

另外,虽然通过把 ETH 质押为 stETH 能够获得看似稳定的质押收益,但是依然有可能的风险存在,本文只作为对质押合约的技术研究参考,不构成任何投资建议。

原文链接

文章来源于互联网:解读stETH的巧妙设计,它是如何按天自动发放收益的?

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策井自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场

上一篇 2024年3月11日 下午8:10
下一篇 2024年3月11日 下午10:09

相关推荐

  • Kava 13 升级即将到来,将包括 Kava EVM 2.0、Cosmos-以太坊桥接等功能

    ChainCatcher 消息,Kava 发布博客表示,Kava 13 升级即将到来,升级包括: 1. Kava EVM 2.0,将通过全节点软件优化和托管服务提供商扩展提升性能,消除停机时间和加速处理来自协议和钱包的大量数据的请求来支持新协议的启动; 2.  Cosmos-以太坊桥接,增加 Cosmos SDK 和 EVM 链上钱包、dApp 和资产的实用…

    2023年3月15日
  • 数据:zkSync Era 主网地址数已超 16 万个,跨链 ETH 超过 3.4 万枚

    ChainCatcher 消息,据 Dune 数据显示,截至 3 月 30 日,zkSync Era 链上单一地址数已达 160351 个,已有 34188 枚 ETH 跨链进入 zkSync Era 网络,平均每个地址存入的 ETH 约为 0.2 枚。(来源链接) 文章来源于互联网:数据:zkSync Era 主网地址数已超 16 万个,跨链 ETH 超过…

    2023年3月30日
  • Delphi Labs总法律顾问:大部分RWA的代币化都无法实现

    作者:@lex_node 编译:Luccy,Bitbili RWA(真实世界资产)无疑是当下 Crypto 行业内最火爆的概念之一。截至 10 月 3 日,MakerDAO RWA 总资产达 32.46 亿美元。 Maker 作为先驱代表,通过打通了对美债的收益窗口,吃到了高息周期的时代红利,进而放大了 DAI 的市场需求,最终在大盘走低之时逆向推高了自身市…

    2023年10月16日
  • 周末荐读:解读Arbitrum空投细则;美联储是否再次开启「印钞」模式?

    那些精彩的文章,不会因为时间的流逝而被遗忘。为方便读者回顾及收藏优质内容、跟踪项目最新动态、了解市场行情以及学习与探讨。律动 Bitbili 将定期为读者总结优质内容。如有任何建议及意见、投稿及观点探讨,欢迎通过本文文末方式联系我们。 《一文了解 Arbitrum 空投细则》 Arbitrum 正式宣布将于 3 月 23 日向其社区成员空投治理代币 ARB,…

    2023年3月19日
  • AI重新定义Web3?深度解析AI+区块链如何引领下一代互联网

    《AI 重新定义 Web3?深度解析 AI+区块链如何引领下一代互联网》 作者:Zelda,R3PO Web 3.0,也被称为语义网(Semantic Web),是互联网发展的下一个阶段,Web 3.0 的应用旨在通过建立分散的基础设施,在分布式区块链和云网络上运行,消除对中央服务器的需求,从而实现更高的安全性和互操作性。区块链往往被认为是 Web3 的基础…

    2023年3月5日
返回顶部