Skip to content

Commit

Permalink
Merge pull request #1223 from decentraldev1/ldo
Browse files Browse the repository at this point in the history
feat: enhacne Ldo project
  • Loading branch information
yanyanho authored Dec 13, 2024
2 parents 3a13062 + 2c94c11 commit 840ad41
Show file tree
Hide file tree
Showing 3 changed files with 226 additions and 8 deletions.
8 changes: 0 additions & 8 deletions defi/Lido/Read.md

This file was deleted.

104 changes: 104 additions & 0 deletions defi/Lido/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
### **Lido 项目 README**


## **Lido 项目简介**

Lido 是一个领先的流动性质押(Liquid Staking)协议,专注于为用户提供无需锁定资产且无需自行维护硬件或软件基础设施的质押服务。作为以太坊 LSD(ETH Liquid Staking Derivatives)的龙头项目,Lido 对以太坊的 PoS 机制产生了深远影响。


## **核心功能**

1. **流动性质押**
用户质押 ETH 后会获得等值的衍生代币 `stETH`,代表其在协议中的质押份额。`stETH` 可在 DeFi 生态系统中使用,例如借贷、流动性挖矿和交易,从而为用户提供资产流动性。

2. **支持多链质押**
除了以太坊,Lido 还支持 Solana(SOL)、Polygon(MATIC)、Kusama(KSM)和 Polkadot(DOT)等多个 PoS 区块链的质押服务。

3. **每日收益**
用户质押的奖励以 `stETH` 的形式每日自动分配,反映在用户持有的 `stETH` 数量中,无需主动操作。


## **Lido 的优势**

- **灵活性**:支持任意数量的 ETH 质押,无需满足 32 ETH 的最低要求。
- **流动性**:通过 `stETH`,用户的质押资产可以继续参与 DeFi 生态中的其他活动。
- **高安全性**:由顶级节点运营商和多重审计支持,确保用户资金安全。
- **用户友好**:无需复杂的节点设置,简单几步即可完成质押操作。


## **Lido 的劣势**

- **费用**:质押奖励收取 10% 的费用(5% 分配给节点运营商,5% 进入 Lido 国库)。
- **中心化风险**:尽管 Lido 致力于去中心化,但其节点运营商和治理仍可能存在一定的中心化倾向。


## **技术架构**

### **核心组件**

1. **`Lido` 合约**
负责用户质押和 `stETH` 铸造的逻辑。

2. **`Oracle` 合约**
提供网络的质押和奖励数据。

3. **`Node Operators Registry` 合约**
管理和注册节点运营商,确保协议的安全性和去中心化。

4. **`Staking Router`**
支持多链质押,通过模块化设计实现对不同区块链网络的接入。


## **与以太坊 PoS 的关系**

Lido 在以太坊 PoS 转型中扮演着重要角色,为用户提供了便捷的质押服务。通过 Lido:
- 用户无需运行节点即可参与以太坊的质押。
- `stETH` 的引入使得用户可以继续使用质押资产参与 DeFi 生态,提升了以太坊网络的流动性和资本效率。


## **治理代币:LDO**

- **功能**:LDO 代币持有者可以参与 Lido 协议的治理,包括投票调整参数、治理规则和运营策略。
- **用途**:LDO 代币用于提案投票和奖励分配。


## **费用结构**

- **质押奖励费用**:10%
- 5% 分配给节点运营商。
- 5% 进入 Lido 国库,用于协议的进一步发展。


## **生态系统**

- **DefiLlama Dashboard**: 提供 Lido 在 DeFi 生态中锁仓量和流动性数据的全面统计。
[查看 DefiLlama Dashboard](https://defillama.com/lsd)

- **GitHub 合约仓库**: 包含 Lido 核心智能合约的实现代码。
[Lido Contracts Repository](https://github.com/lidofinance/lido-dao)


## **常见问题**

### 1. **如何获取 stETH?**
用户可以通过 Lido 前端 DApp 或集成的钱包(如 MetaMask)直接质押 ETH 获取 `stETH`

### 2. **stETH 如何使用?**
`stETH` 代表用户的质押份额,可以在各类 DeFi 协议中使用,如借贷、交易、提供流动性等。

### 3. **Lido 的质押年化收益是多少?**
收益率取决于以太坊网络的整体质押奖励率,通常在 4%~6% 之间。


## **社区与支持**

- **官网**: [https://lido.fi](https://lido.fi)
- **Discord**: 实时支持和讨论。
- **Twitter**: 跟踪 Lido 最新动态。
- **文档**: [Lido Docs](https://docs.lido.fi/)


## **参考资料**

- [DefiLlama Dashboard](https://defillama.com/lsd)
- [Lido Contracts Repository](https://github.com/lidofinance/lido-dao)
122 changes: 122 additions & 0 deletions defi/Lido/stEth.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
### **Lido stETH 合约分析**

`stETH` 是 Lido 协议中的核心代币,代表用户质押的 ETH 以及累积的质押奖励。用户通过持有 `stETH` 可以继续获得以太坊质押收益,同时 `stETH` 可用于参与 DeFi 生态。

## **核心功能**

### 1. **铸造与销毁**

当用户质押 ETH 时,Lido 合约会根据质押金额按 1:1 的比例铸造 `stETH`。在用户提取 ETH 时,`stETH` 会被销毁以保持代币供应与质押金额的对应关系。

#### 核心代码

```solidity
function submit(address _referral) external payable returns (uint256) {
uint256 shares = _submit(msg.value, _referral);
return shares;
}
function _submit(uint256 _amount, address _referral) internal returns (uint256) {
uint256 shares = getSharesByPooledEth(_amount);
_mintShares(msg.sender, shares);
emit Submitted(msg.sender, _amount, _referral);
return shares;
}
```

上述代码展示了 `submit` 函数如何根据用户的质押金额铸造 `stETH``_submit` 方法计算用户的 `stETH` 份额(Shares),并将其分配给用户。


### 2. **收益自动分配**

Lido 协议使用 `rebase` 机制,每天更新用户持有的 `stETH` 数量,将质押奖励以份额形式分配到 `stETH` 持有者账户中。用户无需手动操作即可获得质押奖励。

#### 代码实现

```solidity
function handleOracleReport(uint256 _postTotalPooledEther) external onlyOracle {
uint256 totalShares = _getTotalShares();
uint256 newShares = totalShares * _postTotalPooledEther / _getTotalPooledEther();
_setTotalPooledEther(_postTotalPooledEther);
emit Rebase(totalShares, newShares);
}
```

`handleOracleReport` 函数根据最新的质押总量调整 `stETH` 的份额,这样用户的 `stETH` 持有量就会根据质押奖励自动增加。


### 3. **与 ETH 的转换逻辑**

`stETH` 与 ETH 的转换通过份额机制进行管理。每个 `stETH` 持有者拥有一定数量的份额,份额代表其在总质押池中的比例。

#### 转换函数

```solidity
function getPooledEthByShares(uint256 _shares) public view returns (uint256) {
return _shares * _getTotalPooledEther() / _getTotalShares();
}
function getSharesByPooledEth(uint256 _amount) public view returns (uint256) {
return _amount * _getTotalShares() / _getTotalPooledEther();
}
```

`getPooledEthByShares``getSharesByPooledEth` 函数用于计算 `stETH` 和 ETH 之间的转换比例。

- **`getPooledEthByShares`**:根据用户的份额计算其对应的 ETH 数量。
- **`getSharesByPooledEth`**:根据用户提供的 ETH 数量计算其应获得的份额。


### 4. **核心组件分析**

#### a. **Oracle(预言机)**

Lido 使用预言机来报告以太坊质押总量的变化。预言机的报告触发 `rebase`,更新用户的质押奖励。

```solidity
modifier onlyOracle() {
require(msg.sender == ORACLE, "Caller is not the oracle");
_;
}
```

#### b. **Node Operators Registry(节点运营商注册表)**

Lido 的节点运营商负责管理和验证质押的 ETH。注册表维护了所有节点的状态及其质押情况。


### 5. **stETH 在 DeFi 生态的应用**

`stETH` 兼容 ERC20 标准,可用于 DeFi 协议,例如:
- **Curve Finance**:提供 `stETH/ETH` 流动性池,方便用户进行稳定交换。
- **Aave**:用户可以使用 `stETH` 作为抵押物借贷。
- **Balancer**:通过流动性池优化资本效率。


## **深入分析**

### **价格偏差与市场波动**

由于 `stETH` 在二级市场交易,其价格可能与 ETH 存在轻微偏差。这种偏差通常由市场流动性和供需变化引起,Lido 通过与 Curve 等流动性池的合作来缓解此问题,提供低滑点的交易体验。

### **系统风险**

1. **智能合约风险**
作为 DeFi 协议,Lido 依赖智能合约的安全性,一旦合约出现漏洞,可能导致用户资金损失。

2. **预言机风险**
预言机数据的准确性至关重要,若预言机提供错误数据,可能影响质押奖励分配或引发用户损失。

3. **中心化风险**
虽然 Lido 正在逐步去中心化,但目前仍存在节点集中化问题,可能影响协议的稳定性。


## **总结**

Lido 的 `stETH` 合约通过创新的流动性质押机制,为用户提供了灵活、安全的质押体验。
不仅降低了以太坊质押门槛,还通过 DeFi 生态扩大了用户的收益来源。

**关键点总结:**
- **流动性质押**`stETH` 为用户提供了质押奖励和流动性。
- **自动收益分配**:通过 `rebase` 机制,无需手动操作即可获得质押收益。
- **多样化应用**`stETH` 被广泛应用于 DeFi 借贷、流动性挖矿等场景。

0 comments on commit 840ad41

Please sign in to comment.