JAMM 系统架构
架构概述
JAMM DEX 采用分层、模块化架构,确保可扩展性、安全性和可维护性。系统由核心合约层、库层和接口层组成。

核心合约
JAMMFactory
职责:创建和管理交易对
维护所有交易对的注册表
使用 CREATE2 确定性部署交易对合约
管理协议费用设置
处理推荐系统的注册
关键函数:
JAMMPair
职责:实现特定的流动性池
维护两种代币的储备
执行代币交换逻辑
管理流动性的添加和移除
计算和分配交易费用
关键函数:
JAMMRouter
职责:提供用户友好的交易接口
为交易提供高级函数
处理多跳交换路径
管理截止时间检查
支持 ETH/WJU 的自动转换
关键函数:
JAMMERC20
职责:LP 代币的标准实现
实现 ERC-20 标准
支持 EIP-2612
permit功能管理 LP 代币的铸造和销毁
关键函数:
WJU
职责:包装 JU 代币的实现
提供 JU 代币的包装和解包装
完全兼容 ERC-20 标准
支持直接接收 ETH
关键函数:
库合约
JAMMLibrary
提供核心数学计算和工具函数:
sortTokens():排序代币地址pairFor():计算交易对地址getReserves():获取储备量getAmountOut(),getAmountIn():计算交换数量getAmountsOut(),getAmountsIn():计算多跳交换数量
Math
提供安全的数学运算:
sqrt():平方根计算(使用巴比伦方法)min():找到两个数的最小值使用 Solidity >=0.8.0 的内置溢出/下溢保护
TransferHelper
提供安全的代币转账函数:
safeTransfer():安全代币转账safeTransferFrom():从另一个地址安全转账代币safeTransferETH():安全 ETH 转账safeApprove():安全代币授权
UQ112x112
提供定点数算术支持:
用于价格累积
启用高精度数学运算
数据流架构
交易流程
流动性管理流程
安全架构
重入保护
所有关键函数都受到重入锁保护:
数学安全
使用 Solidity ^0.8.21 的内置溢出和下溢保护
Math库提供安全的sqrt函数JAMMLibrary包含零储备和数量的检查
访问控制
JAMMFactory中的关键函数只能由feeToSetter调用JAMMPair中的initialize函数只能由工厂调用每个用户只能设置一次推荐人
费用架构
费用层级
费用分配
交易费用:交换费用的一部分(
fee/50000或fee/100000)发送到指定的feeTo地址。如果推荐人处于活跃状态,费用在协议和推荐人之间分配协议费用:流动性提供者费用的一部分可以作为新的 LP 代币铸造并发送到
mintTo地址,基于k值的增长计算
地址生成
CREATE2 确定性部署
使用 CREATE2 生成交易对地址,确保可预测性:
初始化代码哈希
当前值:0x2e599419feff8382bdfc47abf847537b06e96b0525db3802b2a9fb0bfe068ed8
事件系统
核心事件
PairCreated(address indexed token0, address indexed token1, uint24 fee, address pair, uint)Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to)Mint(address indexed sender, uint amount0, uint amount1)Burn(address indexed sender, uint amount0, uint amount1, address indexed to)Sync(uint112 reserve0, uint112 reserve1)Fee(address indexed sender, address indexed referrer, address token, uint amount)Referrer(address indexed sender, address indexed referrer)
这些事件为前端应用程序和分析工具提供了完整的链上数据轨迹。
Last updated