解讀stETH的巧妙設計

3/22/2024, 10:01:35 PM
stETH 本質的邏輯就是把 ETH 給到 Lido,Lido 會用這些 ETH 去參與以太坊的 PoS 以獲取收益,用戶會得到對應的 stETH 作爲憑證。接下來就是 Lido 要把收益發放給這些擁有 stETH 的地址。

轉發原文標題:巧妙的合約設計,看看 stETH 如何按天自動發放收益?讓你的 ETH 參與質押獲取穩定利息

筆者把自己爲數不多的 ETH 兌換爲 stETH 後,發現 stETH 每天都在自然增長,不斷獲取收益。但是卻沒有看到帳戶有交易產生,這是爲什麼呢?本文帶大家一起來看看背後的巧妙設計,揭開收益發放的祕密。

1 個 stETH 過去幾天後已經有了一些收益

在這之前先介紹一下 stETH 賺取收益背後的邏輯,也就是以太坊的質押(Staking),已經了解這部分概念的讀者可以直接跳到後面。

最初的以太坊和比特幣一樣是通過工作量證明(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 本質的邏輯就是把 ETH 給到 Lido,Lido 會用這些 ETH 去參與以太坊的 PoS 以獲取收益,用戶會得到對應的 stETH 作爲憑證。接下來就是 Lido 要把收益發放給這些擁有 stETH 的地址。

我們可以看到 stETH 的收益每天都會自動更新,下圖是我們測試的收益情況,對應每天都可以檢查加密錢包驗證相關內容。

但是到這裏我想熟悉智能合約開發的同學就會疑惑了:每天發放這麼少的收益,可能收益都不夠付 GAS 的。

確實,如果 Lido 按照最簡單的做法來發放收益的話,那確實難以覆蓋 GAS 的成本。從我們的直覺來看,要往如此衆多的地址發送代幣,GAS 是難以想象的。

但是確實 Lido 就實現了錢包中的 stETH 收益自動增長,而且我們並沒有發現該地址有任何交易,這是怎麼實現的呢?

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

balanceOf 是符合 ERC20 規範的方法,錢包就是通過該方法獲取用戶有多少 token 的。

我們可以看到 stETH 的合約中這裏調用了 getPooledEthByShares 方法。該方法入參是 mapping (address => uint256) private shares;。這代表用戶有多少 stETH?顯然不是,不然每天都需要更新每個地址的數據,雖然這樣也可以做到只要調用合約中的方法來更新 shares 來實現一次交易就能更新所有地址的 token,但是顯然這樣做 GAS 的消耗同樣也是巨大的。

想必到這裏大家已經要猜到合約是怎麼實現的了,我們繼續來看 getPooledEthByShares 方法。

可以看到最終返回的結果是用地址中 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):

我們可以看到每天都會有調用更新相關內容,這就是爲什麼雖然我們無法看到我們的地址中有發放收益的交易,但是金額依然每天在變化的原因。

這背後其實體現了以太坊 ERC20 智能合約的一個特點,就是這些 ERC20 的合約擁有多少代幣並不是寫死在地址上的,而是合約方法返回的,所以可能會出現帳號雖然沒有任何交易,但是代幣的數量也可能發生變化。這一方面讓 ERC20 合約更靈活,但是另外一方面也給很多對合約不熟悉的朋友帶來了很多困惑,希望本文可以幫助大家更多的理解智能合約,更安全的和智能合約交互。

另外,雖然通過把 ETH 質押爲 stETH 能夠獲得看似穩定的質押收益,但是依然有可能的風險存在,本文只作爲對質押合約的技術研究參考,不構成任何投資建議。

聲明:

  1. 本文轉載自[ZAN Team],原文標題“巧妙的合約設計,看看 stETH 如何按天自動發放收益?讓你的 ETH 參與質押獲取穩定利息”,著作權歸屬原作者[ZAN Team],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。

  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。

  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

分享

目錄

幣圈日曆

項目進展
Etherex 將於 8 月 6 日推出代幣 REX。
REX
22.27%
2025-08-06
NFT AI 產品發布
Nuls將在第三季度推出一款NFT AI產品。
NULS
2.77%
2025-08-06
dValueChain v.1.0 發布
Bio Protocol 將在第一季度推出 dValueChain v.1.0。它旨在建立一個去中心化的健康數據網絡,確保在 DeSci 生態系統中醫療記錄的安全、透明和防篡改。
BIO
-2.47%
2025-08-06
AI生成的視頻字幕
Verasity將在第四季度添加一個AI生成的視頻字幕功能。
VRA
-1.44%
2025-08-06
VeraPlayer 多語言支持
Verasity將在第四季度爲VeraPlayer添加多語言支撐。
VRA
-1.44%
2025-08-06

相關文章

3074傳奇後對以太坊治理的思考
中級

3074傳奇後對以太坊治理的思考

以太坊 以太坊改進提案-3074/以太坊改進提案-7702事件揭示了其治理結構的複雜性:除了正式的治理流程外,研究人員提出的非正式路線圖也具有重大影響。
6/11/2024, 7:21:16 AM
以太坊被低估了嗎?
中級

以太坊被低估了嗎?

儘管最近一些加密貨幣投資者對以太坊感到失望,認為其表現未能超過比特幣,但以太坊繼續展示持續的技術創新和市場優勢。
5/27/2024, 10:01:05 AM
由幣安實驗室支持的必試專案,提供額外權益質押獎勵(包括分步指南)
中級

由幣安實驗室支持的必試專案,提供額外權益質押獎勵(包括分步指南)

Zircuit是與以太坊虛擬機(EVM)完全相容的zk Rollup。它目前處於測試網階段。它通常可以理解為使用zk技術的以太坊L2。從本質上講,它仍然是解決以太坊本身的性能和效率問題,並説明交易更好更快地執行。與OP架構相比,Zircuit可以實現zkEVM Rollup的快速一致的性能,而無需提現交易的挑戰期。
6/20/2024, 2:33:10 AM
什麼是海夫?您需要瞭解的有關HYVE的所有資訊
中級

什麼是海夫?您需要瞭解的有關HYVE的所有資訊

Hyve採用區塊鏈技術為零工經濟建立一個更公平的系統,自由職業者可以享受靈活的工作,更快的支付和社區治理,而企業則可以獲得頂尖人才。
6/21/2024, 12:59:47 AM
思維網路:全面同態加密和重質押,讓AI專案安全觸手可及
中級

思維網路:全面同態加密和重質押,讓AI專案安全觸手可及

Mind是一種AI重質押解決方案,通過靈活的重質押和共識安全的全同態加密,確保去中心化AI網路的代幣經濟和數據安全。雖然 EigenLayer 使用重質押來保護以太坊生態系統中的不同 AVS,但 Mind Network 使用重質押來確保整個加密生態系統中各種 AI 網路的共識。
6/12/2024, 9:18:16 AM
並行以太坊虛擬機(EVM):高性能區塊鏈的未來
新手

並行以太坊虛擬機(EVM):高性能區塊鏈的未來

本文詳細介紹了以太坊虛擬機(EVM)作為以太坊核心的操作,並探討了高性能 Layer1 區塊鏈在並行執行和虛擬機選擇方面的創新。未來,更多的Layer 1將實現以太坊虛擬機(EVM)並行升級或以太坊虛擬機(EVM)相容解決方案,以促進區塊鏈生態系統的多樣化發展。
6/12/2024, 2:07:57 PM
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!