楼主: v_tg_ch3nguang
202 1

[程序化交易] 海外版量化合约/秒合约/合约量化/永续合约/交易所系统开发(多语言)及源码功能 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

28%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
13.2510
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
893 点
帖子
66
精华
0
在线时间
50 小时
注册时间
2023-9-2
最后登录
2023-12-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

在Web2的世界中,应用程序通过提供免费服务获取用户数据,然后垄断这些数据以获取利润并建立自己的业务。数据存储在他们的中央服务器上,外界无法访问。无法知道存储了哪些数据,以及以何种方式和粒度存储。此外,如果这些应用程序受到攻击或主动终止其服务,用户的数据将在一夜之间丢失。但是,以区块链技术为底层Web3框架,链上数据公开、透明、不可篡改,实现了用户的独立性和安全性。
  打破数据孤岛并提高互操作性。
  使用Web2,用户每次使用新应用程序时都必须完成注册过程。这是因为每个应用程序都有自己独立的数据库,无法连接到其他应用程序。用户数据是碎片化的,无法跨平台复用或整合。在Web3的世界里,用户只需要一个地址就可以访问和使用各种去中心化应用;该地址的每一笔链上交易都可以使用相应的数据。应用程序权限是不必要的。
  通过代币经济更好地分配价值。
  数据创造的价值如何分配给产生它的个人,是Web3需要回答的一个重要问题。目前看来,不断发展的通证经济才是实现价值再分配的核心路径。
core偏核心逻辑,单个swap的逻辑。periphery偏外围服务,一个个swap的基础上构建服务。单个swap,两种代币形成的交易对,俗称“池子”。每个交易对有一些基本属性:reserve0/reserve1以及total supply。reserve0/reserve1是交易对的两种代币的储存量。total supply是当前流动性代币的总量。每个交易对都对应一个流动性代币(LPT - liquidity provider token)。简单的说,LPT记录了所有流动性提供者的贡献。所有流动性代币的总和就是total supply。Uniswap协议的思想是reserve0*reserve1的乘积不变。
Periphery逻辑
核心逻辑实现在UniswapV2Router02.sol中。称为Router,因为Periphery实现了“路由”,支持各个swap之间的连接。基本上实现了三个功能:1/ add liquidity(增加流动性)2/remove liqudity (抽取流动性) 3/ swap(交换)。

提供流动性的相反的操作就是抽取流动性。也就是说,流动性提供者不再提供相应的流动性:
functionremoveLiquidity(addresstokenA,addresstokenB,
uintliquidity,
uintamountAMin,
uintamountBMin,addressto,
uintdeadline【更全面的开发源码搭建可看我昵称】
)publicvirtualoverrideensure(deadline)returns(uintamountA,uintamountB){
liquidity是抽取的流动性的量。amountMin是抽取代币的最小的个数。to是抽取代币的目标地址。deadline是个有意思的设计:抽取的操作有时效性。超过了一定的deadline(区块高度),这次抽取操作看成无效。

swap是普通用户进行代币交易的操作。普通用户通过swap操作实现两种token之间的交易。
function swapExactTokensForTokens(
uintamountIn,
uintamountOutMin,
address[]calldatapath,addressto,
uintdeadline
) external virtual override ensure(deadline) returns (uint[] memory amounts) {
Uniswap支持多种代币的交换。具体的含义是,Uniswap提供了多级交易池的路由功能。举个例子,已有两个交易对TokenA-TokenB,以及TokenB-TokenC,通过swap接口,可以实现TokenA-TokenC的交换,其中经过的TokenA-TokenB,TokenB-TokenC,称为路径(path)。amountIn是路径中的第一个代币的数量,amountOutMin是期望的交换后的最少的数量。
amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);【更全面的开发源码搭建可看我昵称】
require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
amounts是每个路径上的交换后的数量。amounts[amounts.length-1]也就是最后一条路径的输出数量。注意,UniswapV2Library.getAmountsOut的实现(在获取每个交易对的reserve信息后,调用getAmountOut函数):


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:海外版 交易所 Insufficient sufficient Liquidity 海外版量化合约

沙发
晏几道 发表于 2023-10-25 10:38:40 |只看作者 |坛友微信交流群
学习一下

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 15:16