折價與價格

stETH 有兩個價格:合約匯率和市場成交價,你該看哪一個

文字封面:分類「折價與價格」,標題「同一張憑證,兩個價格」,右側一個大大的數字 2
錢包算出來 15.004 顆,實際到手 14.87 顆。

錢包顯示你有 12.4 顆 wstETH。行情站說 wstETH 現在 1.21 ETH。你按計算機,得到 15.004 顆 ETH。

然後你去賣,實際到手 14.87 顆。中間那 0.13 顆去哪了?

因為質押憑證同時存在兩個價格:協議合約裡記的「我欠你多少 ETH」,和市場上「現在有人肯用多少 ETH 跟你換」。前者由協議記帳決定,只會隨獎勵往上走;後者由當下的買賣雙方決定,會上下跳。你算出來的和你拿到的不一樣,多半就是拿了前者去預測後者。

兩個價格分別是誰定的

合約匯率是協議自己的帳本。它記的是「這張憑證對應多少質押部位」,數字來自驗證者的實際餘額與獎勵,由協議的預言機定期更新。它不看市場,不管今天有沒有人在賣。它是你走贖回那條路時,協議會按照的比例。

市場價是成交價。它反映的是「現在想立刻換手,要付多少代價」。買賣雙方誰急誰就吃虧,所以它會偏離合約匯率,有時偏低(折價)有時偏高(溢價)。

合約匯率市場成交價
誰決定協議記帳與預言機當下的買賣雙方
會不會下跌正常情況只往上,出現罰沒或虧損才會降隨時會上下跳
你走哪條路用到它排隊贖回直接賣出
哪裡查協議官方頁面、區塊瀏覽器讀合約行情站、交易所、兌換池報價
兩者差多少叫什麼市場低於合約 = 折價;高於 = 溢價

stETH 特別容易搞混

因為 stETH 的合約匯率大致就是 1,數量會自己長。所以你看到「stETH 0.998」的時候,那 0.2% 就是折價,很直覺。

wstETH 和 rETH 就不是這樣了。它們的數量不動,合約匯率會持續上升,所以價格天生就大於 1。你看到 wstETH 賣 1.21,那是折價還是溢價?要看當下合約匯率是多少——匯率 1.22 就是折價,匯率 1.20 就是溢價。光看 1.21 這個數字什麼都判斷不了。

判斷有沒有價差,永遠是拿市場價去比當下的合約匯率,不是比 1。wstETH 的價格「比 ETH 高很多」只是匯率累積的結果,不代表賺了;它的美元價往下掉,也可能只是 ETH 本身在跌,和脫鉤無關。

賣 wstETH 實際到手比算的少,差額去哪了

分開來看通常是三層,而且三層的性質不一樣。

  1. 合約匯率和市場價的價差。這是「立刻換手」的代價,市場緊張時會放大。三層裡哪一層最大,要看你的金額和賣在哪裡。
  2. 滑價。你這筆單子本身把價格推壞了。金額越大這層越明顯,冷門的交易對上尤其嚴重。
  3. 手續費。兌換池抽一層、交易所抽一層,再加上鏈上手續費。

行情站顯示的價格是第一層的參考,後面兩層它管不到。所以「行情站的價格 × 數量」永遠只是上限,不是你會拿到的數字。真要知道能拿多少,去你要賣的那個地方把金額輸進去,看它顯示的「預計收到」。

只看一個比值:市場價除以合約匯率

真正要看的只有一個數字:市場價除以合約匯率。這個比值接近 1 就是正常,明顯小於 1 就是折價,大於 1 就是溢價。它把單位消掉了,所以不管是 stETH、wstETH 還是 rETH,都用同一把尺量。

算出來之後才決定要不要做事。比值 0.995 而佇列只要幾天,直接賣就好,那 0.5% 不值得等;比值 0.97 而佇列也不長,就值得認真考慮走贖回。站內有個換算工具就是幫你做這個除法,順便把等待折成年化。

另外,判斷的時候別看行情站上的美元價。憑證的美元價同時混進了 ETH 本身的漲跌,看了只會讓你分心。這類資產的一切判斷都應該用 ETH 當單位,美元價留給最後真的要換成現金的時候再看。

stETH 市場價什麼時候會和合約匯率差很多

平常它們幾乎貼在一起,貼到你以為只有一個價格。會分開的時候通常有這幾種:

  • 退出佇列突然變長。願意立刻接手的人要求更多補償,市場價往下掉,而合約匯率照常往上走。
  • 市場急跌。槓桿部位被清算,抵押品被倒出來換 ETH,短時間內把成交價打下去。
  • 某個池子被大單吃掉一側。報價暫時失衡。
  • 有人急著建立質押部位。這種時候反而會溢價,因為買現貨憑證比自己去排進場佇列快。

前三種是折價,最後一種是溢價。

真正要警覺的是第五種:查不出原因的深度折價。那通常表示市場知道一些你不知道的事,這時候該做的是先問為什麼,不是先算能賺多少。折價的成因另外寫了一篇。

三個查價格的地方,各有各的毛病

知道要比什麼之後,下一個問題是去哪裡看。三種來源都能用,但它們各自會在不同的地方騙你。

行情站

最方便,也最容易誤導。行情站顯示的通常是多個交易場所的加權平均,而你實際只會在其中一個地方成交。冷門時段各家報價差距可能不小,平均值看起來很漂亮,你去賣的時候未必拿得到。

另外行情站上的憑證價格幾乎都以美元計。要用 ETH 當單位的話,你得自己拿它除以同一時刻的 ETH 美元價,兩個數字的抓取時間若差幾分鐘,結果就會有誤差。市場平靜時無所謂,劇烈波動時這個誤差可能比你要判斷的折價還大。

鏈上兌換池

最誠實的一種,因為它給的直接就是「你這筆金額實際換得到多少」,滑價已經算進去了。缺點是它只代表那一個池子的狀況,別的地方可能更好。

用它的時候記得把金額填成你真正要交易的數量,不要填 1 顆看報價然後乘上去。池子的報價是非線性的,1 顆和 500 顆的單價不會一樣,這正是它比行情站有用的地方。

合約本身

用區塊瀏覽器直接讀合約上的匯率函式,拿到的是協議記帳的真值,沒有任何中介。這個數字不會騙你,但它也不是你能賣到的價格——它只是你走贖回那條路時的基準。

比較穩的分工是:合約讀基準、兌換池看實價、行情站只用來快速掃一眼有沒有異常。三個各司其職,混著用就會得出奇怪的結論。

特別注意換算單位的陷阱。有些介面把 wstETH 的價格用 stETH 計、有些用 ETH 計、有些用美元計。三種數字長得很像,差別卻不小。看到一個價格先確認它的分母是什麼,再決定要不要拿它做判斷。

照著做一次:把 wstETH 的合約匯率讀出來

「去合約讀」聽起來像工程師的工作,實際上是四個點擊的事,不用連錢包,也不會花到一毛錢。以 wstETH 為例走一次,其他憑證的做法一樣,只是換合約和換函式名。

  1. 找到正確的合約位址。wstETH 在以太坊主網上是 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0,這個位址列在 Lido 官方的部署合約清單上。務必從官方清單複製,不要在區塊瀏覽器裡搜代幣名稱然後隨便點一個——同名的仿冒代幣到處都是,這是這四步裡唯一會出事的一步。
  2. 切到 Contract 分頁底下的 Read Contract。你會看到一排編號的唯讀函式,按字母排序。
  3. 展開 stEthPerToken。依 Lido 的合約文件,它回傳「1 顆 wstETH 對應多少 stETH」。不用填任何參數,展開就直接顯示當下的值。
  4. 把小數點移回去。回傳的是 18 位小數的整數,例如 1210000000000000000 代表 1.21。這個 1.21 就是你要的合約匯率,拿它去除市場價就得到本文前面那個比值。
Lido 官方文件的 wstETH 頁面,右側方法清單列出 getWstETHByStETH、getStETHByWstETH、stEthPerToken、tokensPerStEth 等唯讀函式
Lido 官方文件列出的 wstETH 唯讀函式,截於 2026 年 9 月。區塊瀏覽器的 Read Contract 分頁上看到的就是這幾個名字。

同一份清單上還有兩個很容易拿錯的函式:tokensPerStEth() 是反過來的比例(1 顆 stETH 值多少 wstETH),getStETHByWstETH() 要你先填數量、再回傳那個數量換得到多少 stETH。只是要判斷有沒有折價的話,stEthPerToken 一個就夠了。

stETH 本身不用這麼麻煩:它的設計就是讓合約匯率貼著 1、讓數量自己長,所以你在行情站上看到的 0.998 已經可以直接當比值用。rETH 是另一個合約,讀它的 getExchangeRate(),回傳的是 1 顆 rETH 背後有多少 ETH(同樣是 18 位小數的整數)。

Read Contract 分頁動不到你的錢。那上面全是查詢,不發交易、不用簽名、不用連錢包,看錯了也沒有後果。真正會動錢的是隔壁的 Write Contract 分頁——那個除非你清楚自己在做什麼,否則不要碰。

常見問題

合約匯率會下跌嗎?

正常情況不會,它只隨著質押獎勵往上走。會下降的情形是協議端出現損失,例如驗證者被罰沒。所以看到合約匯率下降,那不是市場問題,是協議本身出了事,值得停下來查原因。

讀合約需要連錢包嗎?會不會有風險?

不需要,也沒有風險。Read Contract 分頁上的函式都是唯讀查詢,不發交易也不要簽名。唯一要小心的是合約位址要從協議官方文件複製,別在瀏覽器裡搜代幣名稱亂點,仿冒代幣很多。