Rocket Pool rETH 集成 第2章 理解 rETH:铸造、汇率与风险

深入理解 rETH:增值型代币的汇率机制、如何铸造与赎回、二级市场获取、deposit pool 限制,以及集成时要注意的风险。

5 分钟阅读
Rocket Pool rETH 集成 第2章 理解 rETH:铸造、汇率与风险

Rocket Pool rETH 集成 第 2 章:理解 rETH

集成 rETH 之前,必须吃透它本身:汇率怎么算、怎么铸造和赎回、为什么有时要去二级市场买、以及它的风险。这一章把 rETH 这个”积木”研究透,后面的集成才不会踩坑。


目录


1. rETH 的汇率机制

rETH 是增值型代币。核心就一个量:exchange rate(兑换率)

exchange rate = 总质押 ETH 价值 / rETH 总供应量
1 rETH = exchange_rate 个 ETH
  • 刚上线时 1 rETH = 1 ETH(exchange rate = 1e18)。
  • 随着验证节点赚取质押收益,“总质押 ETH 价值”增长,而 rETH 总量不变 → exchange rate 单调上升
  • 合约函数:getExchangeRate() 返回当前汇率;getEthValue(rethAmount)getRethValue(ethAmount) 做双向换算。

关键:rETH 的数量不变,价值靠汇率体现。 你钱包里的 rETH 余额永远不变,但它越来越值钱。这对集成极友好——你不用处理”余额突然变化”(这是 rebase 型代币如 stETH 的麻烦)。


2. 案例:汇率如何体现收益

假设你今天用 10 ETH 铸造 rETH,此刻 exchange rate = 1.10:

得到的 rETH = 10 ETH × getRethValue = 10 / 1.10 ≈ 9.09 rETH

半年后,质押收益累积,exchange rate 涨到 1.15:

你的 9.09 rETH 现在值 = 9.09 × 1.15 ≈ 10.45 ETH

你的 rETH 余额还是 9.09(没变),但它从值 10 ETH 涨到值 10.45 ETH——0.45 ETH 就是这半年的质押收益(约 4.5%)。汇率从 1.10 涨到 1.15,正好反映了收益。


3. 一级市场:通过 Rocket Pool 铸造与赎回

铸造(deposit):调用 Rocket Pool 的 deposit 合约,存入 ETH,按当前汇率铸造 rETH。

// 通过 RocketDepositPool
rocketDepositPool.deposit{value: ethAmount}();
// 你的地址收到 rethAmount = getRethValue(ethAmount)

赎回(burn):调用 rETH.burn(rethAmount),销毁 rETH,按汇率取回 ETH。

reth.burn(rethAmount);   // 取回 getEthValue(rethAmount) 个 ETH

⚠️ 赎回有条件:rETH 合约里要有足够的 ETH 余额才能赎回。如果质押的 ETH 都在验证节点里、合约里现金不够,赎回会失败——这时只能走二级市场卖出。


4. deposit pool 的容量限制

Rocket Pool 的 deposit pool(存款池)有一个最大容量。如果存款池已满(积压的 ETH 还没被分配到验证节点),新的 deposit 会被拒绝。

集成时要注意:

  • 铸造 rETH 前,先检查 getMaximumDepositPoolSize() 和当前 getBalance(),确认还有空间。
  • 如果一级市场铸造受限,就改用二级市场(DEX)买入 rETH。

这是集成开发的典型”现实约束”:理论上能 deposit,实际可能因容量满而失败,代码要优雅处理。


5. 二级市场:在 DEX 上买卖 rETH

因为一级市场有容量/赎回限制,**二级市场(DEX)**常是更实用的 rETH 进出通道:

  • Balancer:rETH/WETH 的 ComposableStablePool 是 rETH 最大的流动性场所。
  • Uniswap V3:也有 rETH/WETH 池。
  • Curve:有 rETH 相关池。

集成合约里要获取 rETH,常见做法是用 WETH 在 Balancer/Uniswap 上换 rETH(而不是走一级市场 deposit),因为二级市场即时、无容量限制。


6. 溢价与折价

二级市场的 rETH 价格不一定等于一级市场汇率:

  • 折价(discount):市场价 < 公允汇率(getEthValue)。比如大量人想退出、二级市场抛压大时。这时在 DEX 买 rETH 比一级铸造更便宜
  • 溢价(premium):市场价 > 公允汇率。比如一级市场 deposit 受限、大家只能在二级抢购时。

集成策略上:

  • 进场(买 rETH)时,比较”一级铸造汇率”和”二级市场价”,选便宜的。
  • 这个折溢价本身也可能是套利机会(当能在两个市场间无风险搬运时)。

7. 集成 rETH 的风险清单

把 rETH 接进你的协议前,要评估这些风险:

风险说明
汇率脱锚二级市场价偏离公允汇率,影响清算/估值
赎回流动性一级赎回可能因合约 ETH 不足而失败
deposit 容量一级铸造可能因存款池满而失败
预言机风险用错价格源(二级现货价 vs 公允汇率)会被操纵
质押层风险验证节点被罚没(slashing)会让汇率增长放缓甚至下降(极端)
智能合约风险Rocket Pool 本身的合约风险

经验法则:估值/清算用公允汇率 getExchangeRate(不易操纵),交易/进出用二级市场(看实际成交),两者别混用。


8. 本章小结

  1. rETH 是增值型 LST:数量不变,exchange rate 随质押收益单调上升getEthValue/getRethValue 双向换算。
  2. 收益体现在汇率上:余额不变但越来越值钱(对集成友好,无 rebase)。
  3. 一级市场:deposit 铸造、burn 赎回;但受 deposit pool 容量赎回 ETH 余额 限制。
  4. 二级市场(Balancer/Uniswap/Curve)是更实用的进出通道,无容量限制。
  5. 二级市场有溢价/折价,进场时比较一级汇率与二级价,选便宜的。
  6. 估值用公允汇率(抗操纵),交易用二级市场;注意脱锚、赎回、容量、slashing 等风险。

9. 动手练习

目标:实现”获取 rETH”的两条路径,并比较成本。

练习:一级铸造 vs 二级买入

主网分叉:

interface IRETH {
    function getEthValue(uint256 rethAmount) external view returns (uint256);
    function getRethValue(uint256 ethAmount) external view returns (uint256);
    function getExchangeRate() external view returns (uint256);
}
// rETH: 0xae78736Cd615f374D3085123A210448E74Fc6393

思路:

  1. 公允汇率:读 getExchangeRate(),算”1 ETH 公允能换多少 rETH” = getRethValue(1e18)
  2. 二级市场报价:用 Uniswap V3 或 Balancer,报价”1 WETH 能换多少 rETH”(用 Quoter 或池子 swap 模拟)。
  3. 比较:二级换到的 rETH 比公允值多还是少?多 = 折价(DEX 更划算买入),少 = 溢价。
  4. (进阶)实现一个 getReth(uint ethAmount) 函数:比较两条路径,自动选更划算的方式获取 rETH(注意一级 deposit 的容量检查)。

运行

forge test --evm-version cancun --fork-url $FORK_URL \
  --match-path test/UnderstandReth.t.sol -vvv

下一章(第 3 章 Aave 闪电贷杠杆)进入第一个实战项目:用 Aave 闪电贷把 rETH 敞口循环放大,杠杆化质押收益。

💬 评论