📖TTSWAP 技术白皮书
TTSWAP 是一个去中心化的代币交易平台,任何人都可以快速、安全地将一种代币兑换为另一种,无需依赖中心化交易所。
1 概要
TTSWAP(token-token swap)是建立在支持EVM的区块链上的自动做市协议,意味着它不依赖于中心化的机构或个人来进行交易。它的核心原理是根据用户的行为,自动触发市场价值的转移,形成新的价格,从而构建了一个基于恒定价值交易的自动做市协议。
白皮书解释TTSWAP的设计逻辑,涵盖以下几个方面:
- Token交易:用户使用Token直接换取任何Token,而不需要通过其他中间Token中转。
- 价值Token投资与撤资:用户可以投资特定的价值Token,并在需要时撤回他们的投资。
- 普通Token投资与撤资:除了价值Token外,用户也可以投资普通Token,并随时撤回他们的投资。
- Token手续费的产生与分配:在交易过程中产生的手续费会按照一定的规则进行分配,以激励更多的人参与到这个协议中来。
- 代币经济协议:以维护所有代币持有者(普通用户 、市场推广者、服务提供者、社区建设者等)的权益为宗旨的目标下,设计的代币分配,解锁细则,与代币持有者的权利。
总之,TTSWAP为普通用户提供了一个简单、透明、高效的加密货币交易协议,这个协议使用的是一个革新地AMM逻辑——恒定价值交易协议。旨在打造一个方便、安全、低GAS费用的协议。 同时TTSWAP社区也期望打造公平,公正,透明的去中心化社区。
2 特点
-
恒定价值交易协议
这个协议的核心思想是确保交易的价值在整个过程中保持恒定,这意味着无论交易何时进行,都能客观地反映出币种的市场价值,这可让Token自由、简单、快速地交易。 -
集中流动性,直接交易
无需在多个传统币对中添加,只需要给协议中代币添加流动性,流动性能与协议中其它任何代币共享,用户直接兑换代币,避免流动性碎片化,提升了交易体验。 -
流动性放大
根据代币稳定性,动态设置流动放大倍数,用户使用提供一份流动性,实际产生多倍流动性的效果,获得多倍收益。 -
低滑点交易
滑点是指在交易过程中由于市场价格波动导致的交易价格偏离预期的现象。在这个协议中,通过流动性增强和集中流动性,显著降低交易滑点。 -
没有无常损失
无常损失是指流动性提供者在提供流动性时因市场波动而遭受的损失。这个交易协议通过其设计逻辑上避免了无常损失的问题,这意味着流动性提供者或者Token投资者在撤资时可以保持原有投资的价值,并且还能获得提供流动性所产生的收 益。 -
低Gas费用
Gas费用是在以太坊网络上执行智能合约时需要支付的费用。由于这个交易协议的逻辑相对简单且运算量较少,因此Gas消耗较低,用户在交易过程中可以节省大量的Gas费用,让交易更加经济高效。相比于其他交易协议,可以节省50%至90%的Gas费用。 -
手续费按角色分配
在协议上,手续费根据参与者的不同角色进行分配,这包括商家(Token卖家)、Token投资者(流动性提供者)、门户、推荐者和普通用户。任何人都有机会参与到协议的运作中,并分享协议发展所带来的收益,从而激励更多的用户参与到协议建设中。 -
native ETH支持
协议中支持Native ETH直接兑换成任何代币。 -
投资证明二次TTS挖矿
当用户投资了Token后,协议会根据投资价值自动为用户进行挖矿。 -
价格导向型代币经济模型
TTS代币采用创新的价格导向型解锁模型,通过价格翻倍解锁机制和社区盈利销毁,确保代币价值与项目发展紧密绑定。同时,通过差异化的解锁规则,激励不同角色为生态做出贡献,实现多方共赢。
3 价值守恒交易横型原理
3.1 恒定价值交易协议
参数说明:
| 符号 | 含义 |
|---|---|
| 协议中 Token A 的市场价值 | |
| 协议中 Token A 的数量 | |
| 协议中 Token A 的购买量或出售量 | |
| 协议中 Token B 的市场价值 | |
| 协议中 Token B 的数量 | |
| 协议中 Token B 的购买量或出售量 | |
| 协议中 Token Z 的市场价值 | |
| 协议中 Token Z 的数量 | |
| 协议中 Token Z 的购买量或出售量 |
交换原因是数量与价值不匹配,通过市场手段自动匹配
3.2 推导过程
3.2.1 计算输入数量ΔA对应 的价值
交换前的单位价值(把拆成份,取Δa份):
交换后的单位价值(把拆成+Δa份,取Δa份):
对前后价值取调合平均:(通过调合平均数计算)
因此Δa对应的价值ΔV:
3.2.2 计算价值ΔV对应的数量
交换前的单位价值(把拆成份,取ΔV份):
交换后的单位价值(把拆成+ΔV份,取ΔV份):
对前后价值取调合平均:(通过调合平均数计算)
因此ΔV对应的数量Δb:
3.3 在相同价值的情况下(=)
等价于
3.1.3 交易后更新代币A和B的价值与数量
| 价值 | ||
| 数量 |
3.1.4:交易后形成新的兑换比例
- 交易完成后,新的边际价值:
- 新的兑换比例:
4 Token
4.1 Token介绍
关于Token的描述:协议拥有市场价值3000的15枚,那么Token就有三个基础属性:市场价值,当前数量,投资数量。如下图
- 名词解释
市场价值:用来衡量代币的市场价值,代币的市场价值在交易过程不发生变化。
当前数量:记录协议中Token的当前数量和代币产生的手续费。
投资数量:记录协议中Token的总投资数量和代币产生的手续费。
当用户认为代币的价值偏低(即市场价值/当前数量),用户会购入此代币.
当用记认为代币的价值低高(即市场价值/当前数量),用户会出售此代币.
可以如下图描述其它任何Token,例如.

4.2 Token分类
| Token分类 | 说明 | 交易是否产生手续费 | 是否可以单独投资自己 | 是否可以与其它价值Token一同投资 |
|---|---|---|---|---|
| 元Token | 协议中添加的首个Token | 是 | 是 | 否 |
| 价值Token | Token得到市场认可,有良好的生态及团队 | 是 | 是 | 否 |
| 普通Token | 个人新增Token,市场价值待确认 | 是 | 否 | 是 |
4.3 Token配置
Token配置占255位
4.3.1 市场可以调整
| id | 配置项 | 位数 | 单位 | 最大值 | 最小值 | 起始位 | 结束位 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | 市场价值Token | 1 | BOOLEAN | 1 | 0 | 1 | 1 | |
| 2 | 是否冻结 | 1 | BOOLEAN | 1 | 0 | 2 | 2 | |
| 3 | Token投资者分佣 | 3 | 十分之一 | 7 | 1 | 3 | 5 | |
| 4 | 代币运营者分佣 | 4 | 百分之二 | 7 | 1 | 6 | 9 | |
| 5 | 门户分佣 | 3 | 百分之四 | 7 | 1 | 10 | 12 | |
| 6 | 推荐者分佣 | 5 | 百分之一 | 31 | 1 | 13 | 17 | |
| 7 | 用户分佣 | 5 | 百分之一 | 31 | 1 | 18 | 22 | |
| 8 | 协议费率 | 5 | 百分之一 | 31 | 1 | 23 | 27 | |
| 9 | 最大流动性加强倍数 | 6 | 1倍 | 63 | 1 | 28 | 33 | |
| ... |
备注:分佣比例的和为100
4.3.2 用户可以配置
| id | 配置项 | 位数 | 单位 | 最大值 | 最小值 | 起始位 | 结 束位 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | 投资费率 | 6 | 万分之一 | 63 | 0 | 34 | 39 | (0~63)/10000 |
| 2 | 撤资费率 | 6 | 万分之一 | 63 | 0 | 40 | 45 | (0~63)/10000 |
| 3 | 购买费率 | 7 | 万分之一 | 127 | 0 | 46 | 52 | (0~127)/10000 |
| 4 | 出售费率 | 7 | 万分之一 | 127 | 0 | 53 | 59 | (0~127)/10000 |
| 5 | 流动性加强倍数 | 10 | 20 | 1023 | 0 | 64 | 69 | (1~1023) |
| 6 | 撤资切片数 | 10 | 1 | 1023 | 0 | 70 | 79 | (1~1023) |
5 Token交换
Token的交换实际上就是用户用自己手里的去交换市场上的。当用户选择放弃时,这时就计算的市场价值,从而选择购买等市场价值的时.

如图所示,当用户放弃时,协议中的数量增加,而的单位价值降低。
而当用户获得时,协议中的数量减少,而的单位价值增加。
这就导致了相对于,的价格上升。因此,如果再次进行交易,用相同数量的只能换取比上次少一些的。
5.1 计算过程
5.1.1 计算对应的市场价值
5.1.2 计算等市场价值的Token b
5.1.3 结果

收取用户1个 ,2个作为手续费,用户花费(2500+1)个,获得(8420.9-2)个 .
5.2 关于合约 验证
5.2.1 验证1:公平性
用户使用 购买 后,再使用购买到的再到协议中能购买到最初数量的
参见 modified_swap_without_fee
测试合约地址(https://github.com/ttswap/ttswap-core/blob/5326e7cef7305d00fe9b909064113becc58968bd/test/modified_swap_without_fee.sol)
5.2.2 验证2:合理性
用户购买时,分多笔订单与一次性成交的结果是一致的.
参见 modified_swap_without_fee
测试合约地址(https://github.com/ttswap/ttswap-core/blob/5326e7cef7305d00fe9b909064113becc58968bd/test/modified_swap_without_fee.sol)
5.2.3 验证3:连接性
用户使用a个 购买 ,再使用获得购买 ,再使用获得的 购买 .最终得到 = 最初花费
参见 modified_swap_without_fee:testswapA2B_part1 testswapA2B_part1 测试合约地址
6 Token投资与撤资
6.1 记录投资和撤资
协议中Token的交易,需有用户提供流动性。就应记录Token投资总市场价值与投资总数量。

- 名词解释
投资价值:用户投资时Token的市场总价值。
投资数量:用户投资时Token的总数量。
6.2 Token投资与撤资流程

- 用户投资价值Token 用户根据当前价值Token的状态,计算投资数量对应的市场价值。方便撤资时计算收益。
- 用户撤资价值Token
用户根据投资记录,计算投资产生的收益
撤资Token时,取消数量<Token当前的总数量/撤资切片数 和 取消数量对应的市场价值<Token总价值/撤资切片数。
7.1 Token手续费记录方式
手续费=每次交易产生的手续费都会记录到代币的当前数量和投资数量中去
7.2 手续费来源

手续费(实际手续费)的来源是根据Token的 费率,当用户进行操作时,计算得到。
7.3 手续费分配

协议中涉及协议技术、门户运营、推荐人、用户以及流动性提供者。协议会合理分配利润。
其中流动性提供者的手续费分配参见 7.4与7.5手续费流程
-
如果用户填写了推荐者。
按用户的相关角色进行实时分配。 -
如果用户未填写推荐者。
手续费分配中用户所占比例划归于代币管理员。
手续费分配中推荐者所占比例划归于门户角色。
7.4 手续费计算流程(投资与撤资)

-
图1 用户投资前Token状态 净值指每一份对应的代币数量,净值=(投资总数+手续费)/总份额; 随着交易的进行,手续费不断产生,手续费总额增加,净值就增加。
-
图2 用户开始投资 协议根据用户投资的数量,计算应得的投资份额。 用户投资份额=(用户投资数量)/净值。
-
图3 随着代币不断流通,不停有手续费收益 由 于手续费的不断增加,导致净值在不断上升
-
图4 用户撤资 用户撤资时,协议计算用户的收益与本金后,一同发放给用户.
7.6 Token福利
项目方或者卖家可以充值Token到手续费中,提升投资年化,增强投资吸引力。

8 流动性挖矿
协议中所有代币会自动进行二次挖矿,根据给代币添加流动性时的价值,折算成算力.
a. 用户把任意代币存入代币池子
b. 用户享受池子产生的手续费返佣
c. 用户享受流动性挖矿TTS代币
9 主要代码实现(参见代码)
9.1 合约部署GAS
| Deployment Cost | Deployment Size |
|---|---|
| 5644297 | 26543 |
9.2 合约函数(部份主要函数)GAS
| Function Name | avg | 备注 |
|---|---|---|
| buyGood(NativeETH) | 81190 | 购买Token |
| buyGood(ERC20) | 89761 | 购买Token |
| disinvestProof | 164402 | 撤资 |
| initGood | 376985 | 初始化Token |
| investGood | 153945 | 投资Token |
| goodWelfare | 52396 | 增加手续费发福利 |
10 协议中角色说明
协议中提供对于5种角色的支持,包含:代币管理员、代币流动性提供者、服务提供者、推荐者、用户、社区。
10.1 代币管理员
当用户在平台首次添加代币时,用户就成为这代币的管理员,相当于社区委托用户进行代币相关运营。享受该手续费1%-3%的分佣。非项目亲自运营的代币委托2年评估一次。
10.2 代币流动性提供者
当用户给代币提供流程动性时,自动成为代币的流动性提供者,共同享受手续费的50%-80%的分佣。计算方式参见手续费计算逻辑小节。
10.3 服务提供者
为用户的提供交易,投资等服务的服务提供商,可享受手续费的5%到25%的分佣。
10.4 推荐者
当用户推荐其它用户,就可以享受被推荐人的手续费的5%-10的分佣。