Wie man den Wert an Token außerhalb von Ethereum koppelt

Ich habe ein Online-Spielsystem. Ich gebe einige Tokens über Ethereum aus. Wie kann ich den Wert der auf Ethereum ausgegebenen Token an mein Spielsystem binden, das sich außerhalb des Ethereum-Ökosystems befindet? (dh) Die Benutzer müssen in der Lage sein, Spielgegenstände wie Waffen, Power-Ups usw. mit den benutzerdefinierten Token zu kaufen.

Logischerweise denke ich, dass es ungefähr so ​​funktionieren wird: Ich frage den Benutzer nach seinem öffentlichen Schlüssel für die Ethereum-Brieftasche. Der Benutzer sendet die Token an meine Brieftasche. Ich werde Ethereum mit einer API abfragen und feststellen, dass der Benutzer X einige Token auf meiner Brieftasche hinterlegt hat. Wenn die Transaktion stattgefunden hat, werde ich die Gegenstände im Spiel ausgeben.

Eine andere Möglichkeit, die Frage zu betrachten, ist, wenn ich Token an Benutzer in einem ICO verkaufe, wie wird der Benutzer diese Token verwenden, um sie gegen einen gewissen Wert in meinem Produkt einzutauschen.

Beispielcode wird sehr geschätzt.

Ich kann deiner Frage und dem, was du zu erreichen versuchst, nicht ganz folgen. Wäre es einfach einfacher, Zahlungen in Ether zu akzeptieren und Benutzern einen In-Game-Off-Chain-Token gutzuschreiben?
Ich schaue mir ICOs als Alternative zu Kickstarter an, um mein Projekt zu finanzieren. Die Frage ist also, wenn ich Token an Benutzer verkaufe, was haben sie davon? Wie wird ein Benutzer davon profitieren, wenn er an einem Token festhält? Wie sieht es auf der technischen Seite aus?
Was der Vorteil für die Token-Käufer ist, ist das, was Sie ihnen im Austausch für die Token geben. Zum Beispiel kann ein U-Bahn-Token in Toronto verwendet werden, um mit unserer U-Bahn zu fahren. Sobald Sie einen gekauft haben, können Sie mit Ihrem Token auch dann noch mit der U-Bahn fahren, wenn der Preis der Token steigt. Sein Wert ist also an den Wert des U-Bahnfahrens gekoppelt. Sie könnten einen 100% Gesundheitsbooster im Spiel für 5 Token anbieten. Und das ist dann der Wert der Token. Das ist ein möglicher Vorteil für Token-Inhaber.
Bei einem Crowdfunding-Modell könnte man sagen, dass die Leute für einen Promo-Zeitraum 150 Token pro Ether erhalten können. Nach deiner Crowdfunding-Periode gibst du nur 100 Token pro Ether. Das ist der Vorteil für die Teilnahme an Ihrem Crowdsale. Es kann sein, dass das Halten von Token keinen Vorteil bringt. Das wird von der Wirtschaft diktiert und liegt weitgehend außerhalb Ihrer Kontrolle. Wenn Ihr Spiel nicht beliebt ist, ist jemand möglicherweise bereit, seine Token für ein paar Cent auf den Dollar zu verkaufen, weil es ihm einfach nicht wichtig genug ist, um zu spielen. Oder Sie überteuern Ihre Gegenstände im Spiel.
Die Teilnehmer am ersten Verkauf von Ethereum haben über 1000 ETH pro Bitcoin bekommen und sehen jetzt aus wie Genies. Aber Ethereum hätte genauso leicht Pleite gehen können. Wie Leute, die Dogecoin für jeweils 0,2 US-Cent abgeholt haben.

Antworten (2)

Sobald Sie Token über ein ICO verteilt haben, schreiben Sie Code in Ihre Anwendung, der diese Token erfordert. Wofür die Token gehandelt werden, liegt ganz bei Ihnen und hängt von den Parametern der Anwendung ab, die Sie erstellen.

Der Vertragscode für das von Ihnen erstellte Token enthält eine Art sendCoin()-Funktion, die Token zwischen Ethereum-Adressen sendet. Im Code würden Sie also eine Adresse zum Sammeln von Token im Spiel angeben, und die Benutzer würden dann in einer Transaktion in der Ethereum-Kette Token an diese Adresse senden. Das Senden der Token erfordert einen aktuellen Ethereum-Knoten (um auf den Token-Vertragscode zuzugreifen und eine Transaktion zu senden), sodass Benutzer in Ihrem Spiel einen lokalen aktualisierten Knoten auf ihrem System haben müssten, oder vielleicht könnten Sie einfach einen Remote-Knoten haben betriebsbereit, mit dem sie sich zentral verbinden (wenn Sie sich nicht um Dezentralisierung in Ihrem Spiel kümmern).

Hier ist wahrscheinlich der eigentliche Haken, dass es noch keine einfache Lösung gibt – bis diese Transaktion einschließlich der gesendeten Token verarbeitet ist, gibt es keine Möglichkeit zu sagen, dass sie Ihnen Token gesendet haben (zumindest durch Scannen der Blockchain). Das Mining jedes neuen Blocks dauert etwa 13 Sekunden, so dass der Benutzer nur minimal warten muss, um das zu sammeln, was er kauft. Sie könnten einfach ihre Einkäufe protokollieren und ihre Guthaben überprüfen (keine Wartezeit) und ihnen dann den Artikel geben, bevor die Transaktion abgebaut wird. Es gibt viele Möglichkeiten, dies zu tun, und sie können nicht alle in einer Frage behandelt werden.

Ich werde abschließend sagen, dass Sie sicherstellen müssen, dass das Spiel, das Sie erstellen, in irgendeiner Weise dezentralisiert ist, da es sonst keinen Sinn macht, Token zu verwenden, die auf Ethereum basieren.

BEARBEITEN: Vergessen zu erwähnen, dass das Senden von Token an eine andere Ethereum-Adresse eine gewisse Menge Ether im sendenden Konto erfordert (wie hoch auch die Gaskosten der Funktion sendCoin() sind). Wenn sie also einen lokalen Ethereum-Knoten betreiben, benötigen sie etwas Ether in ihrem Konto.

Nehmen wir an, die Transaktion wurde durchgeführt. Wie würde ich dies anhand meines Spielcodes erkennen?
Ihr Spielcode müsste mit der Ethereum-Kette interagieren. Zusätzlich zu einer sendCoin()-Funktion benötigen Sie eine coinBalanceOf()-Funktion, die den Kontostand für eine bestimmte Adresse zurückgibt. Sobald die Transaktion abgeschlossen ist, kann das Spiel die Blockchain nach Guthaben abfragen, um zu prüfen, ob der Benutzer die erforderlichen Token bezahlt hat. Sie müssten auch die Guthaben in Ihrem Token-Vertrag speichern.

Sie können ERC20-Ereignisse an die angegebene Empfängeradresse übertragen

(Oder machen Sie einen speziellen Smart Contract mit einem Kauf und buyEvent )

Sobald das Ereignis gesendet wurde, können Sie den Gegenstand im Spiel gewähren.

Wirklich so einfach. Wenn Sie einen dynamischen Preis wünschen, sollten Sie sich die Aktualisierungsfunktion in diesem ansehen: https://github.com/hunterlong/fiatcontract/blob/master/contracts/FiatContract.sol