Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

171
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda