首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何Uniswap v2作为预言机使用

译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 本文探索如何Uniswap v2 作为预言机使用Uniswap v2 作为预言机的原理是怎样的,如何整合。...Uniswap 预言机 现在让我们来看看 Uniswap 如何作为预言机使用。例如,你可能想获得 DAI 的喂价,以便知晓给定 ERC-20 代币的大概的美元价格。...虽然这听起来可能是一个可行的策略,实际上确实有项目直接使用这个价格,但它很容易被操纵的,自然而然就会有这样的黑客事件发生[5]。那么如何操纵最后的交易价格呢?...你只需要卖出 TOKEN1 兑换 TOKEN2,此时使用操纵的价格进行操作,之后立刻卖回 TOKEN2。例如像闪电贷[6]中那样,攻击的资金成本几乎 0(手续费除外)。...然而,使用 token0 或 token1 的时间加权平均值实际上会产生不同的结果。所以 Uniswap 干脆同时提供了这两个加权值。

1.8K21

使用带有存储证明的Uniswap V2 预言机

价格累积预言机 在本文中,我们将讨论“价格累积预言机”的工作原理和使用方法。...Uniswap V2 如何扮演预言机 在上面的例子中,Uniswap V1 读取价格瞬间就会发生变化, 因此存在问题。V2 部署了一个聪明的(译者注:预言机)系统,它把价格-时间数据流记录在链上....通过使用“累积”的价格-时间值,价格的可用时间被加权到一个特殊的值中,每次代币交换都会花费少量燃料来同步这些值。...这是 Uniswap market 代码的一个片段: 注意:与 V1 不同,V2 是两个代币之间的市场。在内部,一对代币中的两个代币被分别表示为 token0 和token1。...有了这个价格的计算公式,还剩一个问题:如何在链上获取历史价格累计信息?

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

token实现验证登录(token如何使用)

1.场景还原 可能还有很多小伙伴对token概念朦朦胧胧,今天笔者以项目中的用户登录的token验证需求跟大家讲讲其中的来龙去脉,希望能够理清大伙的思路。...index.html; ②然后复制index.html的地址在IE浏览器地址栏上,这时普遍网站都会使访问界面直接返回到login.html 只有登录了才可以继续浏览,保证了用户的信息安全性,这个需求就得用到token...3.实现方案 ①token生成方法 /** * Created by zhangxing on 2017/6/12. */ public class Token { //随机数发生器...public static String genetateToken(){ String token = System.currentTimeMillis()+"";//获得毫秒数加随机数...MessageDigest md = MessageDigest.getInstance("md5"); byte[] md5 = md.digest(token.getBytes

2.3K10

如何在合约中集成 Uniswap v3

代币的价格是由池中的流动性决定的。例如,如果一个用户用TOKEN2购买TOKEN1,池中TOKEN1的供应将减少,而TOKEN2的供应将增加,TOKEN1的价格将增加。...同样地,如果一个用户正在出售TOKEN1,TOKEN1的价格将下降。因此,代币价格总是反映了供需关系。 当然,用户不一定是人,也可以是一个智能合约。...改进了 Uniswap v2 TWAP 预言机机制,一个链上调用就可以检索到过去 9 天的 TWAP 价格。为了实现这一点,不是只存储一个累积价格总和,而是将所有相关的价格存储在一个固定大小的数组中。...由于 Solidity 的特性,所以这里也不可能将它本身声明为一个视图函数,仅能使用场景如 Web3 的 call()[12] 功能来读取前端的结果。...-periphery/blob/9ca9575d09b0b8d985cc4d9a0f689f7a4470ecb7/test/shared/path.ts "Uniswap 示例代码"),了解如何在前端计算这个路径

2.2K60

剖析DeFi交易产品之Uniswap:V2下篇

实现逻辑很容易理解,主要就以下几步: 读取当前的区块时间 blockTimestamp 计算出与上一次更新的区块时间之间的时间差 timeElapsed 如果 timeElapsed > 0 且两个 token...,即 token0 和 token1 的当前价格,其实可以根据以下公式计算所得: price0 = reserve1 / reserve0 price1 = reserve0 / reserve1 比如...现在,Uniswap TWAP 已经被广泛应用于很多 DeFi 协议,很多时候会结合 Chainlink 一起使用。...比如 Compound 就使用 Chainlink 进行喂价并加入 Uniswap TWAP 进行边界校验,防止价格波动太大。...而使用闪电兑换,可以大大提高交易效率: 先从 Uniswap 得到 ETH 将用户的 ETH 和从 Uniswap 得到的 ETH 抵押进 Compound 从 Compound 借出 DAI 在 Uniswap

1.6K60

如何理解Uniswap v3 流动性头寸的价值

在一个新建的 LP 头寸中 token0 和 token1 的数量将取决于以下三个变量联合确立的价格范围: 代表较低价格端点的 tick tL, 代表较高价格端点的 tick tH, 建立头寸时的价格...这里,ΔE 的值由建立头寸时,头寸中锁定的 token0(记为 x0)和 token1(记为 y0)的初始数量决定: 头寸一旦建立,我们就可以让 token1 数量加上 token0 数量乘以价格 P...使用 beta,我们可以用 beta 加权每个资产的 delta 来计算投资组合的 净 Delta(这里我用 ETH 表示 delta 以简化计算): 使用上表中的信息,可以得到我们的投资组合的净 delta...我们探讨了 Uniswap v3 LP 期权的价格敏感性, 这将有助于理解未来的收益. 并且,我们描述了如何计算多个 Uniswap v3 LP 头寸组合的净 delta。...每个人在确定投资组合的收益方面都有自己的思虑,我们将在下一篇文章中扩展这些参数的使用,,以基于几何布朗运动模型的“Black-Scholes”的定价模型推导出 Uniswap v3 期权的预期投资收益。

91940

如何使用Python构建价格追踪器进行价格追踪

本文将向大家介绍如何用Python采集器建立一个可立即实现电商价格跟踪的可扩展价格追踪器。价格追踪器是什么?价格追踪器是一个定期在电商网站上抓取产品价格并提取价格变动的程序。...我们不会直接使用这个库,而是使用BeautifulSoup来进行封装以获得更直接的API。●价格解析器:用于每个价格监测脚本的库。它有助于从包含价格的字符串中提取价格。...读取产品的 URL 列表 存储和管理产品URL最简单的办法就是将它们保存在CSV或JSON文件中。这次使用的是CSV,便于我们通过文本编辑器或电子表格应用程序进行更新。...如果价格追踪器发现产品价格降至低于alert_price字段的值,它将触发一个电子邮件提醒。?CSV中的产品URL样本可以使用Pandas读取CSV文件并转换为字典对象。...这样,您可以读取URL,调用get_price()函数,并更新所需字段。我们将添加两个新的键值——提取的价格(price)和一个布尔值(alert),用于在发送邮件时过滤函数行。

6K40

采用延时喂价还被黑?Warp Finance 被黑详解

2、接下来攻击者先使用借来的 WETH 和 DAI 向 Uniswap 的 WETH-DAI 交易对添加流动性,获得了约 9.4 万个 LP Token,为接下来在 Warp 中抵押 LP 做准备。...5、根据官方介绍 Warp Finance 项目是允许用户通过抵押 LP Token 来借出 DAI、USDC、USDT 这些稳定币的,接下里我们来看看 Warp 是如何计算出用户可以借出的稳定币数量:...6)在获取完 LP 池子中两种代币 (如 WETH、DAI) 的数量后再通过 oracle1.consult() 分别获取这两种代币的价格,而这里的价格获取使用的是 Uniswap 预言机的实现方式,而...Uniswap 预言机价格获取是有经过时间加权的,也就是延时喂价方式,用户获取的价格是上一个区块的价格,这是无法被操控的。...3、攻击者使用添加流动性获取的 LP Token 抵押到 Warp Finance 中,为借出稳定币做准备。

80810

如何Uniswap上执行闪电兑换(Flash Swaps)

译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] Uniswap Flash Swap 在上一篇[4]文章中,我们了解了如何使用 Uniswap 实现代币之间的兑换。...闪电贷套利是如何运作的? 考虑一种情况,Ethan 从书店花 10 美元买了一本书,然后以 20 美元的价格将这本书卖给 Jennifer。...因此,你的 Hardhat 配置应该看起来类似于这样: 注意:用你自己的Alchemy[5]API 密钥替换 URL 中的部分。...我们将导入Uniswap的接口,以使用其功能。你可以使用这个链接[7]获得该接口文件。 我们还导入了IUniswapV2Callee接口。...为此,使用下面的代码: address token0 = IUniswapV2Pair(msg.sender).token0(); address token1 = IUniswapV2Pair(msg.sender

1.8K30

这几天我写了一个DEX交易聚合器

技术调研 既然接入的是 UniswapV2 和 SushiSwap,而且是从合约层面去接入的,所以第一步就是先要调研如何接入。...,另外,配对合约还继承了 UniswapV2ERC20 合约,即是说,配对合约同时也是 LP Token 合约。...uniswap-v2-periphery 被称为外围,其实就是供外部接入使用的,其主要有三个合约: UniswapV2Migrator:迁移合约,用来将 v1 的流动性迁移到 v2 用的 UniswapV2Router01...tokenB:tokenC 和 tokenD 是常用代币列表中的两种代币,要求 tokenA-tokenC、tokenC-tokenD、tokenD-tokenB 这三个配对的流动性池子是有效的 对每个有效路径读取出最后价格...每次兑换时,则遍历 baseTokens,组装出每条有效路径并读取价格,从而查询出最优价格和路径,再去调用路由合约完成兑换工作。

1.5K21

剖析DeFi借贷产品之Compound:延伸篇

另外,随着 DEX 的发展,直接使用 DEX 的链上价格做为预言机也是一个很有潜力的方向,这需要 DEX 具有足够的深度,能够抵抗价格操纵,或者对价格进行加权等操作,来规避价格操纵攻击。...另外,在同个区块内,也无需每次交易都计算出实时价格,只要计算出一个合理价格后,整个区块内的交易都可直接使用价格,这样,利用闪电贷操纵价格的手段也造不成威胁了。...比如,在 Compound 存款和借款都能挖到其治理代币 COMP;在 Uniswap 投入流动性得到 LP Token 可挖矿手续费;在 Uniswap 质押 LP Token 能挖到 UNI 代币和手续费...那么,杠杆挖矿的风险又如何呢?...时,利率 = 13 × 资金使用率 - 11.5 整合 那么,将超额抵押借贷、杠杆交易、杠杆挖矿,三者都整合到一起,这样的一款平台产品,又将如何呢?

1K30

价格预言机的使用总结(三):UniswapV3篇

Chainlink 属于链下预言机,其价格源取自多个交易所,但所支持的 token 比较有限,主要适用于获取主流 token价格。...UniswapV2 的 TWAP 则是链上预言机,可适用于获取 Uniswap 上已有的任何 token 价格,主要缺陷就是需要链下程序定时触发更新价格,存在维护成本。...UniswapV3 的 TWAP 则解决了这个缺陷问题,本文就来聊聊 UniswapV3 的 TWAP 机制,以及如何正式使用。...计算得到 averageTick 之后,还需要将其转换为价格,这时就需要使用另一个库 TickMath: https://github.com/Uniswap/v3-core/blob/main/contracts...需要注意的是,这里说的 price 其实是 token1Amount / token0Amount = token0Price,即 token0 的价格

2.2K11

Uniswap V3 释疑: 集中流动性, 无常损失和滑点

Uniswap 使用自动做市商 (AMM) 算法来执行交易。用户以代币对的形式创建流动性池子,并在其中提供流动性。执行交易就是将所提供的代币存入池中,并从池中提取所请求的代币。...集中流动性 Uniswap V3 使用集中流动性[6] 做市算法 (CLMM),这是比标准的常数乘积做市 (CPMM) 算法更有效的算法. 每个池中有两种代币,分别是 token0 和 token1。...当价格处于两个 tick 之间的价格范围内时, CLMM 遵循常数乘积公式。因此 CLMM 可以被看做是常数乘积公式的变体。 下面是我编写的 python 脚本,模拟了使用 CLMM 进行交易的过程。...由于交易对于价格的影响, 单个交易可能需要跨越多个流动性池。 与标准常数乘积算法相比,集中流动性的效率更高。CLMM 在每个池子的价格范围内使用池子中的全部流动性。...: https://uniswap.org/whitepaper-v3.pdf [8] 价格影响: https://docs.uniswap.org/concepts/introduction/swaps

1.7K40

剖析DeFi交易产品之Uniswap:V2上篇

虽然网上关于 Uniswap 的文章已经挺多,但大多都只是从机制上进行介绍,很少谈及具体实现,也存在一些问题没能解答,比如:手续费分配是如何实现的?最优路径是如何得出的?TWAP 怎么用?...注入流动性时返回多少 LP Token如何计算的?因此,我从代码层面去剖析 Uniswap,搞清楚这些问题,同时也对 Uniswap 从整体到细节都有所理解。...uniswap-interface 会引用到 v2-sdk 和 sdk-core,通过 @uniswap/v2-sdk 和 @uniswap/sdk-core的方式引入到需要使用的 TS 文件中。...uniswap-info 则是 Uniswap Analytics 项目,对应于官网页面 https://info.uniswap.org ,展示了一些统计分析数据,其数据主要是从 Subgraph 读取...前 3 行代码很好理解,第一步先校验兑换结果的数量是否有一个大于 0,然后读取出两个代币的 reserve,之后再校验兑换数量是否小于 reserve。

1.6K61

uniswap的工作原理(上)

下图为uniswap兑换的界面,用户选择需要支付的数字货币和想购买的数字货币后,系统会根据算法给出预计成交价格、滑点、对市场价格的影响和本次收取的交易手续费。...由于交易用户的手续费直接全部分给做市商,吸引了大资金的玩家进入uniswap提供流动性,大资金的进入会使得用户在交易的时候以更优的价格进行成交,进一步吸引用户进入uniswap进行交易,繁荣了交易的生态...三、兑换价格的计算方法 用户在uniswap进行交易的时候,遵循的就是AMM(Automated Market Maker,自动化做市机制),AMM机制由算法构成,不同的项目有不同的算法,uniswap...),纵轴是ETH(图中的B token)的数量。...从图可得,若支付2倍的A token,获得的B token小于原来的2倍,根据公式可得价格是变大的。 那么单位的DAI可以获得多少的ETH呢?

1.6K11

如何用证书或者token访问TKE集群api接口

使用k8s的过程中我们会经常访问集群的api接口,但是通常k8s的apiserver都是用https认证,当我们想直接访问api接口的时候都是需要进行认证的,这个在tke集群中同样也是如此,那么当我们需要在代码或者用...下面我们讲讲通过客户端证书或者集群token来访问tke集群的api接口。 1. 客户端证书访问tke集群api接口 既然我们想用客户端证书去访问api,那么证书该从哪里来呢?...访问集群api 大家都知道tke集群开启了rbac后,每个账号都是通过证书和apiserver进行认证,不再提供token,但是我们这里如果需要用到token还是可以获取的,具体获取方式参考文档https...://cloud.tencent.com/developer/article/1762567 ,根据文档获取到集群token后,apiserver的地址可以根据上面APISERVER获取方式获取,token...注意,为了避免token被泄露,下面token都是被修改的。

2.8K40

解读Dex中的无常损失:原理,机制,公式推导

),初始两者价值相等,如 1 e0 = 10 t0,用公式表达其token价格(用ETH本位计)则p0为: 则我持有的总价值(用ETH计)等于数量*价格为: 如果未进行Uniswap注入Lp的行为...,则未来即使token对比Eth的价值变动,产生了新的价格,则我介时的资产总值VH为: Part 2:为UniSwap注入流动性 我们可以将ETH和代币两者按一定比例注入流动性,这里方便计算假定为按总值各占...但实际上是对称的,因为他是一个相对的倍率,即对于原价值的1ETH=100Dai而言,跌到1ETH=50Dai是下跌1倍,等于涨到1ETH=200Dai则是上涨1倍,其无常损失是相同的均为5.72% 如何理解无常损失...相关资料 https://uniswap.org/whitepaper.pdf https://pintail.medium.com/understanding-uniswap-returns-cc593f3499ef...盘点五大Token标准,足以支持中国香港Web3发展试点吗?

67020
领券