Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

172
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda