Skip to content

Commit 465c910

Browse files
authored
Merge pull request #1283 from paris-10/pendle
feat: add pendle project
2 parents a18eea5 + df05c06 commit 465c910

File tree

3 files changed

+402
-0
lines changed

3 files changed

+402
-0
lines changed

defi/Pendle/readme.md

+135
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
# Pendle 项目详细介绍
2+
3+
Pendle 是一个去中心化金融(DeFi)协议,致力于实现收益代币化(Yield Tokenization),使用户能够将未来收益分割出来进行交易、锁定和管理。通过 Pendle,用户不仅可以获得资产的当前价值,还能在链上将未来的收益拆分成独立的流动性代币,进而实现收益的提前变现或交易套利。
4+
5+
6+
7+
## 1. 背景与项目动机
8+
9+
### 1.1 DeFi 收益变现的痛点
10+
11+
在传统 DeFi 应用中,用户参与流动性挖矿、借贷或其他收益型产品后,其收益往往会随着时间不断累积,但资产本身的流动性却受限,无法在不影响协议稳定性的前提下实现提前变现。Pendle 的出现正是为了解决这一痛点,通过收益代币化(Yield Tokenization)技术,将未来收益拆分成可交易的独立代币,为用户提供灵活的收益管理工具。
12+
13+
### 1.2 项目愿景
14+
15+
Pendle 希望建立一个全新的收益交易市场,让用户可以将未来的收益流进行自由买卖。这样不仅能为收益提供流动性,还能通过价格发现机制反映市场对未来收益的预期,从而为整个 DeFi 生态注入新的活力。
16+
17+
> **示意图 1**
18+
> ![Pendle 项目架构图](https://docs.pendle.finance/assets/images/high_level_architecture-457bcdd55f399a2d90b8c7bd9e2b6a09.png)
19+
> *图 1:Pendle 协议整体架构示意图,展示了资产、收益代币与市场交易三大模块之间的关系。*
20+
21+
22+
23+
## 2. 核心概念与技术原理
24+
25+
### 2.1 收益代币(Yield Tokenization)
26+
27+
在 Pendle 协议中,用户参与 DeFi 产品后获得的收益会被拆分为两部分:
28+
- **基础资产(Principal Token,PT):** 表示用户在协议中存入的本金。
29+
- **未来收益权(Yield Token,YT):** 表示用户未来在一定期限内获得的收益权利。
30+
31+
这种设计使得收益与本金实现拆分,用户可以根据自身需求选择持有本金或出售未来收益权。
32+
33+
> **示意图 2**
34+
> ![收益拆分示意图](https://docs.pendle.finance/assets/images/vependle_crosschain-039f915aa660c870da7fd1d41f0ddaad.png)
35+
> *图 2:收益拆分示意图,展示如何将资产拆分为 PT 与 YT,用户可以分别交易或持有。*
36+
37+
### 2.2 协议工作流程
38+
39+
1. **存入资产**
40+
用户将其资产存入 Pendle 协议(例如 USDC、ETH 等),并获得等值的 PT 与 YT。
41+
42+
2. **收益产生与拆分**
43+
当用户存入资产后,协议会自动根据参与的 DeFi 产品计算未来收益,并将收益权通过 YT 代币表示出来。用户可以继续持有或选择出售 YT。
44+
45+
3. **交易与套利**
46+
用户可以在 Pendle 内置的交易市场上自由买卖 YT,实现对未来收益的提前变现或利用收益差价进行套利交易。
47+
48+
4. **到期与清算**
49+
当收益期限结束后,持有 PT 的用户可以赎回本金及对应的实际收益,而 YT 则失去价值或根据清算机制进行销毁。
50+
51+
52+
53+
## 3. 关键模块与功能介绍
54+
55+
### 3.1 资产管理模块
56+
57+
- **存取管理**
58+
用户可以通过 Pendle 平台存入支持的资产,系统将自动进行收益权拆分,并生成相应的 PT 和 YT。
59+
60+
- **资产监控**
61+
平台提供实时资产监控工具,显示用户持仓、收益预期及市场行情,帮助用户做出投资决策。
62+
63+
### 3.2 交易市场模块
64+
65+
- **收益权交易市场**
66+
Pendle 内置专门的 YT 交易市场,用户可以在此买卖未来收益权,实现提前变现或投机操作。
67+
68+
- **价格发现机制**
69+
通过市场交易,Pendle 能够实时反映市场对未来收益的预期,形成动态价格,为投资者提供参考。
70+
71+
### 3.3 清算与到期模块
72+
73+
- **到期清算**
74+
在收益期限结束后,协议自动清算,持有 PT 的用户可赎回本金及实际收益,而 YT 根据规则销毁或清算。
75+
76+
- **智能合约保障**
77+
整个过程由一系列经过审计的智能合约驱动,确保各项操作公开透明、无需信任第三方。
78+
79+
80+
## 4. Pendle 的生态优势与应用场景
81+
82+
### 4.1 灵活的流动性管理
83+
84+
Pendle 允许用户对未来收益进行分离与交易,为那些急需流动性的用户提供了灵活的变现手段。同时,通过收益交易市场,用户可以参与收益套利,实现收益最大化。
85+
86+
### 4.2 风险分散与资产组合优化
87+
88+
通过收益拆分,用户可以根据自身风险偏好选择持有本金或出售未来收益权,从而实现资产配置的多样化与风险分散。这对于机构投资者或资产管理者来说,具有很高的应用价值。
89+
90+
### 4.3 创新性的 DeFi 生态
91+
92+
Pendle 的收益代币化创新为 DeFi 生态引入了全新的资产类型和交易品种,丰富了 DeFi 产品线。未来,随着更多资产和收益产品的接入,Pendle 有望形成一个庞大的收益市场生态系统,推动整个行业的进步。
93+
94+
95+
96+
## 5. 技术架构与安全性
97+
98+
### 5.1 智能合约设计
99+
100+
- **模块化设计**
101+
Pendle 的智能合约采用模块化设计,分离资产存取、收益计算、市场交易和清算等功能,既便于维护和升级,又降低了单一合约出现漏洞的风险。
102+
103+
- **严格审计**
104+
为了确保协议安全性,所有智能合约均经过多家安全审计机构的检查,并在社区测试阶段进行公开验证。
105+
106+
### 5.2 数据透明与链上治理
107+
108+
- **数据公开透明**
109+
协议运行数据全部记录在区块链上,任何人都可以查询,确保交易、清算和收益分配过程公开透明。
110+
111+
- **去中心化治理**
112+
随着生态的发展,Pendle 计划引入 DAO 治理机制,让社区共同参与决策,进一步提升系统的去中心化水平和抗风险能力。
113+
114+
115+
116+
## 6. 发展路线图与未来展望
117+
118+
### 6.1 当前阶段
119+
120+
- **MVP 及测试网部署**
121+
Pendle 已主网上线,包括资产存入、收益拆分和初步的交易市场,开放更多资产类型的接入和更多样化的收益产品。
122+
123+
### 6.2 中长期规划
124+
125+
- **生态扩展**
126+
通过与其他 DeFi 协议(如借贷、稳定币、流动性挖矿平台等)深度整合,进一步丰富收益市场生态,实现跨协议资产互操作。
127+
128+
- **DAO 治理**
129+
启动去中心化治理,在生态逐步成熟后,让社区成员参与决策,共同推动项目持续迭代和完善。
130+
131+
132+
133+
## 总结
134+
135+
Pendle 作为一个专注于收益代币化的 DeFi 协议,通过创新的收益拆分机制,使用户能够将未来收益分离出来进行交易,实现灵活的流动性管理和风险分散。项目采用模块化智能合约设计、严格的安全审计和公开透明的数据记录,确保系统的稳定运行和用户资产的安全。未来,Pendle 有望成为 DeFi 领域中不可或缺的收益交易平台,为用户和机构投资者带来全新的投资机会。

defi/Pendle/vePendle.md

+149
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
## 1. 模型原理及数学描述
2+
3+
### (1) 锁仓与权重计算的核心思想
4+
5+
vePendle 模型本质上是一个 **锁仓机制(Voting Escrow)**,用户通过锁定 PENDLE 代币,获得一个与锁定金额和锁定时长挂钩的非转让投票权。核心目标在于:
6+
- **激励长期持有**:通过锁仓延长时间,用户能获得更高的治理权重和奖励;
7+
- **权重动态衰减**:随着锁仓时间的流逝,投票权逐渐降低,确保治理权与锁定期限紧密绑定。
8+
9+
最常见的数学公式描述为:
10+
11+
\[
12+
\text{vePendle 权重} = \text{锁定金额} \times \frac{\text{剩余锁定时间}}{\text{最大锁定时间}}
13+
\]
14+
15+
其中:
16+
- **锁定金额** 是用户投入的 PENDLE 数量;
17+
- **剩余锁定时间** = 锁定结束时间 - 当前时间;
18+
- **最大锁定时间** 为系统预设的最大锁仓周期(例如 4 年)。
19+
20+
这种设计保证了用户在锁仓期内,其治理权会**线性衰减**,从而鼓励用户延长锁定时间或频繁更新锁仓状态以保持较高权重。
21+
22+
### (2) 权重随时间衰减的动态性
23+
24+
与 Curve 的 veCRV 类似,vePendle 的核心在于动态计算用户的治理权重。假设用户在时刻 \(t_0\) 锁定 \(A\) 个代币,到期时间为 \(T\)\(T \leq t_0 + \text{max\_lock}\)),那么任一时刻 \(t\)\(t_0 \leq t \leq T\))的投票权重可以表达为:
25+
26+
\[
27+
w(t) = A \times \frac{T - t}{T - t_0} \quad \text{或} \quad w(t) = A \times \frac{T - t}{\text{max\_lock}}
28+
\]
29+
30+
不同项目可能在公式上有细微区别:
31+
- 前者把初始锁仓时长作为归一化因子;
32+
- 后者统一使用最大锁仓时长,使得即使用户锁仓时间不足最大周期,权重也以相同标准计算。
33+
34+
这种线性衰减设计确保了锁仓越接近结束,用户实际拥有的治理权越低;从而在治理过程中,迫使用户“续锁”或更新锁仓以保持较高权重。
35+
36+
37+
38+
## 2. 代码实现细节与示例
39+
40+
下面给出一个伪代码示例,展示如何在 Solidity 中计算和更新 vePendle 权重。注意这只是对核心逻辑的展示,实际合约会更为复杂,并会考虑安全、重入保护以及高效数据存储问题。
41+
42+
```solidity
43+
// SPDX-License-Identifier: MIT
44+
pragma solidity ^0.8.0;
45+
46+
contract VePendle {
47+
// 锁仓信息
48+
struct LockInfo {
49+
uint256 amount; // 锁定的 PENDLE 数量
50+
uint256 endTime; // 锁仓结束时间
51+
uint256 startTime; // 锁仓开始时间(可选,用于更精细的计算)
52+
}
53+
54+
// 用户地址映射到锁仓信息
55+
mapping(address => LockInfo) public locks;
56+
57+
// 最大锁仓时间,例如:4年 = 4 * 365 * 86400 秒
58+
uint256 public constant MAX_LOCK_TIME = 4 * 365 days;
59+
60+
// 事件通知:锁仓或更新
61+
event Locked(address indexed user, uint256 amount, uint256 endTime);
62+
63+
// 用户锁仓函数
64+
function lock(uint256 _amount, uint256 _lockDuration) external {
65+
require(_lockDuration > 0 && _lockDuration <= MAX_LOCK_TIME, "Invalid lock duration");
66+
67+
// 计算结束时间
68+
uint256 endTime = block.timestamp + _lockDuration;
69+
70+
// 此处省略代币转移逻辑(如 transferFrom 等)
71+
locks[msg.sender] = LockInfo({
72+
amount: _amount,
73+
startTime: block.timestamp,
74+
endTime: endTime
75+
});
76+
77+
emit Locked(msg.sender, _amount, endTime);
78+
}
79+
80+
// 计算当前 vePendle 权重
81+
function getVoteWeight(address _user) public view returns (uint256) {
82+
LockInfo memory lockInfo = locks[_user];
83+
if (block.timestamp >= lockInfo.endTime) {
84+
return 0;
85+
}
86+
// 剩余锁仓时间
87+
uint256 remainingTime = lockInfo.endTime - block.timestamp;
88+
// 权重 = 锁定金额 * (剩余时间 / 最大锁仓时间)
89+
return lockInfo.amount * remainingTime / MAX_LOCK_TIME;
90+
}
91+
}
92+
```
93+
94+
### 关键点解析
95+
96+
- **锁仓函数**:用户调用 `lock` 函数时,必须指定锁定数量和锁仓时长,系统计算出结束时间,并记录用户锁仓信息。实际应用中,还需要校验用户余额、调用 ERC20 的 `transferFrom` 等操作。
97+
98+
- **权重计算**`getVoteWeight` 函数根据当前时间动态计算用户剩余锁仓时间,再按照比例返回用户的治理权重。注意使用整型除法时可能存在精度损失,实际实现中可考虑使用高精度数学库或调整单位(例如使用 wei)。
99+
100+
- **状态更新**:用户可以在锁仓期内对锁仓信息进行续锁(延长 endTime)或增加锁定量,系统需设计相应的更新函数,同时调整对应的权重。
101+
102+
103+
104+
## 3. 激励机制与治理设计
105+
106+
### (1) 治理权与奖励挂钩
107+
108+
vePendle 模型通常不仅赋予治理投票权,还将奖励分配(如交易费分红、流动性挖矿加成等)与用户的 vePendle 权重挂钩。这样一来,治理权越大,用户在系统中享受的额外收益也越多,从而鼓励用户长期持有和参与治理。
109+
110+
### (2) 防止短期操控
111+
112+
由于投票权随着时间衰减,短期内大量买入 PENDLE 并锁仓虽然可以瞬间获得较高权重,但如果不续锁或延长锁定时间,其权重会迅速下降。这降低了“快进快出”用户对治理的短期操控风险,使治理决策更具持续性和合理性。
113+
114+
### (3) 动态调整与续锁激励
115+
116+
为了鼓励用户延长锁仓期,协议可设计动态激励机制,比如:
117+
- 在锁仓期接近结束时,通过奖励“续锁”行为(例如额外奖励或投票权加成)来防止大量用户同时解锁;
118+
- 设计自动续锁功能,让用户在解锁窗口自动选择延长锁仓周期,保持治理权稳定。
119+
120+
121+
122+
## 4. 潜在风险与优化挑战
123+
124+
### (1) 流动性问题
125+
126+
长期锁仓虽然能提升治理稳定性,但也会降低市场上 PENDLE 的流动性,可能在市场波动时加剧价格波动。解决方案包括设计部分流动性激励措施或支持质押衍生品。
127+
128+
### (2) 解锁窗口集中风险
129+
130+
当大量用户的锁仓期在同一时间到期时,可能导致治理权迅速下降及市场抛压。为缓解此风险,可采用以下策略:
131+
- **分散解锁时间**:在用户锁仓时引入随机化或限制每个周期内可解锁的比例;
132+
- **预告机制**:提前通知用户解锁窗口,引导用户续锁或逐步退出。
133+
134+
### (3) 算法复杂度与 gas 优化
135+
136+
实时计算权重可能涉及高频调用,如何在保证精度的同时降低 gas 消耗,是设计时必须考虑的点。常见做法包括:
137+
- 利用“快照”机制,在治理投票前批量更新状态;
138+
- 使用“延迟更新”策略,仅在用户交互时计算最新权重。
139+
140+
141+
142+
## 5. 总结
143+
144+
vePendle 模型通过锁仓获得动态衰减的治理权重,不仅将治理权与长期承诺挂钩,还为激励机制设计提供了灵活空间。其核心技术要点包括:
145+
- **权重的线性衰减**:通过剩余锁仓时间与最大锁仓期的比例来计算治理权重;
146+
- **激励机制设计**:锁仓与奖励、治理挂钩,鼓励用户长期持有并参与生态治理;
147+
- **风险与优化**:面对流动性、解锁集中风险和 gas 成本,设计者需要在安全性、用户体验与系统性能之间找到平衡。
148+
149+
这一模型在技术上借鉴了成熟的 veCRV 思路,同时针对 Pendle 生态的特定需求做出调整,为去中心化金融项目提供了既稳定又灵活的治理和激励方案。

0 commit comments

Comments
 (0)