- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 JavaScript 和 Uniswap 还很陌生。我正在使用 Uniswap V3 从 DAI/USDC 池中获取价格。我的“主要”功能如下所示:
async function main() {
const [immutables, state] = await Promise.all([
getPoolImmutables(),
getPoolState(),
]);
const DAI = new Token(1, immutables.token0, 18, "DAI", "Stablecoin");
const USDC = new Token(1, immutables.token1, 6, "USDC", "USD Coin");
const DAI_USDC_POOL = new Pool(
DAI,
USDC,
immutables.fee,
state.sqrtPriceX96.toString(),
state.liquidity.toString(),
state.tick
);
const token0Price = DAI_USDC_POOL.token0Price;
console.log("The price is: ", token0Price);
}
我得到以下输出:
The price is: Price {
numerator: JSBI(6) [
435696740,
805184612,
508287463,
671994784,
427409972,
4,
sign: false
],
denominator: JSBI(7) [ 0, 0, 0, 0, 0, 0, 4096, sign: false ],
baseCurrency: Token {
chainId: 1,
decimals: 18,
symbol: 'DAI',
name: 'Stablecoin',
isNative: false,
isToken: true,
address: '0x6B175474E89094C44Da98b954EedeAC495271d0F'
},
quoteCurrency: Token {
chainId: 1,
decimals: 6,
symbol: 'USDC',
name: 'USD Coin',
isNative: false,
isToken: true,
address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
},
scalar: Fraction {
numerator: JSBI(2) [ 660865024, 931322574, sign: false ],
denominator: JSBI(1) [ 1000000, sign: false ]
}
}
USDC 的价格似乎有些道理(分母,1000000),但我不确定如何从输出中解释 DAI 的价格。如果有人可以提供任何提示或向我指出解释输出的资源,我将不胜感激。谢谢!
最佳答案
JSBI 代表 JavaScript BigInt :
a pure-JavaScript implementation of the ECMAScript BigInt proposal.
它是一个通过数组表示的大整数。要查看它的十进制形式,请使用 String(jsbi)
或 jsbi.toString()
.对于计算,您必须使用模块的方法:
c = JSBI.add(a, b)
减法
c = JSBI.subtract(a, b)
乘法
c = JSBI.multiply(a, b)
师
c = JSBI.divide(a, b)
使用你的例子的值我们可以计算
(async function asyncFnOnlyForAwait() {
const { default: JSBI } = await import ('https://cdn.skypack.dev/jsbi')
window.JSBI = JSBI;
window.priceJSBI = {
numerator: [435696740, 805184612, 508287463, 671994784, 427409972, 4,],
denominator: [0, 0, 0, 0, 0, 0, 4096, ],
scalarNumerator: [660865024, 931322574, ],
scalarDenominator: [1000000, ]
};
window.price = {};
// convert arrays to JSBI
for (const [prop, val] of Object.entries(priceJSBI))
priceJSBI[prop] = JSBI.from(val)
// calculate using JSBI methods
priceJSBI.value = JSBI.divide(priceJSBI.numerator, priceJSBI.denominator)
priceJSBI.scalarValue = JSBI.divide(priceJSBI.scalarNumerator, priceJSBI.scalarDenominator)
// convert JSBIs to numbers, losing precicion
for (const [prop, val] of Object.entries(priceJSBI))
price[prop] = JSBI.toNumber(val)
price.valueByNumbers = price.numerator / price.denominator
console.table(price)
document.write('<pre>price = '+JSON.stringify(price, null, 4))
}).call();
// In devtools console on this question, select the right iframe as scope to access these variables
// In Chromium browsers there's a dropdown for JS scopes next to the "console clear" button
奇怪的是,Uniswap 在桌面上发布了 JSBI。它实际上是作为旧版/移动浏览器的后备方案,只会使事情复杂化。 BigInts所有主要浏览器都支持并使用普通算术运算符。 JSBI其实应该是transpiled away对于具有 BigInts 的环境。
关于javascript - 解读 Uniswap V3 价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71209265/
我可以使用 router02 函数在 uniswap 上交换代币: route02.swapExactTokensForTokens(amtIn, amtOut, [t1.addre
我正在尝试 fork Safemoon(或者实际上是 NotSafeMoon),并将其用作学习智能合约开发的工具。 (我有大量您可能称之为“Web 2.0”的开发经验)。 假设我的构造函数中有这样的东
我已经花了几个小时试图了解执行价格。 我理解中间价的概念,因为它是两对之间的准备金率。 根据 Uniswap sdk documentation , 执行价格是发送/接收 Assets 的比率。我很难
我正在使用 ethers.js 从 UniswapV2Router02 合约调用 getAmountsOut(),我正在检查 50000 DAI 可以获得的 ETH 数量。 使用下面的代码,输出金额告
我有一组钱包地址,我需要找到每个地址在一些流动性池中持有的代币数量。假设流动性调查针对的是代币 A 和 B。所以我需要找到每个地址在流动性池中拥有的代币 A 的数量。我怎样才能得到它? 需要明确的是,
我正在尝试获取 UniswapV2 上一对的价格:这是我的代码: pragma solidity ^0.5.1; import '@uniswap/v2-core/contracts/interfac
我对 JavaScript 和 Uniswap 还很陌生。我正在使用 Uniswap V3 从 DAI/USDC 池中获取价格。我的“主要”功能如下所示: async function main()
在向 Uniswap V3 中的新池添加流动性的同时,我正在尝试计算任何给定货币对的“存款金额”的公式。 例如,让我们以 ETH/USDC 对为例 当前价格:2172.05设置价格范围 -20% &
我正在尝试批准并稍后通过 web3py 代码在 uniswap 上交换我的代币。我也在使用 infura,而不是我自己的节点。但是,在交换和批准时我都遇到了 solidityErrors。问题是 we
我正在尝试了解 Uniswap v2 SDK。我写了一个简单的函数来获取交易结果: Dai 1 WETH WETH 的 1 个 DAI 我的问题是,为什么 Uniswap 接口(interface)返
我正在尝试使用 Web3 在 Ropsten 网络上为 Uniswap 增加流动性。 我的 JavaScript 代码如下: (async () => { console.log("accou
我正在尝试根据 this 使用 web3js 离线计算 Uniswap 对的地址坚固性示例: address factory = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9
如果有人为 eth 出售或购买我们的代币(例如,我的意思是 uniswap),有没有办法检查 erc-20 代币的 transfer() 方向? 最佳答案 Uniswap 交易是掉期,而不是买卖。它可
我将从 Spring boot 使用 Uniswap v3 GraphQL API 获取代币价格。 所以我尝试在 Postman 中测试网址:https://api.thegraph.com/subg
我正在尝试使用 uniswap 合约方法来简单地将 eth 换成 token ,使用 metamask 钱包中的 eth。 Uniswap 合约方式为: function swapExactETHFo
嗨,我正在关注 uniswapV2 文档来执行交易,但遇到如下错误 invalid bignumber value 我的输入金额为 2941991120,在 JSBI 表单中它是 -135297617
我想通过使用 web.js 获取 uniswap 和 sushiswap 交易所的代币价格 我是加密开发世界的新手,所以请尽可能详细地说明,如果可能的话,一个例子将是救命稻草。 这是我能拍到的最好的照
我遇到的问题是,我试图将 wei 中的值发送到 swapExactETHForTokens,但它返回 Fail with error 'UniswapV2Library: INSUFFICIENT_I
我正尝试在 uniswap unsing hardhat 的主网 fork 上交换代币,但我收到此错误:错误:交易在没有原因字符串的情况下恢复。我真的不知道为什么。 这是我的交换函数: fun
我是一名优秀的程序员,十分优秀!