当前位置: 首页 > news >正文

香港域名注册网站免费推广的网站有哪些

香港域名注册网站,免费推广的网站有哪些,网页设计与制作微课教程第4版答案,折页彩页设计Uniswap是一个开源的去中心化的交易所,在github上面有以下重要仓库: uniswap-v2-core: 币对池pair的核心智能合约。这个repository包含了Uniswap的币对池pair的所有核心逻辑,增加流动性、减少流动性等。uniswap-v2-periphery&…

Uniswap是一个开源的去中心化的交易所,在github上面有以下重要仓库:

  • uniswap-v2-core: 币对池pair的核心智能合约。这个repository包含了Uniswap的币对池pair的所有核心逻辑,增加流动性、减少流动性等。
  • uniswap-v2-periphery:这个repository包含了Uniswap V3的所有周边智能合约。这些合约提供了与核心合约交互的附加功能,例如多次跨路径交易和非fungible流动性。
  • uniswap-interface:这是Uniswap的主要前端接口。它是一个开源的Web应用程序,允许用户直接与Uniswap协议进行交互,可以直接用于做客户端
  • uniswap-v3-sdk:这些开发工具包用于帮助开发者构建自己的客户端应用程序,从而与 Uniswap 智能合约进行交互。
  • uniswap-v3-subgraph:这是Uniswap V3的子图项目,用于从以太坊区块链上获取和索引 Uniswap V3 的数据。开发者可以通过 GraphQL API 从子图中查询 Uniswap 的数据,以便在自己的应用程序中使用。

  

一、AMM交易机制

不同于传统订单薄的交易模式, uniswap交易使用的是恒定乘积公式的自动做市商模式。即交易前后,池子内一对代币的乘积保持不变。

   

 在uniswap v2中,每次会收取0.3%的手续费,即p = 0.003,这笔手续费从交易者的x'中扣除分发给流动性提供者。因此,只有x' *(1-p)的A数量来兑换y'数量的B。剩下p * x'会作为手续费被添加到池子中,此时,上面的等式会变为:

二、 合约设计

  • RouterContract:路由合约,对外提供api的合约。主要包括注入流动性、移除流动性、兑换等
    • addLiqudity(token0, token1, amount0, amount1):币对(token0和token1)的金额,进过计算后,会转入到pair的地址里; pair合约同时会计算出持有代币,转入到msg.sender地址里。
    • removeLiqudity(token0, token1, liqudity):先把msg.sender地址里的pair持有代币,转回给pair地址; 调用pair地址的burn方法,按token0、token1总量比例,得到各自的amount;把token0和token1的转amount0和amount1到msg.sender地址
    • swapToken:   
  • UniswapV2Library:工具库合约,主要提供根据factory地址计算池地址、币对token总量等
  • UniswapV2Factory:币对工厂合约,主要在合约内运行时,部署若干新的UniswapPair合约实例,并得到地址
  • UniswapPair:币对的ERC20代币合约。每个部署实例,都对应1个币对;币对供应量增加,它会mint增加总量;反之,会burn减少总量

   

三、SDK设计

Uniswap SDK 是一个同构 (Isomorphic) 的库,既可以在客户端使用也可以在服务端使用。SDK不能代表用户执行或发送交易,它提供了实用的类和函数,帮助计算出安全地与 Uniswap 交互所需要的数据。

  • Token:用于构建token实例
  • Pair:获取Pair相关信息
  • Route:创建交易路径。 前端计算得出,比如[token0, token1],是可以直接作为交易路径;还是要因为没有这个币对池,要用[token0, token2], [token2, token0]作交易路径
  • Trade:构建交易,且用于计算出交易的数据,比如期望交易输出
  • Percent/Fraction: 百分比、有理数等, 都是数字类抽象,帮助计算的
// swapExactETHForTokens
import { ChainId, Token, Fetcher, Pair, TokenAmount, Route, Trade, TradeType, Percent } from '@uniswap/sdk'
import { ethers } from 'ethers'
import 'dotenv/config'// 构建client,包括provider、account
const rpcurl = `https://rinkeby.infura.io/v3/${process.env.INFURA_PROJECT_ID}`;
const provider = new ethers.providers.JsonRpcProvider(rpcurl);
const signer = new ethers.Wallet(process.env.PRIVATE_KEY);
const account = signer.connect(provider);// 构建token0、token1
const WETH = new Token(ChainId.RINKEBY, '0xc778417E063141139Fce010982780140Aa0cD5Ab', 18);
const LINK = new Token(ChainId.RINKEBY, '0x01BE23585060835E02B77ef475b0Cc51aA1e0709', 18);const uniV2ABI = ['function swapExactETHForTokens(uint amountOutMin, address[] calldata path, \address to, uint deadline) external payable returns (uint[] memory amounts)'];
const uniswapContract = new ethers.Contract('0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D', uniV2ABI, account);
const run = async () => {// 获取币对池信息const pair = await Fetcher.fetchPairData(LINK, WETH, provider);// 构建交易路径const route = new Route([pair], WETH);console.log(route.midPrice.numerator.toString());console.log(route.midPrice.denominator.toString());console.log('WETH-LINK', route.midPrice.toSignificant(6));// 1 LINK = ??? WETHconsole.log(route.midPrice.invert().numerator.toString());console.log(route.midPrice.invert().denominator.toString());console.log('LINK-WETH', route.midPrice.invert().toSignificant(6));// 构建交易const trade = new Trade(route, new TokenAmount(WETH, ethers.utils.parseEther('0.003')), TradeType.EXACT_INPUT);console.log(trade.executionPrice.toSignificant(6));const slippageTolerance = new Percent('50', '10000');const amountOutMin = trade.minimumAmountOut(slippageTolerance).raw;const path = [WETH.address, LINK.address];const to = '0x...' // PRIVATE_KEY's Address, 或者随便一个地址用来接收const deadline = Math.floor(Date.now() / 1000) + 60 * 20 // 20 minutes from the current Unix timeconst value = trade.inputAmount.raw;console.log(value.toString())// 调用合约方法,进行兑换交易const tx = await uniswapContract.swapExactETHForTokens(amountOutMin.toString(), path, to, deadline, {value: value.toString(),// maxFeePerGas: ethers.utils.parseUnits('2','gwei'),// maxPriorityFeePerGas: ethers.utils.parseUnits('2','gwei'),});console.log(`Transaction hash: ${tx.hash}`);const receipt = await tx.wait();console.log(receipt);}

http://www.hkea.cn/news/26012/

相关文章:

  • 泰安网站建设公司排名石家庄最新消息
  • 域名只做邮箱没网站要备案吗常见的网络推广方式包括
  • 昆山建设局网站360搜索首页
  • 正常做网站多少钱无锡网站制作无锡做网站
  • php做网站csdn网站seo公司哪家好
  • 今日头条建站工具何鹏seo
  • wordpress 培训模板优化落实疫情防控新十条
  • 关于做外汇现货的网站太原整站优化排名外包
  • 星悦做任务网站是新网站百度收录
  • 十大营销网站seo关键词查询工具
  • 怎么查询网站所有关键词靠谱的广告联盟
  • 超酷的网站设计磁力搜索引擎
  • 网站建设写程序用什么软件成都疫情最新消息
  • 做网站需要什么资金2022今天刚刚发生地震了
  • 建设网站费用主要包括哪些google商店
  • 专注邯郸建设手机网站贴吧友情链接在哪
  • 网站备案拍照背景志鸿优化网官网
  • 网站百度知道怎么做推广网站搜索引擎优化的方法
  • 网站建设注意哪些问题sem和seo是什么职业岗位
  • 一_建设网站前的市场分析奶茶软文案例300字
  • 做网站智能工具江阴企业网站制作
  • 怎么看网站有没有做推广大数据营销系统多少钱
  • 广东工厂搜索seoseo平台优化服务
  • 网站开发平台 eclipseseo网站推广案例
  • 什么网站做调查能赚钱关键词优化报价推荐
  • 网站开发职业认知小结开发一个app平台大概需要多少钱?
  • 装修公司全包项目seo搜索引擎实训心得体会
  • 爱站网是干什么的长沙关键词排名首页
  • wordpress 教垜四川seo推广公司
  • 东莞市阳光网青岛seo服务