Rocket Pool rETH 集成 第 1 章:简介(Intro)
这门课和前面的 AMM 课不同——它不是讲一个协议的内部数学,而是教你如何把 Rocket Pool 的 rETH(流动性质押代币)集成进各种 DeFi 协议做出真实应用:用 rETH 在 Aave 上做杠杆、在 Balancer/Aura 上做 LP 挖矿、计算 rETH 净值、在 EigenLayer 上再质押。这一章先建立全局认识。
目录
1. 这门课要教什么
前面的 Curve / Uniswap 课程教你理解一个 AMM 协议的内部实现。这门 Rocket Pool 课程换了个角度:
教你作为集成开发者(integrator),怎么把一个现有的 DeFi 乐高积木(rETH)和其它积木(Aave、Balancer、Aura、EigenLayer)拼在一起,构建出有实际收益的策略合约。
重点不是 Rocket Pool 协议内部怎么实现质押,而是怎么用 rETH 这个资产去和别的协议交互。这是 DeFi 开发最常见的真实工作。
2. 什么是流动性质押与 rETH
以太坊质押(staking):把 ETH 锁进信标链验证节点,赚取约 3~5% 的年化收益。但传统质押有两个痛点:
- 需要 32 ETH 才能跑一个验证节点。
- 质押的 ETH 被锁住,没有流动性。
**流动性质押(Liquid Staking)**解决这两点。Rocket Pool 是去中心化的流动性质押协议:
- 你存入任意数量 ETH,拿到 rETH(一种 ERC20)。
- rETH 代表”你质押的 ETH + 累积的质押收益”。
- rETH 可以自由交易、转账、抵押——流动性保留了。
关键特性:rETH 是”增值型”代币。它的数量不变,但每个 rETH 能兑换的 ETH 数量随时间增长(因为质押收益累积)。比如今天 1 rETH = 1.1 ETH,半年后可能 1 rETH = 1.12 ETH。这个汇率叫 rETH 的 exchange rate / NAV(第 5 章详讲)。
对比:Lido 的 stETH 是”rebase 型”(数量每天增长、汇率恒为 1);Rocket Pool 的 rETH 是”增值型”(数量不变、汇率增长)。增值型对集成更友好(余额不会突然变化)。
3. 四个实战项目概览
课程围绕四个真实项目展开(对应第 3~6 章):
| 项目 | 章节 | 你将构建 |
|---|---|---|
| Aave 闪电贷杠杆 | 第 3 章 | 用 Aave 闪电贷 + rETH 抵押,循环放大 rETH 敞口(杠杆质押收益) |
| Balancer / Aura 流动性 | 第 4 章 | 把 rETH 存进 Balancer 池、再质押到 Aura 赚取额外激励 |
| rETH NAV 计算 | 第 5 章 | 链上读取/计算 rETH 的真实净值与兑换率 |
| EigenLayer 再质押 | 第 6 章 | 把 rETH 存进 EigenLayer 做 restaking,赚取额外的 AVS 收益 |
每个项目都是一个能在主网分叉上跑通的 Foundry 合约。
4. 涉及的协议地图
┌─────────── Rocket Pool ───────────┐
ETH ──存入──────▶│ 铸造 rETH(增值型 LST) │
└──────────────┬────────────────────┘
│ rETH 作为"生息资产"被拿去...
┌──────────────────────────┼───────────────────────────┐
▼ ▼ ▼
┌─────────┐ ┌──────────────┐ ┌──────────────┐
│ Aave │ │ Balancer/Aura│ │ EigenLayer │
│ 抵押借贷 │ │ LP + 激励 │ │ 再质押(AVS) │
│ 做杠杆 │ │ │ │ │
└─────────┘ └──────────────┘ └──────────────┘
- Aave:借贷协议,可抵押 rETH 借 ETH,循环做杠杆。
- Balancer:支持加权/稳定池的 AMM,rETH/WETH 池是主流场所。
- Aura:建立在 Balancer 之上的收益增强协议(类似 Convex 之于 Curve)。
- EigenLayer:再质押(restaking)协议,把已质押资产的安全性”出租”给其它服务(AVS)赚额外收益。
5. 前置知识与工具
- 高级 Solidity + Foundry(主网分叉测试是核心技能)。
- 理解 ERC20、抵押借贷、AMM LP 的基本概念。
- 不需要懂 Rocket Pool 协议内部(验证节点、minipool 等),但第 2 章会简单介绍以便理解 rETH 的来源和风险。
工具:Foundry(forge test --fork-url),需要一个主网归档节点 RPC。
6. 集成开发的思维方式
做集成开发,思路和写一个独立协议不同,要养成几个习惯:
- 读对方的接口(interface)和文档:集成的第一步永远是搞清楚对方合约暴露了哪些函数、参数含义、返回值。
- 主网分叉测试:因为你依赖的是已部署的真实合约(Aave、Balancer 等),用
forge --fork-url在主网状态的副本上测试,最接近真实。 - 关注汇率/精度/滑点:rETH↔ETH 有汇率,跨协议交互常涉及精度转换和滑点保护。
- 关注组合风险:每多接一个协议,就多一层智能合约风险、清算风险、汇率脱锚风险。
7. 本章小结
- 这门课教你做 rETH 的集成开发,而非 Rocket Pool 协议内部实现。
- rETH 是 Rocket Pool 的流动性质押代币,增值型:数量不变、兑 ETH 汇率随质押收益增长。
- 四个实战项目:Aave 杠杆、Balancer/Aura 流动性、rETH NAV、EigenLayer 再质押。
- 涉及协议:Rocket Pool(铸 rETH)+ Aave / Balancer / Aura / EigenLayer(拿 rETH 去用)。
- 集成开发的关键习惯:读接口、主网分叉测试、关注汇率/精度/滑点、关注组合风险。
8. 动手练习
目标:搭好主网分叉环境,读取 rETH 的基本信息。
练习:读取 rETH 基础信息
主网分叉,rETH 合约地址:0xae78736Cd615f374D3085123A210448E74Fc6393:
interface IRETH {
function totalSupply() external view returns (uint256);
function getExchangeRate() external view returns (uint256); // 1 rETH = ? ETH (1e18)
function getEthValue(uint256 rethAmount) external view returns (uint256);
function getRethValue(uint256 ethAmount) external view returns (uint256);
}
思路:
- 读
getExchangeRate(),打印(应 > 1e18,因为 rETH 已累积收益,比如 1.1e18 表示 1 rETH = 1.1 ETH)。 - 用
getEthValue(1e18)算”1 rETH 值多少 ETH”,和getExchangeRate()对比(应一致)。 - 用
getRethValue(1e18)算”1 ETH 能换多少 rETH”(应 < 1e18,是汇率的倒数)。 - 读
totalSupply()看 rETH 总量。 - 验证
getEthValue(getRethValue(1e18)) ≈ 1e18(往返换算应回到原点,允许 1 wei 误差)。
运行
forge test --evm-version cancun --fork-url $FORK_URL \
--match-path test/RethIntro.t.sol -vvv
下一章(第 2 章 理解 rETH)深入 rETH 本身:它怎么铸造/赎回、汇率怎么更新、有哪些风险,以及如何在二级市场(Balancer/Uniswap)获取 rETH。