📖TTSWAP 技术白皮书
7059 字约 24 分钟
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后,协议会根据投资价值自动为用户进行挖矿。支持ETH验证者质押
当用户提供流动性到SETH和SWETH代币时,池子中未使用的流动性会自动添加到rocketpool中进行验证者质押,享受验证者奖励.社区驱动 ttswap拥抱社区,通过社区驱动带动项目的改进,完善。
3 价值守恒交易横型原理
3.1 恒定价值交易协议
QaVa∗Δa=QbVb∗Δb=...交易前(Va+Vb+....+Vz)Va:表示协议中TokenAQa:表示协议中TokenAΔa:表示协议中TokenAVb:表示协议中TokenBQb:表示协议中TokenBΔb:表示协议中TokenBVz:表示协议中TokenZQz:表示协议中TokenZΔz:表示协议中TokenZ=QzVz∗Δz=交易后(Va+Vb+....+Vz)的市场价值的数量的购买量或者出售量的市场价值的数量的购买量或者出售量的市场价值的数量的购买量或者出售量
市场价值是衡量用户对于协议中Token的需求程度。用户出售Token,说明对于协议中的Token需求下降,那此Token的市场价值下降。用户购买Token,说明对于协议量的Token需求上升,那此Token的市场价值上升。
3.1.1 计算逻辑
- 交易前Tokena, Tokenb, 状态
平台中a的市场价值平台中a的Token数量平台中b的市场价值平台中b的Token数量:Va:Qa:Vb:Qb
现在使用Δa购买到Δb后平台中Token状态
Δa的市场价值平台中a的市场价值平台中a的Token数量平台中b的市场价值平台中b的Token数量获得Δb:QaVa∗Δa:Va−QaVa∗Δa:Qa+Δa:Vb+QaVa∗Δa:Qb−VbQaVa∗Δa∗Qb=VbQaVa∗Δa∗Qb
3.2 Token的市场价值
当Token添加到协议时,此时的Token的市场价值与Token的真实价值相同。 例:在协议中添加有2000个Tokena1,由于此时的真实价值是2000,那么这个Token的市场价值2000。
定义: 市场价值Va1:2000 Token数量Qa1:2000 单位价值Pa1:1,单位数量的市场价值
3.3 协议中的Token与用户买卖行为的关系
- 例1:用户花费价值1000购买,购买了Tokena。
用户购买,说明Token的市场价值V增加。Va1=2000+1000=3000
用户购买,协议中Token数量Q减少。Qa1=2000-1000=1000
协议中Token的单位价值P发生变化成 Pa1=3
用户购买,导致Token的单位价值上升
- 例2:用户出售价值1000购买,购买了Tokena。
用户出售,说明Token的市场价值V减少。Va2=2000-1000=1000
用户出售,协议中Token数量Q增加。Qa2=2000+1000=3000
协议中Token的单位价值P发生变化 Pa2=0.3333
用户出售,导致Token的单位价值下降
展示如下图
3.4 协议中用户行为与Token状态的关系
用户出售与购买,Token的商场价值V与Token数量Q发生变化,Token的单位价值也发生相应变化,Token的市场价值V与Token数量Q的变化如图
3.5 协议中两种物品的关系
协议中有两种Token,Tokena(2000,4000),Tokenb(4000,2000)。
- 用户使用500Tokena,对于的市场价值为1000。市场价值为1000对应的1000个Tokenb。
当用户购买500个Tokena,就要花费1000个Tokenb,协议中的Token在图中A位置会位移到a1的位置,B会位移到b1的位置。
当用户出售500个Tokena,就能得到1000个Tokenb,协议中的Token在图中A位置会位移到a2的位置,B会位移到b2的位置。
因为位置发生变化,P(A)与P(B)也发生变化,Tokenb相对Tokena的单位价值也会发生变化,如果与市场外部单位价值有差异,就会有其它交易促进市场价格与市场外部价格统一。
备注:如果购买数量占协议中数据比例过大,会造成两Token的相对价格发生强烈波动,因此每个交易会拆分为多个小单进行交易
3.6 协议中多种Token的关系
任意两种Token因为用户交易,造成位置的变化,也会造成这两种Token与其它Token对对位置变化,产生价格的同步变化。
3.7 协议中Token每次交易大小与价格的关系
现场中Token数量为100 000 000 ,市场价值为100 000 000。
交易大小 | 价格变化 |
---|---|
10 | 0.000000200000 |
50 | 0.000001000000 |
100 | 0.000002000002 |
500 | 0.000010000050 |
1000 | 0.000020000200 |
5000 | 0.000100005000 |
10000 | 0.000200020002 |
50000 | 0.001000500250 |
100000 | 0.002002002002 |
500000 | 0.010050251256 |
1000000 | 0.020202020202 |
5000000 | 0.105263157895 |
3.8 无滑点阈值(简称交易阈值)
为避免用户交易造成协议Token被挤兑。每个Token在初始化时会设置切分数,每份大小即为这个Token的无滑点阈值。因此当用户交易时,如果交易价值小于Token无滑点阈值,无无常损失。如果交易大于Token无滑点阈值。交易会以阈值为单位,拆分成交。
4 Token
4.1 Token介绍
关于Token的描述:协议拥有市场价值3000的15枚Tokena,那么Token就有两个属性:市场价值与当前数量。如下图
- 名词解释
**市场价值:**用来衡量用户对协议Token的需求程度的。
如果用户购买某个Token,说明用户对这个Token的需求增加,那么这个Token的市场价值就会上升。相反,如果用户开始卖出某个Token,说明用户对这个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 | 预留 | 28 | 1 | 1023 | 0 | 2 | 27 | 预留字段 |
... |
4.3.2 用户可以配置
id | 配置项 | 位数 | 单位 | 最大值 | 最小值 | 起始位 | 结束位 | 说明 |
---|---|---|---|---|---|---|---|---|
1 | 闪电货费率 | 6 | 万分之一 | 63 | 0 | 28 | 33 | 闪电货费率 |
2 | 投资费率 | 6 | 万分之一 | 63 | 0 | 34 | 39 | (0~63)/10000 |
3 | 撤资费率 | 6 | 万分之一 | 63 | 0 | 40 | 45 | (0~63)/10000 |
4 | 购买费率 | 7 | 万分之一 | 127 | 0 | 46 | 52 | (0~127)/10000 |
5 | 出售费率 | 7 | 万分之一 | 127 | 0 | 53 | 59 | (0~127)/10000 |
6 | 交易切片数 | 10 | 64 | 1023 | 0 | 60 | 69 | (1~1023)X64 |
7 | 撤资切片数 | 10 | 1 | 1023 | 0 | 70 | 79 | (1~1023) |
5 Token交换
Token的交换实际上就是用户用自己手里的Tokena去交换市场上的Tokenb。当用户选择放弃Tokena时,这表明市场上Tokena的价值降低,因为用户不再需要它。而当用户选择购买Tokenb时,这意味着Tokenb的价值上升,因为用户希望得到它。
如图所示,当用户放弃Tokena时,协议中的Tokena数量增加,而Tokena的市场价值降低。
而当用户获得Tokenb时,协议中的Tokenb数量减少,而Tokenb的市场价值增加。
这就导致了相对于Tokena,Tokenb的价格上升。因此,如果再次进行交易,用相同数量的Tokena只能换取比上次少一些的Tokenb。
5.1 计算过程
QaVa∗Δa交易前PabΔb=Qa∗VbVa∗Δa∗QbVa=Va−QaVa∗ΔaQa=Qa+ΔaVb=Vb+QbVb∗ΔbQb=Qb+Δb交易后Pabtext实际计算中涉及Token切分,具体参见智能合约=QbVb∗Δb=Qa∗VbVa∗Qb=4=20000∗2000040000∗2500∗40000=10000=40000−2000040000∗2500=35000=20000+2500=22500=20000+4000020000∗10000=25000=40000−10000=30000=Qa∗VbVa∗Qb=1.86666
6 Token投资与撤资
6.1 记录投资和撤资
协议中Token的交易,需有用户提供流动性。就应记录Token投资总市场价值与投资总数量。
- 名词解释
投资价值:用户投资时Token的市场总价值。
投资数量:用户投资时Token的总数量。
6.2 价值Token投资与撤资流程

- 用户投资价值Token 用户根据当前价值Token的状态,计算投资数量对应的市场价值。方便撤资时计算收益。
- 用户撤资价值Token
用户根据投资记录,计算投资产生的收益
撤资Token时,取消数量<Token当前的总数量/撤资切片数 和 取消数量对应的市场价值<Token总价值/撤资切片数。
6.3 普通Token投资

- 用户投资普通Token
由于普通Token的市场价值波动太大,可能会导致协议内套利,造成Token投资者的损失。为避免这种情况的发生,需要投资等市场价值的价值Token。投资的价值Token和普通Token都会产生投资收益,具体参见手续费分配。
6.4 普通Token撤资

用户撤资普通Token
根据投资记录,计算普通Token和投资Token的收益。具体参见手续费分配。
撤资Token时,取消数量或者取消数量对应的市场价值需要小于Token当前的总数量或者总价值除以最大撤资比例。
7 Token手续费
当用户进行交易,投资时均会产生手续费,这部份手续存储于池子中,当用户移出流动性时,会触发手续费分配。
7.1 Token手续费记录方式

- 名词解释 费用总额=实际产生的手续费汇总+构建手续费汇总 构建手续费=计算用户投资产生的利润而引入虚拟手续费,不实际发生的手续费。具体参见7.4与7.5。
7.2 手续费来源
手续费(实际手续费)的来源是根据Token的费率,当用户进行操作时,计算得到。
7.3 手续费分配
协议中涉及协议技术、门户运营、推荐人、用户以及流动性提供者。协议会合理分配利润。
其中流动性提供者的手续费分配参见 7.4与7.5手续费流程
如果用户填写了推荐者。
按用户的相关角色进行实时分配。如果用户未填写推荐者。
手续费分配中用户所占比例划归于代币管理员。
手续费分配中推荐者所占比例划归于门户角色。
7.4 手续费计算流程(投资)

图1 用户投资前Token状态 单位手续费指单位投资应该得到多少手续费,单位手续费=手续费总额/总投资数量; 随着交易的进行,手续费不断产生,手续费总额增加,单位手续费就增加。 构建手续费提用户开始投资时,为记录用户不应该享受的手续费总额。 构建手续费=投资数量X投资时单位手续费
图2 用户投资后手续费积累增加 当协议中不停有手续费产生时,单位手续费会不停增加。 用户投资产生的收益=单位手续费x投资数量-构建手续费。
图3 个人在Token上的多笔投资 当用户在同一下Token上,进行多笔投资,可以合成同一条投资记录。 合并后的构建手续费=合并前的构建手续费汇总 手户投资产生的收益=单位手续费x投资数量-汇总后的构建手续费
图4 个人在Token上多笔投资进行合并 该图展示合并后的投资情况
图5 多人在Token上的投资 当多个用户进行投资时,就可以汇总成这个Token总投资数量,总投资市场价值,总构建手续费。 该Token当前总共实际投资利润=当前总费用-汇总构建手续费。
图6 多人在Token上的投资进行合并
7.5 手续费计算流程(撤资)

- 图1 个人Token投资(此图表示如果提供流程性时无无常损失) 此图是个人在此Token的投资情况,当用户进行撤资时,计算逻辑: Token当前单位手续费=Token当前手续费总额/Token当前投资数量 撤资时构建手续费=构建手续费X(撤资数量/用户投资总量) 当用户撤资时,获得利润= 当前单位手续费X撤资数量-撤资时构建手续费
- 图2 Token总投资 在Token减去用户撤资时的计算逻辑: Token当前手续费总额=原Token当前手续费总额-用户撤资时利润-撤资时构建手续费 Token构建手续费=Token构建手续费-撤资时构建手续费 Token投资数量=原Token投资数量-用户撤资数量
7.6 Token福利
项目方或者卖家可以充值Token到手续费中,提升投资年化,增强投资吸引力。
8 流动性挖矿
协议中所有代币会自动进行二次挖矿,根据给代币添加流动性时的价值,折算成算力. a. 用户把任意代币存入代币池子 b. 用户享受池子产生的手续费返佣 c. 用户享受流动性挖矿TTS代币
9 一次质押ETH,五份收益原理
协议中的SETH和SWETH两种代币分别对应ETH和WETH,同时这两个代币支持未使用流动性的再质押,提升收益.如下图 a. 用户可以质押ETH到SETH池子或者质押WETH到SWETH池子 b. 用户享受池子产生的手续费返佣 c. 用户享受流动性挖矿TTS代币 d. 协议会使用池子中未使用流动性,存入rocketpool进行ETH验证者挖矿. e. rocketpool返还年化(3%-5%)验证者奖励给质押者. f. 协议会自动把rocketpool返还reth代币质押到reth池子中. g. 用户会得到reth池子的手续费返佣. h. 用户会得到提供流动性reth时挖矿tts代币.
10 市场配置
id | 配置项 | 位数 | 单位 | 最大值 | 最小值 | 起始位 | 结束位 | 说明 |
---|---|---|---|---|---|---|---|---|
1 | Token投资者分佣 | 6 | 百分之一 | 63 | 0 | 256 | 251 | |
2 | 商家分佣 | 6 | 百分之一 | 63 | 0 | 250 | 245 | |
3 | 门户分佣 | 6 | 百分之一 | 63 | 0 | 244 | 239 | |
4 | 推荐者分佣 | 6 | 百分之一 | 63 | 0 | 238 | 233 | |
5 | 用户分佣 | 6 | 百分之一 | 63 | 0 | 232 | 227 | |
6 | 协议费率 | 6 | 百分之一 | 63 | 0 | 226 | 221 | |
... |
11 主要代码实现(参见代码)
11.1 合约部署GAS
Deployment Cost | Deployment Size |
---|---|
5644297 | 26543 |
11.2 合约函数(部份主要函数)GAS
Function Name | first | second or more | 备注 |
---|---|---|---|
buyGood(NativeETH) | 104056 | 86942 | 购买Token |
buyGood(ERC20) | 112715 | 95615 | 购买Token |
disinvestProof | 255412 | 198512 | 撤资普通证明 |
disinvestProof | 176765 | 129300 | 撤资价值证明 |
initGood | 399488 | 初始化普通Token | |
investGood | 172331 | 114339 | 投资普通Token |
investGood | 242021 | 114414 | 投资价值Token |
collectProof | 238070 | 80158 | 获取普通投资证明收益 |
collectProof | 140453 | 103453 | 获取价值投资证明收益 |
warefare | 69462 | 52362 | 增加手续费发福利 |
当第用户第一次交易一个Token时,GAS费消耗在MEDIAN,用户第二次或者后续交易这个Token时GAS消耗一般在MIN。
为促进项目更好成长,为维护项目支持者的利益,现推出以下代币方案。
12 协议中角色说明
协议中提供对于5种角色的支持,包含:代币管理员、代币流动性提供者、服务提供者、推荐者、用户、社区。
12.1 代币管理员
当用户在平台首次添加代币时,用户就成为这代币的管理员,相当于社区委托用户进行代币相关运营。享受该手续费1%-3%的分佣。非项目亲自运营的代币委托2年评估一次。
12.2 代币流动性提供者
当用户给代币提供流程动性时,自动成为代币的流动性提供者,共同享受手续费的50%-80%的分佣。计算方式参见手续费计算逻辑小节。
12.3 服务提供者
为用户的提供交易,投资等服务的服务提供商,可享受手续费的5%到25%的分佣。
12.4 推荐者
当用户推荐其它用户,就可以享受被推荐人的手续费的5%-10的分佣。
12.5 用户
当用户添加推荐人后,享受10%的手续费折扣。
12.6 社区
社区提供技术支持,可享受手续费的2%-8%的手续费分佣。
13 代币经济方案
- 代币名称为,简称。
- 初始发行()。
- 每年新增(2亿-已解锁代币数量)* 0.02给流动性提供者。
- 社区所有收益均用于在市场上购买官方代币进行销毁。禁止用于其它用途。
- 社区的建设者、运营者、支持者等代币持有者收益均来至代币价值上涨,而不是通过稀释,超发等方式获取收益。
- 关于代币的社区分配变动均需提前30天以上公示。
- 代币持有者拥有提案,和提案的投票权,参与社区的成长建设。
- 推荐关系均维护在本代币中,推荐关系一但确认,就无法修改。同时本项目后续版本均使用本推荐关系。
13.1 初始代币分配原则
- 分配时需配置解锁比例(不能高于20%)和初始价格(不能低于当前价格),当价格涨一倍,用户才可以解锁剩余部份X解锁比例。 例如分配给A用户20000枚,解锁比例为18%,分配时价格为0.05。 当价格达到0.05时才能解锁20,000*0.18枚。当价格达到0.1时才能解锁20,000*0.18*0.18枚。
- 促进建设者更聚焦于长期利益。代币价格上涨一倍,创建始人解锁比例 < 合伙人解锁比例 < 价值贡献解锁比例 < 资本贡献解锁比例 <= 20%。
13.2 4C成长型社区代币治经济协议
4C成长型社区代币角色分为四类:创始人、合伙人、价值贡献、资本贡献。
13.2.1 创始人部份
创始人部份作为项目发起人提供大量的人力资本,用以开发产品、创立品牌、拓展市场、招募人才、建立管理制度,同时并承担了巨大的失败风险而享受的待遇。(初始价格为0.05,价格上涨一倍,解锁比例1/12)
13.2.2 合伙人部份
合伙人部份作为项目发起初期,在没有资源的情况下,需要充分利用自己团队的强大的执行力,去克服各种困难,一起坚持并坚信把社区做大做好做强的成员享受的待遇。
合伙人部份A类型 初始价格为成员加入时确认。代币价格上涨一倍解锁剩余比例为1/10。未解锁部份不因离开社区而销毁。
合伙人部份B类型 初始价格为成员加入时确认。代币价格上涨一部解锁剩余比例的1/8。未解锁部份会因离开社区而销毁。
13.2.3 价值贡献
社区为给社区建设的成员提供激励进行代币预分配,初始价格为分配时价格,价格上涨一部解锁比例不高于1/6,根据具体情况与相应人员进行约定与公示,已分配未解锁部份社区会根据达成效果而调整。当成员不在为社区服务时,已分配未解锁部份会被社区回收。
社区岗位部份: 岗位部份由担承社区重要职位的重要程度而决定,这部分分给社区重要职位对应负责人,重要职位对应的比例由每年初的社区确定。社区对于重要职位的合格、优秀的负责人经过社区决策后可转一定比例为合伙人部份A类型和合伙人部份B类型。
社区成员部份: 激励成员为社区一起成长而预留部分。社区对于优秀成员经过社区决策后可转一定比例为合伙人部分B类型。
其它部份: 金库、运营、活动、顾问等用途使用。
13.2.4 资本贡献
解锁比例不高于1/5
公售部份(参见公售方案): 为团队建设、产品建设、流动性建设提供资金支持。(公售部份全部为解锁状态,不进行锁定)
投资部份: 为团队精进,产品完善等提供资金支持。关于初始价格与解锁比例沟通中确定。
空投部份: 为弥补协议早期用户风险。关于初始价格与解锁比例根据具体活动方案而定。
13.3 4C成长型社区代币分配细则设计

13.4 权利
- 代币持有者拥有社区所有决定的知情权。
- 代币持有者拥有社区所有行为的监督权。
- 代币持有者拥有提案的投票权。
- 持有一定数量的代币持有者拥有提案权。
14 法律许可
14.1 说明
为了维护项目正常权利,同时也方便其它用户了解协议,对于不同文件不同开源协议。违反协议将得到法律追究。
14.2 协议说明
采用MIT协议的文件供大家自由使用
采用BUSL-1.1协议的文件才协议有效期内只能用户于学习目标,不能运用于商业用途。具体协议内容参见:
项目中LICENSE文件:https://github.com/tt-swap/ttswap-core/blob/529db0eb94ac1c5631beb03c4697222a6ce1cd79/LICENSE
如因项目在未知的情况违反其它项目开源协议,及时联系我们,我们尽快调整。
14.3 文件开源协议信息
Contract
├── TTSwap_Market.sol(BUSL-1.1)
├── TTSwap_Token.sol(BUSL-1.1)
├── TTSwap_StakeETH.sol(BUSL-1.1)
├── interfaces
│ ├── I_TTSwap_Market.sol(MIT)
│ ├── I_TTSwap_Token.sol(MIT)
│ └── I_TTSwap_StakeETH.sol(MIT)
└── libraries
├── L_Currency_Stake.sol (MIT)
├── L_Currency.sol (MIT)
├── L_Error.sol (MIT)
├── L_Good.sol(BUSL-1.1)
├── L_GoodConfig.sol(MIT)
├── L_MarketConfig.sol(MIT)
├── L_Proof.sol(BUSL-1.1)
├── L_SignatureVerification.sol(MIT)
├── L_Transient_Stake.sol (MIT)
├── L_Transient.sol (MIT)
├── L_TTSTokenConfig.sol (MIT)
├── L_TTSwapUINT256.sol (MIT)
└── L_UserConfig.sol(MIT)
docs
├── ebook
├── whitepaper-cn
│ └──whitepaper-cn.pdf(BUSL-1.1)
└── whitepaper-en
└──whitepaper-en.pdf(BUSL-1.1)
tests
15 参与和合作联系方式
Twitter:ttswap_exchange
Telegram:@ttswap01
Email:ttswap.exchange@gmail.com
Discord:ttswap
Website:ttswap.io
欢迎来自各个地区的人才加入社区