Harvey

Harvey

Human being.

Lido Oracle 分析

LidoOracle 是一個合約,其中預言機向 DAO 發送由 ETH 2.0 控制的地址餘額。預言機由 DAO 指定。預言機每幀(目前為 225 個時代,相當於一天)推送其報告,當相同報告的數量達到「法定人數」值時,報告將推送到 Lido 合約。

然而,每日預言機報告並不是理所當然的。如果 Beacon Chain 沒有最終確定性,預言機守護進程可能會停止推送其報告很長一段時間。這最終會導致沒有預言機報告和沒有 stETH 重組整個時期。

此外,還有一些值得一提的機制,如存儲收集的報告作為數組、添加計算持有人獎勵 APR、通過可配置值對預言機報告進行健全性檢查以及在報告推送時調用接收器函數。

LidoOracle 與 DAO 的交互主要體現在預言機的指定上。預言機由 DAO 指定,這意味著 DAO 負責決定哪些預言機可以向 LidoOracle 發送報告。此外,LidoOracle 還接收來自 DAO 的其他指令,如設置法定人數值、添加或刪除預言機成員等。這些指令有助於確保 LidoOracle 的正常運行,並確保其提供的信息是準確和可靠的。

LidoOracle 與 ETH 2.0 的交互主要體現在預言機向 LidoOracle 發送由 ETH 2.0 控制的地址餘額上。預言機守護進程每幀(目前為 225 個時代,相當於一天)推送其報告,報告中包含了 ETH 2.0 側的地址餘額信息。這些信息有助於確保 Lido 合約中的信息是最新的,並且與 ETH 2.0 側的實際情況保持一致。

LidoOracle 採取了一些安全措施來確保其正常運行並提供準確可靠的信息。例如,它通過可配置值對預言機報告進行健全性檢查,以限制不端預言機的影響。它還存儲收集的報告作為數組,並在報告推送時調用接收器函數。此外,LidoOracle 還接收來自 DAO 的其他指令,如設置法定人數值、添加或刪除預言機成員等。這些措施有助於確保 LidoOracle 的安全性,並防止潛在的攻擊或濫用。

為了計算持有人的獎勵百分比,LidoOracle 存儲並提供以下數據:

preTotalPooledEther:報告推送到 Lido 合約之前查詢的總質押以太坊數量。
postTotalPooledEther:同上,但在推送後查詢。
lastCompletedEpochId:上一個推送報告到 Lido 的時代。
timeElapsed:當前推送時代與 lastCompletedEpochId 之間的秒數。通常應該是幀長:32 * 12 * 225 = 86400,但如果前一幀未達到法定人數,則可能是多個。
lidoFee:Lido 的費用(基點)。可以通過在 Lido 合約中調用 getFee () 來檢索。
basisPoint:確定費用精度的常數,等於 10000。
請注意,我們收集 post/pre 對(而不是 current/last),以避免新質押在時代期間的影響。

要計算 APR,請使用以下公式:

protocolAPR = (postTotalPooledEther - preTotalPooledEther) * secondsInYear / (preTotalPooledEther * timeElapsed)

lidoFeeAsFraction = lidoFee / basisPoint

userAPR = protocolAPR * (1 - lidoFeeAsFraction)

這些參數和公式可用於計算持有人獎勵的百分比,並幫助用戶了解他們的投資回報率。

要使用這些參數計算持有人獎勵的百分比,您可以按照以下步驟操作:

獲取 preTotalPooledEther 和 postTotalPooledEther 的值。這些值表示報告推送到 Lido 合約之前和之後查詢的總質押以太坊數量。
獲取 lastCompletedEpochId 和 timeElapsed 的值。lastCompletedEpochId 表示上一個推送報告到 Lido 的時代,而 timeElapsed 表示當前推送時代與 lastCompletedEpochId 之間的秒數。
獲取 lidoFee 和 basisPoint 的值。lidoFee 表示 Lido 的費用(基點),可以通過在 Lido 合約中調用 getFee () 來檢索。basisPoint 是一個常數,等於 10000。
使用上述值計算 protocolAPR、lidoFeeAsFraction 和 userAPR。可以使用以下公式進行計算:

protocolAPR = (postTotalPooledEther - preTotalPooledEther) * secondsInYear / (preTotalPooledEther * timeElapsed)

lidoFeeAsFraction = lidoFee / basisPoint

userAPR = protocolAPR * (1 - lidoFeeAsFraction)

最終得到的 userAPR 值表示持有人獎勵的百分比。

這些參數和公式可用於計算持有人獎勵的百分比,並幫助用戶了解他們的投資回報率。

這些參數的值是由 LidoOracle 合約內部計算和存儲的。您可以通過與 LidoOracle 合約交互來獲取這些值。例如,您可以調用合約中的相應函數來查詢 preTotalPooledEther、postTotalPooledEther、lastCompletedEpochId 和 timeElapsed 的值。至於 lidoFee 和 basisPoint,您可以通過在 Lido 合約中調用 getFee () 來檢索 lidoFee,而 basisPoint 是一個常數,等於 10000。

如果您不熟悉如何與智能合約交互,建議您尋求專業幫助或進一步了解以太坊智能合約的相關知識。

這些參數用於計算持有人獎勵的百分比,可以幫助您了解您的投資回報率。preTotalPooledEther 和 postTotalPooledEther 的值表示報告推送到 Lido 合約之前和之後查詢的總質押以太坊數量。這些值用於計算在給定時間段內總質押以太坊數量的變化。lastCompletedEpochId 和 timeElapsed 的值用於確定給定時間段的長度,以便將總質押以太坊數量的變化轉換為年化百分比。lidoFee 和 basisPoint 的值用於計算 Lido 收取的費用,從而確定持有人實際獲得的獎勵百分比。

通過使用這些參數計算 userAPR,您可以了解您的投資回報率。userAPR 表示持有人獎勵的百分比,可以幫助您了解您的投資在給定時間段內增長了多少。

總之,LidoOracle 是一個合約,它通過與 DAO 和 ETH 2.0 的交互,以及採取一些安全措施來確保其正常運行並提供準確可靠的信息。它還提供了一些參數和公式,用於計算持有人獎勵的百分比,並幫助用戶了解他們的投資回報率。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。