Привет, могу ли я получить цену эфира в долларах США в своем смарт-контракте? Я хочу сохранить хардкап в долларах США. возможно ли это сделать? [дубликат]

Я хочу сделать для своего ICO функцию для подсчета собранных на данный момент эфиров и конвертации их в доллары США. Я хотел жестко ограничить свое ICO в долларах США. Возможно ли это сделать? Я использую Solidity для создания смарт-контракта ICO

Ответы (3)

Вам нужно использовать Oracle, чтобы преобразовать цену в блокчейн.

Если вы хотите инициировать свой собственный смарт-контракт на основе Oracle, вам следует ознакомиться с документацией разработчика для Oraclize.it . У них есть пример именно для этого сценария:

Анализ JSON: чтобы извлечь поле последней цены из Kraken API, первый параметр запросаjson(https://api.kraken.com/0/public/Ticker?pair=ETHUSD).result.XETHZUSD.c.0

Однако для вас может быть лучше и выгоднее воспользоваться преимуществами другого смарт-контракта, в котором уже настроен оракул для получения и хранения этих данных.

Я не могу порекомендовать тот, который использовал лично, но я считаю, что общее мнение состоит в том, что MakerDAO имеет множество оракулов, настроенных для своих собственных сервисов, которые вы должны иметь возможность использовать.

Редактировать: Проверьте MakerDAO medianizer здесь

Если вы хотите получить финансовые данные и не хотите ждать блок (или больше) и платить GAS, а затем комиссию ETH с помощью чего-то вроде Oraclize, вы можете получить данные об акциях, криптовалюте, ETF и т. Д. контракт бесплатно и мгновенно из вашего смарт-контракта.

Цены в реальном времени от Dexes, таких как Kyber и Uniswap:

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

Все 0 потому что в токенах так много 0 (обычно 18).

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

Для данных Forex от Synthetix:

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

Акции (более централизованные, но становятся менее централизованными):

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

Документы на сайте и github.

Надеюсь, эта информация будет полезной!

Отказ от ответственности: я вношу свой вклад в проект Orfeed.

Вам не нужно использовать Oraclize.

Просто получите цену с curlэтого URL-адреса https://min-api.cryptocompare.com/data/pricemulti?fsyms=ETH&tsyms=USD и отправьте транзакцию в свой контракт, обновите цену, сохранив ее в некоторой переменной. Так будет намного дешевле.