WJU 包装代币

WJU(Wrapped JU)是JuChain原生代币JU的ERC-20包装版本。由于AMM系统需要所有代币都遵循ERC-20标准,WJU合约提供了JU代币与ERC-20代币之间的无缝转换功能,使得JU代币能够参与JAMM DEX的所有交易活动。

合约实现

基本信息

contract WJU is IWJU {
    string public constant override name = "Wrapped JU";
    string public constant override symbol = "WJU";
    uint8 public constant override decimals = 18;
    uint public override totalSupply;
    mapping(address => uint) public override balanceOf;
    mapping(address => mapping(address => uint)) public override allowance;
}

WJU合约完全实现了ERC-20标准,具有以下特性:

  • 名称: "Wrapped JU"

  • 符号: "WJU"

  • 精度: 18位小数

  • 1:1兑换: 1 JU = 1 WJU

核心功能

包装功能(Deposit)

用户可以通过两种方式将JU代币包装为WJU:

方式1:直接发送JU

用户直接向WJU合约地址发送JU代币,合约会自动调用deposit()函数。

方式2:调用deposit函数

包装过程

  1. 用户发送JU代币到合约

  2. 合约增加用户的WJU余额

  3. 增加WJU总供应量

  4. 触发Deposit事件

解包装功能(Withdraw)

用户可以将WJU代币换回JU代币:

解包装过程

  1. 检查用户WJU余额是否足够

  2. 减少用户的WJU余额

  3. 向用户转账相应数量的JU代币

  4. 触发Withdrawal事件

ERC-20标准实现

转账功能

授权转账功能

授权功能

事件系统

Deposit事件

记录JU代币包装为WJU的操作。

Withdrawal事件

记录WJU代币解包装为JU的操作。

ERC-20标准事件

在JAMM DEX中的应用

Router集成

JAMMRouter合约与WJU深度集成,提供便捷的JU代币交易功能:

JU代币交易

用JU购买代币

交易流程

  1. 用户发送JU代币

  2. Router将JU包装为WJU

  3. 将WJU转入交易对

  4. 执行交换逻辑

  5. 用户收到目标代币

卖出代币换JU

交易流程

  1. 用户授权并转入代币

  2. 执行交换得到WJU

  3. Router将WJU解包装为JU

  4. 向用户转账JU代币

流动性管理

添加JU流动性

移除JU流动性

使用示例

基本包装/解包装

查询余额

监听事件

安全考虑

合约安全

  1. 简单设计: WJU合约逻辑简单,减少了安全风险

  2. 无管理员: 合约没有管理员功能,完全去中心化

  3. 1:1兑换: 严格的1:1兑换比例,无法被操纵

使用安全

  1. 余额检查: 所有操作都会检查余额是否足够

  2. 溢出保护: 使用Solidity 0.8.21的内置溢出保护

  3. 事件记录: 所有操作都有相应的事件记录

Last updated