LP 代币机制

概述

LP代币(Liquidity Provider Token)是JAMM DEX中代表流动性提供者在特定交易对中份额的凭证。每个交易对都有对应的LP代币,基于 JAMMERC20 合约实现,不仅符合ERC-20标准,还支持EIP-2612 Permit功能,为用户提供更好的交易体验。

JAMMERC20合约实现

基本信息

// from JAMMERC20.sol
contract JAMMERC20 is IJAMMERC20 {
    string public constant name = "JAMM LPs";
    string public constant symbol = "JAMM-LP";
    uint8 public constant decimals = 18;
    uint public totalSupply;
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;
    // ...
}

LP代币特性

  • 统一名称: 所有交易对的LP代币都叫"JAMM LPs"。

  • 统一符号: "JAMM-LP"。

  • 精度: 18位小数。

  • 唯一性: 每个交易对都是一个独立的LP代币合约实例。

EIP-2612 Permit支持

JAMM DEX的LP代币支持EIP-2612标准,允许用户通过签名进行授权,无需发送额外的 approve 交易。

LP代币的生命周期

铸造(Mint)

当用户向流动性池添加流动性时,会铸造相应的LP代币。该逻辑在 JAMMPair.sol 中实现:

销毁(Burn)

当用户移除流动性时,会销毁相应的LP代币:

最小流动性机制

永久锁定

目的

  • 防止流动性池被完全清空,这会破坏价格计算。

  • 防止某些类型的恶意操纵攻击。

Permit功能详解

签名授权的优势

传统的ERC-20授权需要两步交易:approvetransferFrom。Permit功能允许用户通过一次离线签名和一次链上交易完成授权和操作,从而节省Gas并改善用户体验。

在Router中的应用

JAMMRouter 合约提供了使用Permit的流动性移除函数:

使用示例

查询LP代币信息

使用Permit移除流动性

Last updated