跳到主要内容

📖TTSWAP 技术白皮书

TTSWAP 是一个去中心化的代币交易平台,任何人都可以快速、安全地将一种代币兑换为另一种,无需依赖中心化交易所。


1 概要

TTSWAP(token-token swap)是建立在支持EVM的区块链上的自动做市协议,意味着它不依赖于中心化的机构或个人来进行交易。它的核心原理是根据用户的行为,自动触发市场价值的转移,形成新的价格,从而构建了一个基于恒定价值交易的自动做市协议。

白皮书解释TTSWAP的设计逻辑,涵盖以下几个方面:

  1. Token交易:用户使用Token直接换取任何Token,而不需要通过其他中间Token中转。
  2. 价值Token投资与撤资:用户可以投资特定的价值Token,并在需要时撤回他们的投资。
  3. 普通Token投资与撤资:除了价值Token外,用户也可以投资普通Token,并随时撤回他们的投资。
  4. Token手续费的产生与分配:在交易过程中产生的手续费会按照一定的规则进行分配,以激励更多的人参与到这个协议中来。
  5. 代币经济协议:以维护所有代币持有者(普通用户、市场推广者、服务提供者、社区建设者等)的权益为宗旨的目标下,设计的代币分配,解锁细则,与代币持有者的权利。

总之,TTSWAP为普通用户提供了一个简单、透明、高效的加密货币交易协议,这个协议使用的是一个革新地AMM逻辑——恒定价值交易协议。旨在打造一个方便、安全、低GAS费用的协议。 同时TTSWAP社区也期望打造公平,公正,透明的去中心化社区。

2 特点

  1. 恒定价值交易协议
    这个协议的核心思想是确保交易的价值在整个过程中保持恒定,这意味着无论交易何时进行,都能客观地反映出币种的市场价值,这可让Token自由、简单、快速地交易。

  2. 集中流动性,直接交易
    无需在多个传统币对中添加,只需要给协议中代币添加流动性,流动性能与协议中其它任何代币共享,用户直接兑换代币,避免流动性碎片化,提升了交易体验。

  3. 流动性放大
    根据代币稳定性,动态设置流动放大倍数,用户使用提供一份流动性,实际产生多倍流动性的效果,获得多倍收益。

  4. 低滑点交易
    滑点是指在交易过程中由于市场价格波动导致的交易价格偏离预期的现象。在这个协议中,通过流动性增强和集中流动性,显著降低交易滑点。

  5. 没有无常损失
    无常损失是指流动性提供者在提供流动性时因市场波动而遭受的损失。这个交易协议通过其设计逻辑上避免了无常损失的问题,这意味着流动性提供者或者Token投资者在撤资时可以保持原有投资的价值,并且还能获得提供流动性所产生的收益。

  6. 低Gas费用
    Gas费用是在以太坊网络上执行智能合约时需要支付的费用。由于这个交易协议的逻辑相对简单且运算量较少,因此Gas消耗较低,用户在交易过程中可以节省大量的Gas费用,让交易更加经济高效。相比于其他交易协议,可以节省50%至90%的Gas费用。

  7. 手续费按角色分配
    在协议上,手续费根据参与者的不同角色进行分配,这包括商家(Token卖家)、Token投资者(流动性提供者)、门户、推荐者和普通用户。任何人都有机会参与到协议的运作中,并分享协议发展所带来的收益,从而激励更多的用户参与到协议建设中。

  8. native ETH支持
    协议中支持Native ETH直接兑换成任何代币。

  9. 投资证明二次TTS挖矿
    当用户投资了Token后,协议会根据投资价值自动为用户进行挖矿。

  10. 价格导向型代币经济模型
    TTS代币采用创新的价格导向型解锁模型,通过价格翻倍解锁机制和社区盈利销毁,确保代币价值与项目发展紧密绑定。同时,通过差异化的解锁规则,激励不同角色为生态做出贡献,实现多方共赢。

3 价值守恒交易横型原理

3.1 恒定价值交易协议

根据输入数量计算价值:ΔV=2VAΔa2QA+Δa根据价值计算输出数量:Δb=2QBΔV2VB+ΔV代币恒定价值:交易前价值V=交易后价值V\begin{align} \text{根据输入数量计算价值:} \\ \Delta V &= \frac{2*V_A \cdot \Delta a}{2*Q_A + \Delta a} \\ \text{根据价值计算输出数量:} \\ \Delta b &= \frac{2*Q_B \cdot \Delta V}{2*V_B + \Delta V} \\ \text{代币恒定价值:} \\ \text{交易前价值V}&=\text{交易后价值V} \end{align}

参数说明:

符号含义
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 的购买量或出售量
VzV_z协议中 Token Z 的市场价值
QzQ_z协议中 Token Z 的数量
Δz\Delta z协议中 Token Z 的购买量或出售量

交换原因是数量与价值不匹配,通过市场手段自动匹配

3.2 推导过程

3.2.1 计算输入数量ΔA对应的价值

交换前的单位价值(把VAV_A拆成QAQ_A份,取Δa份):

V1=VAQAV_1 = \frac{V_A }{Q_A}

交换后的单位价值(把VAV_A拆成QaQ_a+Δa份,取Δa份):

V2=VAQA+ΔaV_2 = \frac{V_A}{Q_A + \Delta a}

对前后价值取调合平均:(通过调合平均数计算)

V=11V1+1V22=1QAVA+QA+ΔaVA2=2QA+QA+ΔaVA=2VA2QA+ΔaV = {\frac{1}{\frac{\frac{1}{V_1}+\frac{1}{V_2}}{2}}}=\frac{1}{\frac{\frac{Q_A }{V_A}+\frac{Q_A + \Delta a}{V_A}}{2}}=\frac{2}{\frac{Q_A+Q_A+ \Delta a}{V_A}} =\frac{2*V_A}{2*Q_A+\Delta a}

因此Δa对应的价值ΔV:

ΔV=2VAΔa2QA+ΔaΔV=\frac{2*V_A*\Delta a}{2*Q_A+\Delta a}

3.2.2 计算价值ΔV对应的数量

交换前的单位价值(把QBQ_B拆成VBV_B份,取ΔV份):

Q1=QBVBQ_1 = \frac{Q_B}{V_B}

交换后的单位价值(把QBQ_B拆成VBV_B+ΔV份,取ΔV份):

Q2=QBVB+ΔVQ_2 = \frac{Q_B}{V_B + \Delta V}

对前后价值取调合平均:(通过调合平均数计算)

Q=11Q1+1Q22=1VBQB+VB+ΔVQB2=2VB+VB+ΔVQB=2QB2VB+ΔVQ = {\frac{1}{\frac{\frac{1}{Q_1}+\frac{1}{Q_2}}{2}}}=\frac{1}{\frac{\frac{V_B }{Q_B}+\frac{V_B + \Delta V}{Q_B}}{2}}=\frac{2}{\frac{V_B+V_B+ \Delta V}{Q_B}} =\frac{2*Q_B}{2*V_B +\Delta V}

因此ΔV对应的数量Δb:

Δb=QΔV=2QBΔV2VB+ΔVΔb=Q*\Delta V=\frac{2*Q_B*\Delta V}{2*V_B+\Delta V}

3.3 在相同价值的情况下(VAV_A=VBV_B)

Δb=QBQA+ΔaΔaΔb = \frac{Q_B}{Q_A + Δa} \cdot Δa

等价于

(x+Δa)(yΔb)=xyΔb=yxyx+ΔaΔb=y(x+Δa)x+Δaxyx+ΔaΔb=yΔax+Δa(x+Δa)(y-Δb)=xy \\ Δb=y-\frac{xy}{x+Δa} \\ Δb=\frac{y*(x+Δa)}{x+Δa}-\frac{xy}{x+Δa}\\ Δb=\frac{y*Δa}{x+Δa}\\

3.1.3 交易后更新代币A和B的价值与数量

TokenAToken_ATokenBToken_B
价值VAV_AVBV_B
数量QA+ΔaQ_A + ΔaQBΔbQ_B - Δb

3.1.4:交易后形成新的兑换比例

  • 交易完成后,新的边际价值:
PAnew=VAQA+Δa,PBnew=VBQBΔbP_A^{\text{new}} = \frac{V_A}{Q_A + Δa} \quad , \quad P_B^{\text{new}} = \frac{V_B}{Q_B - Δb}
  • 新的兑换比例:
Rab=PAnewPBnewR_{a \to b} = \frac{P_A^{\text{new}}}{P_B^{\text{new}}}

4 Token

4.1 Token介绍

关于Token的描述:协议拥有市场价值3000的15枚TokenAToken_A,那么Token就有三个基础属性:市场价值,当前数量,投资数量。如下图

Alt text

  • 名词解释
    市场价值:用来衡量代币的市场价值,代币的市场价值在交易过程不发生变化。
    当前数量:记录协议中Token的当前数量和代币产生的手续费。
    投资数量:记录协议中Token的总投资数量和代币产生的手续费。
    当用户认为代币的价值偏低(即市场价值/当前数量),用户会购入此代币.
    当用记认为代币的价值低高(即市场价值/当前数量),用户会出售此代币.

可以如下图描述其它任何Token,例如.

Alt text

4.2 Token分类

Token分类说明交易是否产生手续费是否可以单独投资自己是否可以与其它价值Token一同投资
元Token协议中添加的首个Token
价值TokenToken得到市场认可,有良好的生态及团队
普通Token个人新增Token,市场价值待确认

4.3 Token配置

Token配置占255位

4.3.1 市场可以调整

id配置项位数单位最大值最小值起始位结束位说明
1市场价值Token1BOOLEAN1011
2是否冻结1BOOLEAN1022
3Token投资者分佣3十分之一7135
4代币运营者分佣4百分之二7169
5门户分佣3百分之四711012
6推荐者分佣5百分之一3111317
7用户分佣5百分之一3111822
8协议费率5百分之一3112327
9最大流动性加强倍数61倍6312833
...

备注:分佣比例的和为100

4.3.2 用户可以配置

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

5 Token交换

Token的交换实际上就是用户用自己手里的TokenAToken_A去交换市场上的TokenBToken_B。当用户选择放弃TokenAToken_A时,这时就计算TokenAToken_A的市场价值,从而选择购买等市场价值的TokenBToken_B时.

token swap image

如图所示,当用户放弃TokenAToken_A时,协议中的TokenAToken_A数量增加,而TokenAToken_A的单位价值降低。
而当用户获得TokenBToken_B时,协议中的TokenBToken_B数量减少,而TokenBToken_B的单位价值增加。
这就导致了相对于TokenAToken_ATokenBToken_B的价格上升。因此,如果再次进行交易,用相同数量的TokenAToken_A只能换取比上次少一些的TokenBToken_B

5.1 计算过程

5.1.1 计算TokenAToken_A对应的市场价值

价值(RV)=2VAΔa2QA+Δa价值(RV)=2400002500220000+2500价值(RV)=4705.8\begin{align} 价值(RV)&={2* V_A *Δa\over {2* Q_A+{Δa}}} \\ 价值(RV)&={2* 40000 *2500\over {2*20000+{2500}}} \\ 价值(RV)&=4705.8 \\ \end{align}

5.1.2 计算等市场价值的Token b

数量Δb=2QBRV2VB+RV数量Δb=2400004705.8220000+4705.8数量Δb=8420.9\begin{align} 数量Δb&= {2* Q_B*RV\over {2* V_B+{RV}}} \\ 数量Δb&= {2*40000*4705.8}\over {2*20000+4705.8} \\ 数量Δb&=8420.9 \\ \end{align}

5.1.3 结果

alt text
收取用户1个TokenAToken A ,2个TokenBToken B作为手续费,用户花费(2500+1)个TokenAToken A,获得(8420.9-2)个 TokenBToken B.

5.2 关于合约 验证

5.2.1 验证1:公平性

用户使用 TokenAToken_A 购买 TokenBToken_B 后,再使用购买到的TokenBToken_B再到协议中能购买到最初数量的TokenAToken_A

参见 modified_swap_without_fee

测试合约地址
(https://github.com/ttswap/ttswap-core/blob/5326e7cef7305d00fe9b909064113becc58968bd/test/modified_swap_without_fee.sol)

5.2.2 验证2:合理性

用户购买TokenBToken_B时,分多笔订单与一次性成交的结果是一致的.

参见 modified_swap_without_fee

测试合约地址
(https://github.com/ttswap/ttswap-core/blob/5326e7cef7305d00fe9b909064113becc58968bd/test/modified_swap_without_fee.sol)

5.2.3 验证3:连接性

用户使用a个 TokenAToken_A 购买 TokenBToken_B,再使用获得TokenBToken_B购买 TokenCToken_C,再使用获得的 TokenCToken_C购买 TokenAToken_A.最终得到 TokenAToken_A = 最初花费TokenAToken_A

参见 modified_swap_without_fee:testswapA2B_part1 testswapA2B_part1 测试合约地址

6 Token投资与撤资

6.1 记录投资和撤资

协议中Token的交易,需有用户提供流动性。就应记录Token投资总市场价值与投资总数量。

Alt text

  • 名词解释
    投资价值:用户投资时Token的市场总价值。
    投资数量:用户投资时Token的总数量。

6.2 Token投资与撤资流程

Alt text

  • 用户投资价值Token 用户根据当前价值Token的状态,计算投资数量对应的市场价值。方便撤资时计算收益。
  • 用户撤资价值Token
    用户根据投资记录,计算投资产生的收益

撤资Token时,取消数量<Token当前的总数量/撤资切片数 和 取消数量对应的市场价值<Token总价值/撤资切片数。

7.1 Token手续费记录方式

手续费=每次交易产生的手续费都会记录到代币的当前数量和投资数量中去

7.2 手续费来源

Alt text

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

7.3 手续费分配

Alt text

协议中涉及协议技术、门户运营、推荐人、用户以及流动性提供者。协议会合理分配利润。
其中流动性提供者的手续费分配参见 7.4与7.5手续费流程

  • 如果用户填写了推荐者。
    按用户的相关角色进行实时分配。

  • 如果用户未填写推荐者。
    手续费分配中用户所占比例划归于代币管理员。
    手续费分配中推荐者所占比例划归于门户角色。

7.4 手续费计算流程(投资与撤资)

Alt text

  • 图1 用户投资前Token状态 净值指每一份对应的代币数量,净值=(投资总数+手续费)/总份额; 随着交易的进行,手续费不断产生,手续费总额增加,净值就增加。

  • 图2 用户开始投资 协议根据用户投资的数量,计算应得的投资份额。 用户投资份额=(用户投资数量)/净值。

  • 图3 随着代币不断流通,不停有手续费收益 由于手续费的不断增加,导致净值在不断上升

  • 图4 用户撤资 用户撤资时,协议计算用户的收益与本金后,一同发放给用户.

7.6 Token福利

项目方或者卖家可以充值Token到手续费中,提升投资年化,增强投资吸引力。

alt text

8 流动性挖矿

协议中所有代币会自动进行二次挖矿,根据给代币添加流动性时的价值,折算成算力.

alt text a. 用户把任意代币存入代币池子 b. 用户享受池子产生的手续费返佣 c. 用户享受流动性挖矿TTS代币

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

9.1 合约部署GAS

Deployment CostDeployment Size
564429726543

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

Function Nameavg备注
buyGood(NativeETH)81190购买Token
buyGood(ERC20)89761购买Token
disinvestProof164402撤资
initGood376985初始化Token
investGood153945投资Token
goodWelfare52396增加手续费发福利

10 协议中角色说明

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

10.1 代币管理员

当用户在平台首次添加代币时,用户就成为这代币的管理员,相当于社区委托用户进行代币相关运营。享受该手续费1%-3%的分佣。非项目亲自运营的代币委托2年评估一次。

10.2 代币流动性提供者

当用户给代币提供流程动性时,自动成为代币的流动性提供者,共同享受手续费的50%-80%的分佣。计算方式参见手续费计算逻辑小节。

10.3 服务提供者

为用户的提供交易,投资等服务的服务提供商,可享受手续费的5%到25%的分佣。

10.4 推荐者

当用户推荐其它用户,就可以享受被推荐人的手续费的5%-10的分佣。

10.5 用户

当用户添加推荐人后,享受10%的手续费折扣。

10.6 社区

社区提供技术支持,可享受手续费的2%-8%的手续费分佣。

11 代币经济方案

  1. 代币名称为TTSWAP Token,简称TTS。
  2. 初始发行五千万枚。(均为锁定状态,需达到条件才能解锁)。
  3. 每年新增(2亿-已解锁代币数量)* 0.02给流动性提供者。
  4. 社区所有收益均用于在市场上购买官方代币进行销毁。禁止用于其它用途。
  5. 社区的建设者、运营者、支持者等代币持有者收益均来至代币价值上涨,而不是通过稀释,超发等方式获取收益。
  6. 关于代币的社区分配变动均需提前30天以上公示。
  7. 代币持有者拥有提案,和提案的投票权,参与社区的成长建设。
  8. 推荐关系均维护在本代币中,推荐关系一但确认,就无法修改。同时本项目后续版本均使用本推荐关系。

11.1 初始代币分配原则

  1. 分配时需配置解锁比例(不能高于12.5%)和初始价格(不能低于当前价格),当价格涨一倍,用户才可以解锁剩余部份X解锁比例。 例如分配给A用户20000枚,解锁比例为10%,分配时价格为0.05。 当价格达到0.05时才能解锁20,000*0.10枚。当价格达到0.1时才能解锁20,000*0.10*0.10枚。
  2. 促进建设者更聚焦于长期利益。代币价格上涨50%,创建始人解锁比例 < 合伙人解锁比例 < 价值贡献解锁比例 < 资本贡献解锁比例 < 12.5%。

11.2 4C成长型社区代币治经济协议

4C成长型社区代币角色分为四类:创始人、合伙人、价值贡献、资本贡献。

11.2.1 创始人部份

解锁比例不高于1/20((初始价格为0.05,涨1000倍解锁36.9%)

创始人部份作为项目发起人提供大量的人力资本,用以开发产品、创立品牌、拓展市场、招募人才、建立管理制度,同时并承担了巨大的失败风险而享受的待遇。

11.2.2 合伙人部份

解锁比例不高于1/14(涨400倍解锁44.7%)

合伙人部份作为项目发起初期,在没有资源的情况下,需要充分利用自己团队的强大的执行力,去克服各种困难,一起坚持并坚信把社区做大做好做强的成员享受的待遇。

  1. 合伙人部份A类型 初始价格为成员加入时确认。代币价格上涨一倍解锁剩余比例为1/16。未解锁部份不因离开社区而销毁。(涨600倍解锁44.1%)

  2. 合伙人部份B类型 初始价格为成员加入时确认。代币价格上涨一部解锁剩余比例的1/14。未解锁部份会因离开社区而销毁。(涨400倍解锁44.7%)

11.2.3 价值贡献

解锁比例不高于1/12,涨200倍,解锁50.1%

社区为给社区建设的成员提供激励进行代币预分配,初始价格为分配时价格,价格上涨一部解锁比例不高于1/12,根据具体情况与相应人员进行约定与公示,已分配未解锁部份社区会根据达成效果而调整。当成员不在为社区服务时,已分配未解锁部份会被社区回收。

  1. 社区岗位部份: 岗位部份由担承社区重要职位的重要程度而决定,这部分分给社区重要职位对应负责人,重要职位对应的比例由每年初的社区确定。社区对于重要职位的合格、优秀的负责人经过社区决策后可转一定比例为合伙人部份A类型和合伙人部份B类型。

  2. 社区成员部份: 激励成员为社区一起成长而预留部分。社区对于优秀成员经过社区决策后可转一定比例为合伙人部分B类型。

  3. 其它部份: 金库、运营、活动、顾问等用途使用。

11.2.4 资本贡献

解锁比例不高于1/8,涨100倍,解锁60%

  1. 公售部份(参见公售方案): 为团队建设、产品建设、流动性建设提供资金支持。(公售部份全部为解锁状态,不进行锁定)

  2. 投资部份: 为团队精进,产品完善等提供资金支持。关于初始价格与解锁比例沟通中确定。

  3. 空投部份: 为弥补协议早期用户风险。关于初始价格与解锁比例根据具体活动方案而定。

11.3 4C成长型社区代币分配细则设计

Alt text

11.4 权利

  1. 代币持有者拥有社区所有决定的知情权。
  2. 代币持有者拥有社区所有行为的监督权。
  3. 代币持有者拥有提案的投票权。
  4. 持有一定数量的代币持有者拥有提案权。

12 法律许可

12.1 说明

为了维护项目正常权利,同时也方便其它用户了解协议,对于不同文件不同开源协议。违反协议将得到法律追究。

12.2 协议说明

采用MIT协议的文件供大家自由使用
采用BUSL-1.1协议的文件才协议有效期内只能用户于学习目标,不能运用于商业用途。具体协议内容参见:
项目中LICENSE文件:https://github.com/tt-swap/ttswap-core/blob/529db0eb94ac1c5631beb03c4697222a6ce1cd79/LICENSE
如因项目在未知的情况违反其它项目开源协议,及时联系我们,我们尽快调整。

12.3 文件开源协议信息

src
├── TTSwap_Market.sol(BUSL-1.1)
├── TTSwap_Token.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

13 参与和合作联系方式

Twitter:ttswapfinance
Telegram:@ttswapfinance
Email:bussiness@ttswap.io
Discord:ttswap
Website:ttswap.io

欢迎来自各个地区的人才加入社区