Konvertieren zwischen Fiat (USD) in Ether in Solidität

Ich habe eine Situation, in der ich Ether im Wert von 1 $ an meinen Smart Contract sende.

Nun, wie validiere ich dasselbe auf Solidität? Wie stelle ich sicher, dass der Benutzer zu jeder Zeit Ether im Wert von 1 $ sendet?

Ich meine, wie kann ich sicherstellen, dass msg.valuedie Solidität tatsächlich gleich einem Fiat im Wert von 1 $ aus Solidität ist.

Bearbeiten: Ich weiß, ein Orakel kann als Datenquelle verwendet werden. Aber gibt es ein Orakel, das eine API wie Poloinex bereitstellt?

Schritt 1: Ich rufe die https://poloniex.com/support/api/ auf und erhalte den Ether - Fiat-Wert

Schritt 2: Ich sende eine Transaktion an einen Vertrag mit dem zuvor erhaltenen Wert:contract.method.aPayableMethod().sendTransaction({ value: toWei('value from poloinex') })

Schritt 3: Wie stelle ich in meiner bezahlbaren Funktion innerhalb von Solidity sicher, dass der msg.valueimmer gleich 1 $ ist?

Können Sie weitere Einzelheiten angeben? Denn wenn der Benutzer 1 Ether sendet (sagen wir, es ist 1 $ wert), dann erhält der Vertrag 1 Ether und Sie tun, was immer Sie damit tun müssen.
Ich möchte validieren, ob 1 Ether derzeit 1 $ entspricht.
Hi. "Preis in USD" ist meiner Meinung nach fast bedeutungslos :-) Preis nach wem? Welche Börse oder welchen Markt werden Sie für Ihre Bewertung verwenden? Ist das derselbe Markt, den die Benutzer Ihres Vertrags nutzen werden? Was ist, wenn sich der Preis in Ihrem ausgewählten Markt ändert, während Sie den API-/Oracle-Aufruf tätigen? Was ist, wenn sich der Preis ändert, während Ihr Benutzer darauf wartet, dass seine Transaktion abgebaut wird?
Ja, ich verwende die Coinbase-Wechselkurs-API. Bieten diese APIs nicht einen 24-Stunden-Durchschnittspreis an? Und denken Sie, ich sollte einfach nach msg.value suchen und wenn es existiert, einfach fortfahren.

Antworten (2)

Bitte werfen Sie einen Blick auf den FiatVertrag . Es handelt sich um einen Spendenvertrag, der die Fiat-Werte stündlich aktualisiert.

Aber es ist zu spät. Am Ende habe ich die ETH angenommen.

Sie müssten so etwas wie ein Orakel verwenden , das diese Informationen in der Kette bereitstellen könnte, aber Sie müssen darauf vertrauen, dass das Orakel jederzeit gültige Daten zurückgibt.

Schau dir die Bearbeitung an.