HI, kann ich in meinem Smart Contract einen Live-Preis von Ether zu USD erhalten? Ich möchte ein Hardcap in USD halten. ist das möglich? [Duplikat]

Ich möchte eine Funktion für mein ICO erstellen, um die bisher gesammelten Ether zu berechnen und in US-Dollar umzurechnen. Ich wollte mein ICO in US-Dollar festsetzen. Ist das möglich? Ich verwende Solidity, um meinen ICO Smart Contract zu erstellen

Antworten (3)

Sie müssen ein Oracle verwenden, um die Preisumrechnung in die Blockchain zu bekommen.

Wenn Sie Ihren eigenen Oracle-basierten Smart Contract initiieren möchten, sollten Sie sich die Entwicklerdokumentation für Oraclize.it ansehen . Sie haben ein Beispiel für genau dieses Szenario:

JSON-Parsing: Zum Extrahieren des Last-Price-Felds aus der Kraken-API, dem ersten Parameter der Abfragejson(https://api.kraken.com/0/public/Ticker?pair=ETHUSD).result.XETHZUSD.c.0

Es könnte jedoch besser und kostengünstiger für Sie sein, einen anderen Smart Contract zu nutzen, der bereits ein Orakel eingerichtet hat, um diese Daten zu erhalten und zu speichern.

Ich kann nicht wirklich eines empfehlen, das ich persönlich verwendet habe, aber ich glaube, der allgemeine Konsens ist, dass MakerDAO eine Reihe von Orakeln für ihre eigenen Dienste eingerichtet hat, die Sie verwenden können sollten.

Bearbeiten: Schauen Sie sich MakerDAO medianizer hier an

Wenn Sie Finanzdaten abrufen möchten und nicht einen Block (oder länger) warten und GAS- und dann ETH-Gebühren mit etwas wie Oraclize bezahlen möchten, können Sie Aktien-, Krypto-, ETF- usw. Daten von OrFeed.orgs Smart abrufen Vertrag kostenlos und sofort aus Ihrem Smart Contract.

Für Echtzeitpreise von Dexes wie Kyber und Uniswap:

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

Alle Nullen sind darauf zurückzuführen, dass die Token so viele Nullen haben (normalerweise 18).

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

Für Forex-Daten von Synthetix:

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

Bestand (mehr zentralisiert, aber weniger zentralisiert):

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

Docs auf der Website und github.

Hoffe, diese Informationen sind nützlich!

Haftungsausschluss: Ich trage zum Orfeed-Projekt bei.

Sie müssen Oraclize nicht verwenden.

Holen Sie sich einfach den Preis mit curldieser URL https://min-api.cryptocompare.com/data/pricemulti?fsyms=ETH&tsyms=USD und senden Sie eine Transaktion an Ihren Vertrag, aktualisieren Sie den Preis und speichern Sie ihn in einer Variablen. Auf diese Weise wird es viel billiger.