Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
Interpretación de los precios de Uniswap V3

Soy bastante nuevo en JavaScript y Uniswap. Estoy usando Uniswap V3 para obtener el precio del grupo DAI/USDC. Mi función "principal" se ve de la siguiente manera:

 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); }

Y obtengo el siguiente resultado:

 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 ] } }

El precio USDC parece tener sentido (denominador, 1000000), sin embargo, no estoy seguro de cómo interpretar el precio DAI de la salida. Si alguien puede darme alguna pista o indicarme un recurso que explique el resultado, se lo agradecería mucho. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

JSBI significa J ava Script B ig I nt :

una implementación de JavaScript puro de la propuesta ECMAScript BigInt.

Es un entero grande representado a través de una matriz. Para ver su forma decimal, use String(jsbi) o jsbi.toString() . Para los cálculos tienes que usar métodos del módulo:

Operacion matematica Operación JSBI
Suma c = JSBI.add(a, b)
Sustracción c = JSBI.subtract(a, b)
Multiplicación c = JSBI.multiply(a, b)
División c = JSBI.divide(a, b)

Usando los valores de tu ejemplo podemos calcular

 (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

Es extraño que Uniswap envíe JSBI en el escritorio. En realidad, está pensado como una alternativa para navegadores antiguos/móviles y solo complica las cosas. BigInts es compatible con todos los principales navegadores y utiliza operadores aritméticos normales. JSBI en realidad debería transpilarse para entornos con BigInts.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!