跳到主要内容

📖TTSWAP 技术白皮书

TTSWAP 是一个去中心化的代币交易平台,支持用户快速、安全地进行代币兑换,无需依赖中心化交易所。


1 概要

TTSWAP (Token-Token Swap) 是建立在支持 EVM 的区块链上的自动做市协议 (Automated Market Maker, AMM)。该协议通过智能合约自动执行,无需依赖中心化机构或个人参与交易撮合。其核心机制基于用户交易行为,自动触发市场价值转移,实现价格发现功能。

TTSWAP 创新性地构建了一个基于恒定价值的交易协议 (Constant Value AMM)。与传统的 AMM 相比,该协议在保持数学模型稳健性的同时,通过避免复杂的指数运算,显著降低了 Gas 费用。

本白皮书将详细阐述 TTSWAP 的设计逻辑:

  1. Token 交易:用户可直接进行任意 Token 间的兑换,支持原生 ETH 直接交易,无需 WETH 中转。
  2. 价值 Token 与普通 Token:区分主流价值资产与长尾资产,构建分层流动性市场。
  3. 流动性管理:用户可投资(提供流动性)并随时撤资,系统自动处理费率与收益。
  4. 手续费产生与分配:精细化的手续费分配机制,激励流动性提供者、推广者、社区建设者等多方角色。
  5. 公平启动:代币经济模型旨在维护所有持有者的权益,通过价格导向的解锁机制确保项目长期发展。

综上所述,TTSWAP 致力于构建一个高效、安全、低 Gas 成本的去中心化交易与支付协议,为 DeFi 和 PayFi 用户提供简洁、透明、高效的交易体验。

2 特点

  1. 恒定价值交易协议 (Constant Value AMM) 协议的核心思想是确保交易过程中的"价值守恒"。该模型在数学上兼容主流的 CPMM (Constant Product Market Maker, Uniswap V2) 模型,同时支持类似 Balancer 的非对称权重流动性,但通过优化的代数算法避免了高昂的 Gas 消耗。

  2. 集中流动性与直接交易 用户向协议添加代币流动性后,该流动性可与协议内其他任意代币共享。用户可实现代币间的直接兑换,有效避免传统 DEX 中因多跳路由导致的流动性碎片化问题,显著提升交易深度。

  3. 流动性放大机制 (Liquidity Amplification) 协议根据代币的稳定性特征,动态配置流动性放大系数。用户提供的单位资金可产生多倍有效流动性深度,显著提升资金利用效率和收益水平(该机制类似 Curve 的流动性放大原理,但适用范围扩展至通用代币)。

  4. 低滑点交易 通过流动性放大机制和集中流动性设计,TTSWAP 能够显著降低交易滑点。即使是大额交易,也能获得优异的价格执行效果。

  5. 无常损失防护 协议通过特定的价值锚定算法和三重防御机制,在架构层面保护流动性提供者 (LP, Liquidity Provider) 免受无常损失影响,使 LP 在撤出流动性时能够更好地保持原有资产价值。

  6. 极致低 Gas 费用 得益于精简的代数运算逻辑和位压缩存储技术,合约执行效率极高。相比于同类复杂协议,TTSWAP 可节省 50% 至 90% 的 Gas 费用,使链上交易更加经济。

  7. 精细化手续费分配 手续费根据参与者的不同角色进行自动分配,涵盖代币管理员 (Token 创建者)、Token 投资者 (LP)、门户运营者、推荐人和普通用户。这构建了一个多方共赢的生态系统。

  8. 原生 ETH 支持 协议在底层架构上原生支持 ETH 直接参与交易和流动性提供,用户无需手动封装为 WETH,简化交互流程并优化用户体验。

  9. 投资证明与流动性挖矿 当用户提供流动性后,协议自动生成投资证明 (Proof of Investment),用户可凭此进行流动性挖矿,获得额外的 TTS 代币奖励。

  10. 价格导向型代币经济模型 TTS 代币采用创新的解锁模型:代币解锁与币价表现挂钩(价格翻倍解锁机制),并结合社区盈利销毁机制,确保代币流通量与项目价值增长相匹配。

  11. 支持 X402 支付协议 协议内置对 X402 标准的支持。这是一种将"签名者"与"支付执行者"分离的机制(类似账户抽象/PayFi),极大地扩展了支付应用场景,提升用户支付体验。

3 价值守恒交易模型原理

3.1 核心公式

当用户用 Δa\Delta a 数量的 Token A 兑换 Token B 时,协议遵循以下两步计算:

1. 根据输入数量计算转移价值:ΔV=2VAΔa2QA+Δa2. 根据转移价值计算输出数量:Δb=2QBΔV2VB+ΔV\begin{align} \text{1. 根据输入数量计算转移价值:} \\ \Delta V &= \frac{2 \cdot V_A \cdot \Delta a}{2 \cdot Q_A + \Delta a} \\ \text{2. 根据转移价值计算输出数量:} \\ \Delta b &= \frac{2 \cdot Q_B \cdot \Delta V}{2 \cdot V_B + \Delta V} \\ \end{align}

(价值守恒交易模型核心公式详细推导过程参见附录 A)

参数说明:

符号含义备注
VAV_A协议中 Token A 的总市场价值该价值可理解为代币在协议中的"权重"
QAQ_A协议中 Token A 的当前库存数量包含累积手续费
Δa\Delta a用户输入的 Token A 数量扣除手续费后的总量
VBV_B协议中 Token B 的总市场价值
QBQ_B协议中 Token B 的当前库存数量包含累积手续费
Δb\Delta b用户获得的 Token B 数量扣除手续费前的总量

设计哲学:交换的本质是数量与价值的不匹配,协议通过市场手段(价格滑点)自动平衡供需。

3.2 模型的数学特性与对比

3.2.1 与 Uniswap (CPMM) 的关系

当两个代币的配置价值相等 (VA=VBV_A = V_B) 时,上述公式在数学上等价于 Uniswap V2 的恒定乘积公式 (xy=kx \cdot y = k)。

推导简述: 在 VA=VBV_A=V_B 的情况下,代入公式可推导出:

Δb=QBΔaQA+Δa\Delta b = \frac{Q_B \cdot \Delta a}{Q_A + \Delta a}

(价值相同情况下的 TTSWAP 化简过程参见附录 B

这正是标准 CPMM 模型的输出公式,这意味着 TTSWAP 在处理常规代币对时,拥有与 Uniswap 相同的市场深度和定价特性。

3.2.2 与 Balancer (加权池) 的关系

VAVBV_A \neq V_B 时,模型表现出加权池的特性。

  • Balancer 使用指数运算 (xwoywi=k)(x^{w_o} \cdot y^{w_i} = k) 来实现不同权重,计算复杂且 Gas 开销较大。
  • TTSWAP 使用上述代数公式,无需指数运算即可模拟非对称流动性池。这使得 TTSWAP 能够在极低的 Gas 成本下,支持稳定币(高权重)或新兴代币(低权重)的定制化流动性管理。

(价值不相同情况下与 Balancer 的等价性证明参见附录 C

3.3 交易后的状态更新

交易完成后,代币的状态会更新,形成新的兑换比例:

TokenAToken_A (输入侧)TokenBToken_B (输出侧)
价值 (权重)VAV_A (不变)VBV_B (不变)
数量QA+ΔaQ_A + \Delta a (增加)QBΔbQ_B - \Delta b (减少)
  • 新边际价格 (记账价格)PAnew=VAQA+ΔaP_A^{\text{new}} = \frac{V_A}{Q_A + \Delta a} PBnew=VBQBΔbP_B^{\text{new}} = \frac{V_B}{Q_B - \Delta b}

  • 新兑换比例 (Spot Price)Rab=PAnewPBnewR_{a \to b} = \frac{P_A^{\text{new}}}{P_B^{\text{new}}}

:这里的 PAP_APBP_B 是协议内部用于记录代币相对于其权重的"稀缺度"指标,并非直接的法币价格。

4 Token

4.1 Token 介绍

在 TTSWAP 协议中,每个 Token 拥有四个核心属性:

  1. 市场价值 (VV):衡量代币在协议中的权重(资金池的总权重价值)。
  2. 当前数量 (QQ):协议当前持有的代币余额(包含累积的手续费)。
  3. 投资数量 (II):LP 存入的代币总数(包含累积的手续费)。
  4. 投资份额 (SS):LP 持有的代币总份额。

交易机制:当用户认为代币的市场价格低于协议价格(即 V/QV/Q 偏高)时,会倾向于出售该代币;反之则买入。

Token Introduction

4.2 Token 分类

Token 分类说明产生手续费单独投资组合投资
元 Token协议部署时的首个 Token(如 USDT),作为价值锚定基准
价值 Token市场认可度高、生态成熟的代币(如 ETH、WBTC)
普通 Token新增的长尾资产,需与价值 Token 配对添加

4.3 Token 配置与 Gas 优化

为了实现极致的 Gas 效率,TTSWAP 采用了位压缩 (Bit-packing) 技术,将代币的所有关键配置参数压缩存储在一个 256 位的存储槽 (Slot) 中。

这意味着读取或更新代币配置只需一次链上存储操作 (SSTORE/SLOAD),大幅降低了交互成本。

(详细的 256 位存储布局图请参见附录 D

用户可配置的参数包括:

  • 费率设置:投资费率、撤资费率、买入/卖出费率。
  • 流动性加强倍数:设置代币的流动性放大因子(1 ~ 市场设置的最大倍数)。
  • 撤资切片数:用于平滑大额撤资影响的安全参数。

:市场设置的最大倍数根据代币项目质量和运营质量进行评估,默认值为 1。

5 元 Token 的添加

元 Token (Meta Token) 指协议部署后添加的首个代币,通常作为协议的价值锚定基准(如 USDT)。元 Token 本身也是一种价值 Token。

alt text

例如,协议创建者初始化 USDT 为元 Token,并注入 2,000 USDT 作为初始流动性。

  • 此时状态
    • 市场价值 (VV) = 2,000
    • 代币数量 (QQ) = 2,000
    • 投资数量 (II) = 2,000
    • 投资份额 (SS) = 2,000

6 普通 Token 的添加

alt text

用户添加普通 Token(如 Token A)时,必须锚定一种已存在的价值 Token(如 USDT)以确定其初始定价。

假设用户添加 Token A,并锚定 USDT:

  • USDT 状态更新
    • 市场价值 = 3,000
    • 代币数量 = 3,000
    • 投资数量 = 3,000
    • 投资份额 = 3,000
  • Token A 初始状态
    • 市场价值 = 1,000
    • 代币数量 = 2,000
    • 投资数量 = 2,000
    • 投资份额 = 2,000

:广泛认可的普通代币在满足一定条件后,也可以升级为价值代币。

7 Token 投资与撤资

在 TTSWAP 中,提供流动性称为"投资",移除流动性称为"撤资"。

7.1 核心概念

Token Invest State

  • Token 属性

    • 市场价值 (VV):衡量代币在协议中的权重或总市场价值。
    • 当前数量 (QQ):协议当前持有的代币余额(包含累积的手续费)。
    • 投资数量 (II):LP 存入的代币总数(包含累积的手续费)。
    • 投资份额 (SS):LP 持有的权益份额。公式:份额=投资数量/当前净值\text{份额} = \text{投资数量} / \text{当前净值}
    • 加强数量:由流动性放大机制产生的虚拟流动性。
  • 投资证明 (User Proof) 属性

    • 记录价值:用户投资时刻该代币的市场价值。
    • 记录数量:用户投资时刻该代币的总数量。
    • 持有份额:用户持有的投资份额。
    • 虚拟放大额度:计算得出的虚拟增量 (投资数量实际投入\text{投资数量} - \text{实际投入})。

7.2 Token 投资与撤资计算流程

Alt text

7.2.1 投资 (提供流动性)

当用户投资代币时:

  1. 计算放大:根据配置的"流动性加强倍数",协议虚拟增加投入数量,从而在不增加实际资金占用的情况下加深市场深度。
  2. 计算份额:根据当前资金池的净值,计算用户应得的 LP 份额。
  3. 更新状态:增加资金池的市场价值、代币数量和总投资份额。

7.2.2 撤资 (移除流动性)

当用户撤资时:

  1. 计算应还数量:根据用户持有的份额占比,计算应赎回的代币数量。
  2. 计算收益收益=当前赎回数量原始投资数量\text{收益} = \text{当前赎回数量} - \text{原始投资数量}
  3. 撤资切片 (Divestment Slicing): 为了防止巨鲸大额撤资导致资金池瞬间枯竭或价格剧烈波动,协议引入了"撤资切片"机制,限制单次撤资的最大比例(例如不超过总池的 1/N)。如果撤资量过大,用户需分批操作或承担更高的滑点成本。

(Token 投资与撤资详细计算流程参见附录 E

7.3 抵御无常损失的三重防御机制

为了最大程度保护普通流动性提供者 (LP) 的本金安全,TTSWAP 设计了独特的三重防御体系来应对无常损失 (Impermanent Loss):

  1. 第一道防线:协议级价值锚定 (协议级) 通过智能合约内置的价值守恒算法,优先保障 LP 在撤资时的本位价值,从底层逻辑上减少因价格波动带来的被动损失。

  2. 第二道防线:项目方劣后缓冲 (资金级) 在极端行情导致价值缺口时,代币发行方(创建者)注入的初始流动性将作为"劣后级资金",优先承担价值波动带来的亏损,从而保护普通用户的资金安全。

  3. 第三道防线:协议代币补偿基金 (治理级) 作为最后的保障手段,如果上述措施仍无法覆盖全部损失,协议将启动"风险补偿机制",通过拍卖或释放部分 TTS 治理代币筹集资金,对受损用户进行补偿。

8 Token 交换实例

本章演示用户用 TokenAToken_A 兑换 TokenBToken_B 的全过程。

Token Swap

8.1 初始状态

  • Token A:价值 40,000,数量 20,000(单价 2.0)
  • Token B:价值 20,000,数量 40,000(单价 0.5)
  • 初始汇率:1 Token A = 4 Token B

8.2 交易计算

用户输入 2,500 个 Token A:

  1. 扣除手续费:假设费率 0.01%,扣除 0.25 A,实际入池 Δa=2,499.75\Delta a = 2,499.75
  2. 计算转移价值:根据公式算出 ΔV4,705.4\Delta V \approx 4,705.4
  3. 计算输出数量:根据 ΔV\Delta V 算出 Token B 的流出量 Δb8,420.3\Delta b \approx 8,420.3
  4. 扣除输出手续费:扣除 0.84 B,用户实际收到 8,419.46 个 Token B。

(Token 兑换详细计算流程参见附录 F

8.3 结果分析

Token Swap Result

交易后,Token A 数量增加(价格下跌),Token B 数量减少(价格上涨)。协议自动完成价格发现。

8.4 合约安全性验证

协议已通过多项数学一致性测试:

  • 公平性:A 换 B,立即用 B 换回 A,除手续费外损失极小(路径无关性)。
  • 合理性:单笔大额交易与拆分为多笔小额交易的结果一致(无套利空间)。
  • 闭环性:A->B->C->A 的循环交易逻辑自洽。

参见 modified_swap_without_fee 测试合约地址

9 手续费

9.1 手续费来源

Token Fee Source

手续费在交易发生时实时扣除,并直接累积到代币的"当前数量"和"投资数量"中。这意味着 LP 份额的净值 (Net Value) 会随着交易量的增加而单调递增,在 LP 撤资时进行按角色分配。

9.2 分配机制

TTSWAP 采用多角色分润机制,促进生态繁荣:

Token Fee Allocation

角色分成比例 (示例)说明
代币管理员1% - 3%代币的初始创建者或运营方
流动性提供者 (LP)50% - 80%核心收益者,按份额自动复利
服务提供商5% - 25%提供前端服务、聚合交易、集成服务的第三方
推荐人5% - 10%邀请新用户的推广大使
社区金库2% - 8%用于回购销毁 TTS 代币或技术研发

若无明确推荐人,相关比例将划归服务提供商或社区金库。

(Token 手续费与分配计算流程参见附录 G

10 Token 福利

Token Welfare

项目方可主动向资金池注入代币作为"福利",这将直接提升 LP 份额的净值,从而提高年化收益率 (APR),吸引更多流动性。

11 流动性挖矿

Liquidity Mining

协议支持"投资即挖矿"机制。用户的 LP 份额会自动折算为算力,挖掘平台治理代币 TTS。这实现了双重收益:交易手续费 + TTS 代币奖励

12 X402 支付协议支持

TTSWAP 实现了对 X402 协议的支持。这是一个先进的意图导向支付标准 (Intent-Centric Payment),类似于账户抽象 (Account Abstraction) 或 PayFi 的理念。

核心优势

  • 签名与执行分离:用户只需对支付意图进行签名(离线操作,无 Gas),而具体的上链执行、Gas 支付可由第三方"执行者" (Executor) 完成。
  • 全币种支付:应用端无需关心用户持有何种代币,X402 协议会在链上自动完成兑换并支付目标货币。

X402 Support

流程

  1. 用户访问应用,应用请求支付。
  2. 用户签署离线消息 (Permit)。
  3. 执行者将签名提交至链上。
  4. TTSWAP 合约验证签名,自动兑换代币并完成支付。

13 主要代码实现 (参见代码)

13.1 合约部署 GAS

Deployment CostDeployment Size
5,644,29726,543

13.2 合约函数(部份主要函数)GAS

Function Nameavg备注
buyGood(NativeETH)81,190购买 Token
buyGood(ERC20)89,761购买 Token
disinvestProof164,402撤资
initGood376,985初始化 Token
investGood153,945投资 Token
goodWelfare52,396增加手续费发福利

14 协议中角色说明

协议中提供对于5种角色的支持,包含:代币管理员、代币流动性提供者、门户运营者、推荐者、用户、社区。

角色收益来源说明
流动性提供者 (LP)50% - 80%资金池的核心贡献者,收益占比最高。
代币管理员1% - 3%负责代币上币和参数配置的运营者。
推荐人5% - 10%邀请新用户的推广大使。
门户运营者5% - 25%提供前端界面、聚合交易服务的第三方。
社区金库2% - 8%用于技术开发和回购销毁。
用户折扣-10%填写推荐码的用户可享受手续费减免。

15 代币经济方案

TTS Token 是协议的治理与激励代币,采用了创新的"价格导向型"解锁机制。

15.1 基本信息

  • 名称:TTSWAP Token (TTS)
  • 初始发行:5,000 万枚(全部锁定)
  • 通胀机制:每年增发 (2 亿 - 已解锁数量) × 2% 用于奖励 LP。
  • 通缩机制:社区收益 100% 用于二级市场回购并销毁 TTS。

15.2 核心创新:价格导向型解锁 (Price-Driven Unlocking)

为了防止团队砸盘和早期巨鲸抛售,TTS 的解锁与币价直接挂钩:

  • 原则:只有币价上涨,代币才会解锁。
  • 机制
    • 分配时全部锁定(公售和流动性挖矿部分除外)。
    • 设定初始价格解锁比例(例如 10%)。
    • 当币价翻倍时,解锁剩余锁定量的 10%。
    • 如果币价再次翻倍,再解锁剩余的 10%。
    • 结果:团队和早期投资者的利益与币价长期表现强制绑定。

15.3 4C 社区分配模型

代币分配遵循 4C 角色模型,确保贡献者获得回报:

角色描述占比解锁限制 (最大)触发条件
创始人 (Founder)项目发起人、承担最大风险20%< 1/20 (5%)需涨 1,000 倍才能解锁约 37%
合伙人 (Partner)核心执行团队12%< 1/14 (7.1%)需涨 400 倍才能解锁约 45%
价值贡献 (Value)社区运营、技术开发44%< 1/12 (8.3%)需涨 200 倍解锁约 50%
资本贡献 (Capital)早期投资、公售、空投24%< 1/8 (12.5%)需涨 100 倍解锁约 60%

15.4 动态销毁 (Buyback & Burn)

  • 协议产生的手续费收益中,划拨给"社区金库"的部分将全部用于二级市场回购 TTS 并销毁
  • 这构成了 TTS 的通缩引擎。随着交易量的增长,流通盘将持续减少,从而推升代币价值。

16 法律许可

16.1 说明

为了维护项目合法权益,同时方便用户了解协议,不同文件采用不同的开源协议。违反协议将承担相应的法律责任。

16.2 协议说明

为了保护知识产权并促进技术交流:

  • 核心逻辑:采用 BUSL-1.1(商业源使用许可)。允许学习研究,但在特定期限内限制商业分叉。
  • 外围组件:采用 MIT 许可,鼓励社区开发周边工具和集成应用。

详细版权信息请查阅 GitHub 仓库中的 LICENSE 文件。

16.3 文件开源协议信息

src
├── TTSwap_Market.sol(BUSL-1.1)
├── TTSwap_Market_Proxy.sol(BUSL-1.1)
├── TTSwap_Token.sol(BUSL-1.1)
├── TTSwap_Token_Proxy.sol(BUSL-1.1)
├── interfaces
│ ├── I_TTSwap_Market.sol(MIT)
│ └── I_TTSwap_Token.sol(MIT)
└── libraries
├── L_Currency.sol (MIT)
├── L_Error.sol (MIT)
├── L_Good.sol(BUSL-1.1)
├── L_GoodConfig.sol(MIT)
├── L_Proof.sol(BUSL-1.1)
├── L_SignatureVerification.sol(MIT)
├── L_Transient.sol (MIT)
├── L_TTSTokenConfig.sol (MIT)
├── L_TTSwapUINT256.sol (MIT)
└── L_UserConfig.sol(MIT)
docs
├── ebook
tests

17 联系方式

附录 A: 价值守恒交易模型核心公式详细推导过程

本附录将详细展示如何从"调和平均价格"原理推导出 TTSWAP 的核心交易公式。

TTSWAP 的交易过程分为两个独立的步骤:

  1. 输入侧:将输入的 Token A 转换为标准价值 (ΔV\Delta V)。
  2. 输出侧:将标准价值 (ΔV\Delta V) 转换为输出的 Token B。

第一步:计算输入 Token A 对应的价值 ΔV\Delta V

我们采用调和平均数 (Harmonic Mean) 来确定交易的执行价格。相比算术平均,调和平均更能平滑价格波动,确保交易的公平性。

1. 定义瞬时价值密度 (价格)

  • 交易前状态: 协议持有 QAQ_A 个 Token A,总价值为 VAV_APstart=VAQAP_{start} = \frac{V_A}{Q_A}
  • 交易后状态 (假设): 协议持有 QA+ΔaQ_A + \Delta a 个 Token A,总价值仍记为 VAV_A(以此计算边际贡献)。 Pend=VAQA+ΔaP_{end} = \frac{V_A}{Q_A + \Delta a}

2. 计算执行价格 (调和平均) 对交易前后的价格取调和平均,得到本次交易的有效执行价格 PexecP_{exec}

Pexec=HarmonicMean(Pstart,Pend)=21Pstart+1PendP_{exec} = \text{HarmonicMean}(P_{start}, P_{end}) = \frac{2}{\frac{1}{P_{start}} + \frac{1}{P_{end}}}

代入 PstartP_{start}PendP_{end}

Pexec=2QAVA+QA+ΔaVA=22QA+ΔaVA=2VA2QA+ΔaP_{exec} = \frac{2}{\frac{Q_A}{V_A} + \frac{Q_A + \Delta a}{V_A}} = \frac{2}{\frac{2Q_A + \Delta a}{V_A}} = \frac{2 \cdot V_A}{2 \cdot Q_A + \Delta a}

3. 计算转移价值 ΔV\Delta V

ΔV=PexecΔa=2VAΔa2QA+Δa\Delta V = P_{exec} \cdot \Delta a = \frac{2 \cdot V_A \cdot \Delta a}{2 \cdot Q_A + \Delta a}

第二步:根据价值 ΔV\Delta V 计算输出数量 Δb\Delta b

在输出侧,我们关注的是"单位价值对应的代币数量"(即价格的倒数,记为 DD)。

1. 定义瞬时数量密度

  • 交易前状态: 协议持有 QBQ_B 个 Token B,总价值为 VBV_BDstart=QBVBD_{start} = \frac{Q_B}{V_B}
  • 交易后状态 (假设): 总价值增加了 ΔV\Delta V,变成 VB+ΔVV_B + \Delta VDend=QBVB+ΔVD_{end} = \frac{Q_B}{V_B + \Delta V}

2. 计算执行密度 (调和平均)

Dexec=HarmonicMean(Dstart,Dend)=21Dstart+1DendD_{exec} = \text{HarmonicMean}(D_{start}, D_{end}) = \frac{2}{\frac{1}{D_{start}} + \frac{1}{D_{end}}}

代入 DstartD_{start}DendD_{end}

Dexec=2VBQB+VB+ΔVQB=2QB2VB+ΔVD_{exec} = \frac{2}{\frac{V_B}{Q_B} + \frac{V_B + \Delta V}{Q_B}} = \frac{2 \cdot Q_B}{2 \cdot V_B + \Delta V}

3. 计算输出数量 Δb\Delta b

Δb=DexecΔV=2QBΔV2VB+ΔV\Delta b = D_{exec} \cdot \Delta V = \frac{2 \cdot Q_B \cdot \Delta V}{2 \cdot V_B + \Delta V}

至此,核心公式推导完毕。


附录 B: 价值相同情况下的公式化简 (Uniswap 等价性证明)

本附录将证明:当两个代币的权重(价值)相等时,TTSWAP 的交易模型在数学上完全等价于 Uniswap V2 的恒定乘积公式 (CPMM)。

1. 设定条件

假设 TokenAToken_ATokenBToken_B 的配置价值相等,即: VA=VB=VV_A = V_B = V

2. 联立公式

将附录 A 中的两步公式联立。

输入侧ΔV=2VΔa2QA+Δa\Delta V = \frac{2 \cdot V \cdot \Delta a}{2 \cdot Q_A + \Delta a}

输出侧Δb=2QBΔV2V+ΔV\Delta b = \frac{2 \cdot Q_B \cdot \Delta V}{2 \cdot V + \Delta V}

3. 代入与化简

ΔV\Delta V 的表达式代入 Δb\Delta b 的公式中:

Δb=2QB(2VΔa2QA+Δa)2V+(2VΔa2QA+Δa)\Delta b = \frac{2 \cdot Q_B \cdot (\frac{2 \cdot V \cdot \Delta a}{2 \cdot Q_A + \Delta a})}{2 \cdot V + (\frac{2 \cdot V \cdot \Delta a}{2 \cdot Q_A + \Delta a})}

分子分母同时除以 2V2V

Δb=QB(2Δa2QA+Δa)1+(Δa2QA+Δa)\Delta b = \frac{Q_B \cdot (\frac{2 \cdot \Delta a}{2 \cdot Q_A + \Delta a})}{1 + (\frac{\Delta a}{2 \cdot Q_A + \Delta a})}

整理分母:

分母=(2QA+Δa)+Δa2QA+Δa=2QA+2Δa2QA+Δa=2(QA+Δa)2QA+Δa\text{分母} = \frac{(2 \cdot Q_A + \Delta a) + \Delta a}{2 \cdot Q_A + \Delta a} = \frac{2 \cdot Q_A + 2 \cdot \Delta a}{2 \cdot Q_A + \Delta a} = \frac{2(Q_A + \Delta a)}{2 \cdot Q_A + \Delta a}

将分母代回原式:

Δb=QB2Δa2QA+Δa2(QA+Δa)2QA+Δa\Delta b = \frac{Q_B \cdot \frac{2 \cdot \Delta a}{2 \cdot Q_A + \Delta a}}{\frac{2(Q_A + \Delta a)}{2 \cdot Q_A + \Delta a}}

消去公共项 22QA+Δa\frac{2}{2 \cdot Q_A + \Delta a}

Δb=QBΔaQA+Δa\Delta b = \frac{Q_B \cdot \Delta a}{Q_A + \Delta a}

4. 结论

上式即为 Uniswap V2 的标准输出公式 (忽略手续费): Δy=yΔxx+Δx\Delta y = \frac{y \cdot \Delta x}{x + \Delta x}

证毕。这表明 TTSWAP 是对 CPMM 模型的通用化扩展:在 VA=VBV_A=V_B 时退化为 CPMM,在 VAVBV_A \neq V_B 时具备加权池特性。

附录 C: 价值不相同情况下的公式推导与 Balancer 等价性证明

本附录将深入分析当 VAVBV_A \neq V_B 时,TTSWAP 交易模型的数学特性,并证明其在微小增量下(Spot Price)与 Balancer 加权公式的完全等价性,以及在大额交易下的高度拟合性。

1. Balancer 模型回顾

Balancer 采用加权恒定乘积公式 (Weighted Product Formula): (QA)WA(QB)WB=k(Q_A)^{W_A} \cdot (Q_B)^{W_B} = k 其兑换价格 (Spot Price) 取决于储备量比率与权重比率: SPBalancer=QB/WBQA/WA11feeSP_{Balancer} = \frac{Q_B / W_B}{Q_A / W_A} \cdot \frac{1}{1 - \text{fee}} (忽略手续费后,且以 A 计价 B) SPBalancer=QAWA/QBWB=QAWBQBWASP_{Balancer} = \frac{Q_A}{W_A} / \frac{Q_B}{W_B} = \frac{Q_A \cdot W_B}{Q_B \cdot W_A}

2. TTSWAP 模型的边际价格推导

我们通过对 TTSWAP 的核心公式求导来计算边际价格。

输入侧 (Token A -> Value): ΔV=2VAΔa2QA+Δa\Delta V = \frac{2 V_A \Delta a}{2 Q_A + \Delta a}Δa0\Delta a \to 0 时 (微分视角): dV=limΔa02VAΔa2QA=VAQAdadV = \lim_{\Delta a \to 0} \frac{2 V_A \Delta a}{2 Q_A} = \frac{V_A}{Q_A} da

输出侧 (Value -> Token B): Δb=2QBΔV2VB+ΔV\Delta b = \frac{2 Q_B \Delta V}{2 V_B + \Delta V}ΔV0\Delta V \to 0 时: db=limΔV02QBΔV2VB=QBVBdVdb = \lim_{\Delta V \to 0} \frac{2 Q_B \Delta V}{2 V_B} = \frac{Q_B}{V_B} dV

综合兑换率 (Spot Price): 联立上述两式: db=QBVB(VAQAda)db = \frac{Q_B}{V_B} \cdot (\frac{V_A}{Q_A} da) 即瞬时兑换率: dbda=QBVBVAQA\frac{db}{da} = \frac{Q_B}{V_B} \cdot \frac{V_A}{Q_A}

因此,TTSWAP 的瞬时价格 (Spot Price) 为: SPTTSWAP=dadb=1QBVAVBQA=QAVBQBVASP_{TTSWAP} = \frac{da}{db} = \frac{1}{\frac{Q_B V_A}{V_B Q_A}} = \frac{Q_A V_B}{Q_B V_A}

3. 等价性对比

参数Balancer (加权池)TTSWAP (恒定价值)
权重定义权重 WiW_i市场价值 ViV_i
现货价格SP=QAWBQBWASP = \frac{Q_A \cdot W_B}{Q_B \cdot W_A}SP=QAVBQBVASP = \frac{Q_A \cdot V_B}{Q_B \cdot V_A}

结论 1 (Spot Price 等价性): 只要我们将 TTSWAP 中的市场价值 VV 视为 Balancer 中的权重 WW,两者的现货价格逻辑是完全等价的。 即: VAVB    WAWB\frac{V_A}{V_B} \iff \frac{W_A}{W_B}

4. 大额交易的曲线拟合

Balancer 的指数曲线具有恒定的弹性,而 TTSWAP 使用的是调和平均曲线 (双曲线的一种形式)。

虽然在大额交易 (Δa\Delta a 较大) 时,两者的滑点曲线会有微小差异,但数学性质高度一致:

  1. 凸性 (Convexity):两者都是凸函数,确保价格随着购买量的增加而增加 (滑点)。
  2. 渐近线:两者都存在渐近线,即无法买空池子。
  3. 计算复杂度
    • Balancer: 需要计算分数次幂 (xWA/WB)(x^{W_A/W_B}),链上实现复杂,消耗大量 Gas。
    • TTSWAP: 仅涉及加减乘除,Gas 消耗恒定且极低。

结论 2 (工程优势): TTSWAP 在保持与加权池相同的定价逻辑 (Spot Price) 和市场深度行为的同时,通过代数近似消除了指数运算,实现了 DeFi 协议中罕见的 O(1) 复杂度加权交易体验。这意味着它能以 Uniswap V2 级别的低 Gas 费,实现 Balancer 级别的多资产组合管理能力。

附录 D: Token 配置存储布局

为了极致的 Gas 优化,Token 配置采用如下位压缩结构 (256 bits):

Token Config Bit Layout

  • [1-128] 已占用,存储市场价值字段。
  • [129-177] 预留字段。
  • [178-256] 现使用配置字段。

市场可调整区 (Admin Config)

id配置项位数单位最大值最小值起始位结束位说明
1市场价值 Token1BOOLEAN10256256
2是否冻结1BOOLEAN10255255
3Token 投资者分佣3十分之一71252254
4代币运营者分佣4百分之二71248251
5门户分佣3百分之四71245247
6推荐者分佣5百分之一311240244
7用户分佣5百分之一311235239
8协议费率5百分之一311230234
9最大流动性加强倍数51 倍311225229
10是否申请11 倍11224224
...

备注:分佣比例之和为 100%。

用户可配置区 (User Config)

id配置项位数单位最大值最小值起始位结束位说明
1投资费率6万分之一630218223(0~63)/10000
2撤资费率6万分之一630212217(0~63)/10000
3购买费率7万分之一1270205211(0~127)/10000
4出售费率7万分之一1270198204(0~127)/10000
5流动性加强倍数51310187192(1~1023)
6撤资切片数10110230177186(1~1023)

(注:具体位偏移可能随合约版本升级微调,以链上代码为准)

附录 E: Token 投资与撤资详细计算流程

1. 初始状态设定

本案例旨在演示 LP 参与流动性投资与撤资的全生命周期计算。

1.1 代币当前状态 (Token State)

  • 市场价值 (VV): 40,000
  • 当前库存数量 (QQ): 20,000
  • 投资总数量 (II): 30,000
  • 投资总份额 (SS): 20,000
  • 流动性加强倍数: 5x(虚拟放大)

1.2 投资证明初始状态 (User Proof)

  • 投资价值: 0
  • 投资份额: 0
  • 投资数量: 0
  • 实际投入: 0

2. 投资流程 (Investment)

用户决定投入 200 个代币参与流动性提供。

步骤 1:计算虚拟投资数量 根据 5 倍加强倍数,协议将用户的实际投入映射为虚拟投资量: 虚拟投资量=200×5=1,000\text{虚拟投资量} = 200 \times 5 = 1,000

步骤 2:计算投资价值 根据当前市场价格 (V/QV/Q) 锁定投资时的价值: 投资价值=VQ×虚拟投资量=40,00020,000×1,000=2,000\text{投资价值} = \frac{V}{Q} \times \text{虚拟投资量} = \frac{40,000}{20,000} \times 1,000 = 2,000

步骤 3:计算获得份额 根据当前净值计算用户获得的 LP 份额: 新增份额=投资总份额投资总数量×虚拟投资量=20,00030,000×1,000667\text{新增份额} = \frac{\text{投资总份额}}{\text{投资总数量}} \times \text{虚拟投资量} = \frac{20,000}{30,000} \times 1,000 \approx 667

步骤 4:计算加强数量(虚拟部分) 加强数量=虚拟投资量实际投入=1,000200=800\text{加强数量} = \text{虚拟投资量} - \text{实际投入} = 1,000 - 200 = 800

步骤 5:更新系统状态

  • 市场价值: 40,000+2,00042,00040,000 + 2,000 \rightarrow 42,000
  • 当前库存: 20,000+1,00021,00020,000 + 1,000 \rightarrow 21,000(含虚拟增量)
  • 投资总数量: 30,000+1,00031,00030,000 + 1,000 \rightarrow 31,000
  • 投资总份额: 20,000+66720,66720,000 + 667 \rightarrow 20,667

步骤 6:更新用户证明

  • 投资价值: 2,000
  • 投资份额: 667
  • 投资数量: 1,000
  • 实际投入: 200

3. 市场变动 (State Transition)

假设一段时间后,因市场交易导致代币池状态发生变化(价格波动或手续费累积):

  • 市场价值: 42,000(不变)
  • 当前库存: 21,000 \rightarrow 24,000(增加)
  • 投资总数量: 31,000 \rightarrow 33,000(增加)
  • 投资总份额: 20,667(不变)

4. 撤资流程 (Divestment)

用户决定赎回 100 份 LP 份额。

步骤 1:计算当前应赎回数量 当前数量=投资总数量投资总份额×赎回份额=33,00020,667×100159.67\text{当前数量} = \frac{\text{投资总数量}}{\text{投资总份额}} \times \text{赎回份额} = \frac{33,000}{20,667} \times 100 \approx 159.67

步骤 2:计算原始投资本金 根据用户投资证明中的比例追溯原始投入: 原始数量=证明中投资数量证明中投资份额×赎回份额=1,000667×100150\text{原始数量} = \frac{\text{证明中投资数量}}{\text{证明中投资份额}} \times \text{赎回份额} = \frac{1,000}{667} \times 100 \approx 150

步骤 3:计算投资时的价值 原始价值=证明中投资价值证明中投资份额×赎回份额=2,000667×100300\text{原始价值} = \frac{\text{证明中投资价值}}{\text{证明中投资份额}} \times \text{赎回份额} = \frac{2,000}{667} \times 100 \approx 300

步骤 4:计算净收益 收益=当前数量原始数量=159.67150=9.67\text{收益} = \text{当前数量} - \text{原始数量} = 159.67 - 150 = 9.67

步骤 5:扣除虚拟加强部分 用户仅能提取实际资产,需扣除当初的虚拟放大额度: 扣除加强量=证明中加强数量证明中投资份额×赎回份额=800667×100120\text{扣除加强量} = \frac{\text{证明中加强数量}}{\text{证明中投资份额}} \times \text{赎回份额} = \frac{800}{667} \times 100 \approx 120

步骤 6:收益分配 (Fee Distribution) 假设 LP 分成比例为 70%,其余 30% 分配给平台、推荐人等角色: 用户净收益=总收益×70%=9.67×0.76.76\text{用户净收益} = \text{总收益} \times 70\% = 9.67 \times 0.7 \approx 6.76 分佣扣除=总收益×30%=9.67×0.32.90\text{分佣扣除} = \text{总收益} \times 30\% = 9.67 \times 0.3 \approx 2.90

步骤 7:计算实际到账 实际到账=当前数量扣除加强量分佣扣除=159.671202.90=36.77\text{实际到账} = \text{当前数量} - \text{扣除加强量} - \text{分佣扣除} = 159.67 - 120 - 2.90 = 36.77 (其中包含:本金部分 150120=30150-120=30,净收益部分 6.766.76

步骤 8:计算收益率 收益率=用户净收益实际本金=6.763022.5%\text{收益率} = \frac{\text{用户净收益}}{\text{实际本金}} = \frac{6.76}{30} \approx 22.5\%

步骤 9:更新系统状态 扣除相应的市场价值、库存和份额。

步骤 10:更新用户证明 从用户证明中扣除已赎回的份额和对应的价值、数量记录。

注意:协议设有"撤资切片 (Slicing)"保护机制。若单次撤资量超过总池的一定比例(如 1/10),交易将失败,以防止巨鲸砸盘引发市场剧烈波动。

附录 F: 代币兑换详细计算流程 (Token Swap)

1. 初始状态 (Initial State)

1.1 Token A (输入代币)

  • 市场价值 (VAV_A): 40,000
  • 当前库存 (QAQ_A): 20,000(单价 PA=2.0P_A = 2.0
  • 交易手续费率: 0.01%

1.2 Token B (输出代币)

  • 市场价值 (VBV_B): 20,000
  • 当前库存 (QBQ_B): 40,000(单价 PB=0.5P_B = 0.5
  • 交易手续费率: 0.01%

2. 交易输入计算 (Input Calculation)

用户输入 2,500 个 Token A 进行兑换。

步骤 1:扣除输入手续费 输入手续费=输入数量×费率=2,500×0.01%=0.25\text{输入手续费} = \text{输入数量} \times \text{费率} = 2,500 \times 0.01\% = 0.25 Δa(净输入)=2,5000.25=2,499.75\Delta a (\text{净输入}) = 2,500 - 0.25 = 2,499.75

步骤 2:计算转移价值 (Transfer Value) 根据核心公式计算 Token A 带来的价值增量 ΔV\Delta VΔV=2VAΔa2QA+Δa=240,0002,499.75220,000+2,499.754,705.4\Delta V = \frac{2 \cdot V_A \cdot \Delta a}{2 \cdot Q_A + \Delta a} = \frac{2 \cdot 40,000 \cdot 2,499.75}{2 \cdot 20,000 + 2,499.75} \approx 4,705.4


3. 交易输出计算 (Output Calculation)

步骤 3:计算理论输出数量 根据转移价值 ΔV\Delta V 计算应输出的 Token B 数量: Δbgross=2QBΔV2VB+ΔV=240,0004,705.4220,000+4,705.48,420.3\Delta b_{\text{gross}} = \frac{2 \cdot Q_B \cdot \Delta V}{2 \cdot V_B + \Delta V} = \frac{2 \cdot 40,000 \cdot 4,705.4}{2 \cdot 20,000 + 4,705.4} \approx 8,420.3

步骤 4:扣除输出手续费 输出手续费=Δbgross×费率=8,420.3×0.01%0.84\text{输出手续费} = \Delta b_{\text{gross}} \times \text{费率} = 8,420.3 \times 0.01\% \approx 0.84 Δbnet(用户实收)=8,420.30.84=8,419.46\Delta b_{\text{net}} (\text{用户实收}) = 8,420.3 - 0.84 = 8,419.46


4. 交易后状态更新 (Post-Trade Update)

4.1 Token A 更新

  • 市场价值: 40,000(不变)
  • 当前库存: 20,000+2,499.75+0.25=22,50020,000 + 2,499.75 + 0.25 = 22,500
  • 投资总数量: 30,000+0.25=30,000.2530,000 + 0.25 = 30,000.25(手续费归入池内)

4.2 Token B 更新

  • 市场价值: 20,000(不变)
  • 当前库存: 40,0008,420.3+0.84=31,580.5440,000 - 8,420.3 + 0.84 = 31,580.54
  • 投资总数量: 30,000+0.84=30,000.8430,000 + 0.84 = 30,000.84(手续费归入池内)

4.3 结果分析

  • 用户:支付 2,500 个 Token A,获得 8,419.46 个 Token B。
  • 协议:收取手续费 0.25 A + 0.84 B,分别累积到各自的 LP 池中,提升 LP 净值。
  • 价格影响:
    • Token A 价格:40,000/22,5001.7840,000 / 22,500 \approx 1.78(下跌)
    • Token B 价格:20,000/31,5800.6320,000 / 31,580 \approx 0.63(上涨)
    • 协议自动完成价格发现。

附录 G: Token 手续费详细计算与分配流程 (Fee Logic)

Alt text

1. 手续费的产生与累积 (Accumulation)

原理: 在 TTSWAP 中,每一笔交易产生的手续费(无论是输入侧的 Token A 还是输出侧的 Token B)都会直接保留在代币的当前库存 (QQ) 和投资数量 (II) 中,而不会改变代币的市场价值 (VV) 或 LP 的投资份额 (SS)。

公式Inew=Iold+FeeI_{new} = I_{old} + \text{Fee} Net Value (净值)=I+Accumulated FeesS\text{Net Value (净值)} = \frac{I + \text{Accumulated Fees}}{S}

  • 随着交易量的增加,Accumulated Fees\text{Accumulated Fees} 不断累积。
  • 因此,单位 LP 份额的净值会单调递增。

2. 动态演示 (Lifecycle Demo)

阶段 1:初始状态(图 1)

  • 用户尚未入场,系统内初始净值设为 1.5。

阶段 2:用户投资(图 2)

  • 用户存入资金,系统根据当前时刻的净值计算用户获得的份额。
  • Suser=用户投资量当前净值S_{user} = \frac{\text{用户投资量}}{\text{当前净值}}
  • 此时,用户持有的份额是固定的,但份额背后的价值随净值浮动。

阶段 3:价值增长(图 3)

  • 随着市场交易活跃,手续费不断注入资金池。
  • 结果:资金池的总代币数量 (QQ) 增加,但总份额 (SS) 保持不变(假设无存取款)。
  • 效应:净值上升,用户手中的每一份份额现在能兑换更多的代币。

阶段 4:用户撤资与分配(图 4)

  • 用户申请赎回份额。
  • 本金返还:系统首先计算并返还用户的原始本金。
  • 收益计算总收益=(赎回份额×当前净值)原始本金\text{��总收益} = (\text{赎回份额} \times \text{当前净值}) - \text{原始本金}
  • 分润执行:将计算出的总收益按照预设比例(如 LP 70%、平台 30%)进行实时分配。

通过这种机制,TTSWAP 实现了自动复利:LP 无需手动领取收益再质押,手续费直接留存在池内产生新的流动性,直到撤资时才进行结算。