【项目学习】Timeswap:第一个完全去中心化的基于 AMM 的货币市场协议
总览
Timeswap 是世界上第一个完全去中心化的基于 AMM 的货币市场协议,无需预言机或清算人即可工作。 Timeswap 采用 3 变量来维持 AMM 的运作。它通过允许用户决定他们的风险状况并相应地为每笔借贷交易设置利率和抵押品,允许任何人为任何 ERC-20 代币创建货币市场。
核心公式
X × Y × Z = K
X:本金相关
Y:利率相关
Z:抵押率相关
K:固定值

举例说明,初始化一个为期 6 个月的 DAI-ETH 币对池,投入本金 10,000 DAI,年利率15% 以及抵押率(CDP)为167%。
- X = 10000 DAI
- Y / X = 0.15 / 31556926 (一年 31556926 秒)
- Y = 0.0000475
- Z / X = 1.67
- Z = 16700 DAI,假设建立池子时的 1 ETH 价格为 4000 DAI,则 Z = 4.175ETH
- K = X * Y * Z = 10000 * 0.0000475 * 4.175 = 1.98


四种原生代币
每个 pool 有四种原生代币:3个ERC20,1个ERC721
分别是保险代币、债券代币、流动性代币以及REC721抵押债务代币
债券代币(Bond Token)
债券代币代表到期后对资产中资产的确切索取权,包括借款人偿还的资产。
债券代币基本上是本金加上到期后欠贷方的利息。Bond 代币的所有者可以在到期日之后销毁它们,以提取与 Principal 池中完全相同数量的基础资产代币。
保险代币(Insurance Token)
保险代币持有人在到期后获得借款人违约的抵押品的索赔,其金额等于保险上的债券代币未实现资产的百分比。贷款人持有的保险。
接受者是贷入资金池并选择获得保险的贷方。只有当 Bond 代币无法从本金池中提取相同数量的资产时,保险代币才有助于保护贷方。当本金池中的资产少于贷方持有的债券代币总数时,就会发生这种情况。保险代币的所有者可以在到期日之后销毁它,以提取与保险代币数量相同的百分比。
抵押债务代币(Collateralized Token)
抵押债务代币包含有关要支付的债务和借款人锁定的抵押物的信息
接受者是借款人。抵押债务代币的所有者可以在到期日之前支付标的比例债务时将其销毁以提取锁定的比例抵押品。例如,有一个用户拥有一个池的抵押债务代币将于 2021 年 12 月 30 日到期用 2 WETH 作为抵押品锁定 300 DAI 的债务。如果用户在 2021 年 12 月 30 日之前偿还了 300 个 DAI 债务,则用户可以销毁他/她的抵押债务代币以提取锁定的 2 个 WETH 作为抵押。如果用户没有偿还 300 DAI 的债务,抵押的债务代币将失去偿还债务的功能,因此用户将永远无法提取抵押的抵押品。
流动性代币
流动性代币赋予代币持有者对现有流动性的索取权,即在贷方的索取权实现后,本金池中的资产和锁定在抵押池中的抵押品
接受者是向池中添加流动性的流动性提供者。到期后,他们可以销毁流动性代币以从池中提取流动性。
角色
贷方
贷方使用该协议来收取在固定期限内借出代币的利息。他们还通过池的配对代币获得保险,这为债券代币中未实现的资产提供了成比例的保险 这明确地让每个贷方控制他或她想要承担的违约风险与他或她将获得的利息奖励.
放贷公式:
(X + x) * (Y - y) * (Z - z) = K

借款
他们使用该协议借用具有固定利息值和固定期限设置的代币。他们将抵押品的股份锁定在他们认为高于 AMM 得出的最低抵押品的任何数量。锁定的抵押品在债务存续期内永远不会被清算。借款人必须在到期前偿还债务才能收回抵押品,否则,他们的抵押品将分配给贷方。
借贷公式:
(X - x) * (Y + y) * (Z + z) = K

流动性提供者
流动性提供者是池的做市商。他们将代币添加到池中并同时进行借贷交易。他们根据池的交易数量和规模在贷方和借方之间赚取差价。它们有助于增加流动性,以促进贷方和借方之间的交易。
(X + x) * (Y + y) * (Z + z) = K , (x/X = y/Y = z/Z)
架构
主要分为核心合约和外部合约两部分,通过数据结构 Native 进行交互。

相关文档
- Timeswap Whitepaper
- Timeswap V1 Core Product Specification
- Timeswap V1 Convenience Product Specification
- Timeswap Gitbook Documentation
- Code Walkthrough
- 什么是抵押债务头寸 (CDP)?
【项目学习】Timeswap:第一个完全去中心化的基于 AMM 的货币市场协议的更多相关文章
- 一步步教你开发、部署第一个去中心化应用(Dapp) - 宠物商店
今天我们来编写一个完整的去中心化(区块链)应用(Dapps), 本文可以和编写智能合约结合起来看. 写在前面 阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么除此之 ...
- 去中心化存储项目终极指南 | Filecoin, Storj 和 PPIO 项目技术对比(下)
在上篇文章中,我们主要从价值定位.技术层次架构.服务质量.去中心化程度,和经济激励机制五个方面分析了三个项目的不同.在这一篇文章中,我们将着重从区块链的架构设计.数据传输技术设计和数据存储技术设计三方 ...
- 去中心化存储项目终极指南 | Filecoin, Storj 和 PPIO 项目异同
Filecoin,Storj 以及 PPIO 这三个存储公链的设计思路是不一样的,没有优劣之分,写这篇文章也并不是为了争论各项目的好坏对错.去中心化存储是一个长期商业赛道,不同团队在同一个赛道上往不同 ...
- 从零构建以太坊(Ethereum)智能合约到项目实战——第23章 从零构建和部署去中心化投票App,decentralization Voting Dapp
P90 .1-从零构建和部署去中心化投票App-01 P91 .2-从零构建和部署去中心化投票App-02 P92 .3-从零构建和部署去中心化投票App-03 参考博文:http://liyuech ...
- 去中心化预言机如何助力NGK DeFi 项目发展?
早在 2014 年前后,协议智能合约就已经出现了,最初协议很笨重,包含了许多不同的部分,每个部分都是一个单独的智能合约,你需要在区块链本身的协议中添加不同的智能合约,这需要几个月甚至几年的时间,而之后 ...
- NGK DeFi项目即将上线,打造去中心化闭环金融生态!
据最新官方消息称:NGK已于近日宣布将进军DeFi领域,NGK此次的DeFi的项目将会是一个去中心的交易平台,其最大的功能是进行数字货币的交换.在用户选择了需要支付的数字货币和想购买的数字货币后,系统 ...
- 谈互联网开放平台:“去中心化”大势所趋 zz
文/磐石之心 几天前与好友聊到众筹咖啡馆的事情,他向我讲述了一个非常具有特色的众筹咖啡馆案例.而这个案例也引发我对当前互联网开放.去中心和集权的一些思考,今天就简单写出来与大家分享. 一个无赚钱目的的 ...
- 为什么比特币和以太坊未必真得比EOS更去中心化?
在区块链行业里,有两派人一直在争论:一个是以比特币和以太坊为首的社群,另一个是以EOS为首的社群.这两群人一直在争论谁才是真正的未来,双方都认为自己这边更有未来.其中EOS抗争的重点就是100万TPS ...
- 去中心化存储的QoS是什么?
我的前面一篇文章讲到如何做去中化存储,文其中提到了QoS (Quality of Service),那么QoS是什么?为什么QoS那么重要?下面将详细描述. 什么是QoS? 提到QoS,就要先了解Qo ...
- 比特股-去中心化交易所, STEEM - 去中心化社区, EOS - 下一代智能合约
libsnark 是实现了 zkSNARK 模式的 C++ 库.zkSNARK 是一个证明/验证计算完整性的加密方法,也即零知识验证的算法, https://github.com/scipr-lab/ ...
随机推荐
- wordpress自建博客站,为文章添加显示浏览次数功能
wordpress自建博客站,为文章添加显示浏览次数功能 笔者使用的主题是 GeneratePress 版本:3.1.3 1.后台文章管理列表添加浏览次数列 效果如图: 实现: 编辑funct ...
- Java 中的异常处理机制的简单原理和应用。
Java 中的异常处理机制的简单原理和应用. 异常是指 java 程序运行时(非编译)所发生的非正常情况或错误. Java 对异常进行了分类,不同类型的异常分别用不同的 Java 类表示,所有异常的根 ...
- Windows和Linux系统下的Conda环境迁移
Motivation 大家在学习Python的过程中,可能经常会遇到下面两种情况: 同一份代码,别人配置conda环境可以跑通,但你配置了N天,还不知道哪一步出现了差错,仍然跑不通代码,conda ...
- #主席树,Dijkstra,哈希#CF464E The Classic Problem
题目 边权均为2的幂次的无向图,求 \(S\) 到 \(T\) 的最短路 \(n,m\leq 10^5\) 分析 最短路直接考虑用 Dijkstra,它需要维护松弛操作和堆, 那么也就是要重载加号和小 ...
- #dp,排列#LOJ 2743「JOI Open 2016」摩天大楼
题目 将互不相同的 \(n\) 个数重排,使得相邻两数差的总和不超过 \(L\) 的有多少种方式. \(n\leq 100,L\leq 1000\) 分析 对于排列的问题,有一种很妙的方法就是从小到大 ...
- #Trie#洛谷 7717 「EZEC-10」序列
题目 分析 考虑这些关系可以用若干个连通块表示,而可以用一个数异或边权表示, 那么每个连通块有一个生成树,而判断非树边是否合法即可, 那么问题就转换成有多少个数异或任意一个元素均不大于\(k\), 把 ...
- Python scipy.ndimage.find_objects用法及代码示例
用法 scipy.ndimage.find_objects(input, max_label=0) 在标记数组中查找对象. 参数: input: 整数数组 包含由不同标签定义的对象的数组.值为 0 的 ...
- HarmonyOS:使用MindSpore Lite引擎进行模型推理
场景介绍 MindSpore Lite是一款AI引擎,它提供了面向不同硬件设备AI模型推理的功能,目前已经在图像分类.目标识别.人脸识别.文字识别等应用中广泛使用. 本文介绍使用MindSpore ...
- 框架hash/history实现简单原理
1.hahs <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- vscode使用ES6装饰器器语法
1. react项目 配置 package.json 需要安装 npm i @babel/plugin-proposal-decorators 可能需要重启项目 { "babel" ...