Hola, ¿puedo obtener el precio de Ether en vivo a USD en mi contrato inteligente? Quiero mantener una tapa dura en USD. ¿Es posible hacerlo? [duplicar]

Quiero hacer una función para que mi ICO calcule los éteres recolectados hasta ahora y los convierta en dólares estadounidenses. Quería limitar mi ICO en dólares estadounidenses. ¿Es posible hacerlo? Estoy usando Solidity para crear mi contrato inteligente ICO

Respuestas (3)

Debe usar un Oracle para obtener la conversión de precios en la cadena de bloques.

Si desea iniciar su propio contrato inteligente basado en Oracle, debe consultar los documentos para desarrolladores de Oraclize.it . Tienen un ejemplo para este escenario:

Análisis JSON: para extraer el campo de último precio de la API de Kraken, el primer parámetro de la consultajson(https://api.kraken.com/0/public/Ticker?pair=ETHUSD).result.XETHZUSD.c.0

Sin embargo, podría ser mejor y más rentable para usted aprovechar otro contrato inteligente que ya ha configurado un oráculo para obtener y almacenar estos datos.

Realmente no puedo recomendar uno que haya usado personalmente, pero creo que el consenso general es que MakerDAO tiene un montón de oráculos configurados para sus propios servicios que debería poder usar.

Editar: echa un vistazo a MakerDAO medianizer aquí

Si desea obtener datos financieros y no desea esperar un bloque (o más) y pagar tarifas de GAS y luego ETH con algo como Oraclize, puede obtener datos de acciones, criptografía, ETF, etc. de la cuenta inteligente de OrFeed.org. Contrata gratis y al instante desde tu contrato inteligente.

Para precios en tiempo real de Dexes como Kyber y Uniswap:

uint price = orfeed.getExchangeRate("ETH", "USDC", "SELL-UNISWAP-EXCHANGE", 10000000000000000);

Todos los 0 se deben a que los tokens tienen tantos 0 (generalmente 18).

uint price = orfeed.getExchangeRate("BTC", "DAI", "SELL-KYBER-EXCHANGE", 100);

Para datos de Forex de Synthetix:

uint price = orfeed.getExchangeRate("JPY", "USD", "DEFAULT", 100000);

Stock (más centralizado pero cada vez menos):

uint price = orfeed.getExchangeRate("AAPL", "USD", "PROVIDER1", 1);

Documentos en el sitio y github.

¡Espero que esta información sea útil!

Descargo de responsabilidad: contribuyo al proyecto Orfeed.

No necesitas usar Oraclelize.

Simplemente obtenga el precio curldesde esta URL https://min-api.cryptocompare.com/data/pricemulti?fsyms=ETH&tsyms=USD y envíe una transacción a su contrato, actualice el precio almacenándolo en alguna variable. Va a ser mucho más barato de esta manera.