Der Technologie-Stack für vergessene Artefakte – vergessene Artefakte

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining


Verwenden Sie einen Server

Sie möchten niemals, dass Ihr Client (sei es Windows, Mac, Android, iOS, Web) GraphQL-Aufrufe direkt ausführt, da jeder mit ausreichendem Wissen diese Aufrufe außerhalb Ihres Clients / Spiels selbst ausführen kann.

Stellen Sie Ihre Artikel in eine Warteschlange und versenden Sie sie in Stapeln

Das hat gut funktioniert und ich habe Tausende von Artikeln sehr schnell verschickt.

Das ist, bis das Ethereum-Netzwerk hat verstopft.

Ich habe festgestellt, dass Sie ungefähr 16 ausstehende Transaktionen auf Ihrem Konto haben können (Warten auf den Abbau), bevor ein Blockchain-Aufruf von Enjin einen Fehler zurückgibt. (D. H. Senden, Minzen, Erstellen usw.)

Wenn Sie nicht nachverfolgt haben, auf welche Elemente Sie versucht haben, sie zu manipulieren, können Sie jetzt nicht mehr darauf zurückgreifen.

Gegenstände, die in dieser Zeit in "Vergessene Artefakte" verloren gegangen sind, sollen in der Lava der Dungeons verloren gegangen sein.

Es kostet auch Gas für jede Transaktion und die Menge an Gas, die Sie bezahlen, steigt mit der Datenmenge.

Damals habe ich in einer einzigen Transaktion mit einem Standardsend einen einzelnen Artikel an eine Zielbrieftasche gesendet. Ich habe damals viel Zeit an der ETH verbracht und nur Artikel verschickt 😅

Stattdessen empfehle ich, für alle Sendezwecke Advanced Send zu verwenden. Sie können mehrere Artikel an mehrere Adressen senden, alles in einer Transaktion.

Es gibt Beschränkungen, da die Größe der Transaktion selbst begrenzt ist, eine grobe Richtlinie jedoch nicht mehr als 100 Elemente im Übertragungsarray enthält.

Bewahren Sie die Rücksendung auf Transaktions-ID

Wenn Sie beispielsweise eine Sendung absenden, können Sie diese verwenden Transaktions-ID um festzustellen, ob der Sendevorgang erfolgreich war, noch in der Blockchain ansteht oder fehlgeschlagen ist.

Eine übliche GraphQL-Abfrage, die ich bei der Untersuchung einer Transaktion verwende, lautet:

Abfrage {
EnjinTransactions (
Ich würde: TRANSACTION_ID_HERE,
) {
Ich würde
Transaktions-ID
Art
Zustand
Error
nonce
Zeichen {
Ich würde
Name
}
retryState
}
}

Diese Abfrage gibt in einem Aufruf genügend Informationen zurück, um die Fehlerursache oder den Zustand zu bestimmen, wenn kein Fehler aufgetreten ist.

Die meisten meiner Serverprozesse verwenden die obige Abfrage, um den Status zu ermitteln.

Um beispielsweise festzustellen, ob jemand eine Quest erfolgreich abgeschlossen hat, verwende ich diese Abfrage, um festzustellen, ob die Transaktions-ID Dass ich dem Spieler die Voraussetzungen für eine Quest gegeben habe, wurde erfolgreich an die Spielebrieftasche geschickt.

Ich beschreibe mehr über die Send Queue unter “Enjin Blockchain Send Queue" Sektion.

Erweitertes Senden ist fantastisch

In diesem Beispiel sende ich in einer Transaktion 20.000 FT TOKENID1 und 10.000 FT TOKENID2 von mir an zwei verschiedene Geldbörsen.

Mutation AdvancedSend {
CreateEnjinRequest (identity_id: ABSENDERIDENTITÄT, Typ: ADVANCED_SEND, advanced_send_token_data: {
Transfers:[[
{from_id: ABSENDERIDENTITÄTzu: "0xTARGETWALLETADDRESS1", token_id:"TOKENID1", Wert: "20000"},
{from_id: ABSENDERIDENTITÄTzu: "0xTARGETWALLETADDRESS2", token_id:"TOKENID2", Wert: "10000"}
]})
{
Ich würde
encoded_data
}
}

Sie können dem Übertragungsarray weitere Elemente hinzufügen, um mehrere Elemente gleichzeitig zu übertragen. Stellen Sie nur sicher, dass Sie nicht mehr als 100 hinzufügen.

Um Artikel anzufordern, benutzen Sie einfach das identity_id des Benutzers, von dem Sie eine Anfrage stellen.

Das identity_id eines Nutzers ist spezifisch für Ihre Plattform und er muss sein Portemonnaie mit den genehmigten ENJ-Ausgaben verknüpft haben

Stellen Sie sicher, dass Sie eine Blockchain-Überlastung zulassen

Engpässe und gestiegene Gaspreise sollten Sie einplanen.

Häufige Probleme, auf die ich gestoßen bin, sind:

  1. Das Ethereum ist überlastet und der Gaspreis ist gestiegen, sodass von Ihnen oder Ihrem Spieler unterzeichnete Transaktionen von den Bergleuten nicht mehr abgeholt werden (weil sie mit der niedrigeren Gasgebühr unterzeichnet wurden).
  2. Fehler in Enjins Systemen haben dazu geführt, dass Transaktionen in ihrem GraphQL-System nicht aktualisiert wurden, obwohl sie erfolgreich in der Blockchain verarbeitet wurden

Entwerfen Sie Ihre Blockchain-Interaktionen entweder so, dass sie im Moment kürzer sind, oder stellen Sie sicher, dass Sie die Verarbeitung manuell außer Kraft setzen können, falls die Verarbeitungszeit die akzeptablen Werte überschreitet.

Sie sollten auf jeden Fall sicherstellen, dass Blockchain-Interaktionen unterbrochen und später fortgesetzt werden können, falls die Gaspreise Verzögerungen verursacht haben.

Wenn Sie beispielsweise Ihren Spielern erlauben, einen Gegenstand herzustellen, stellen Sie sicher, dass der Herstellungsprozess genügend Informationen über den Fortschritt enthält, und ermöglichen Sie dem Spieler dann, den Vorgang zu unterbrechen und später fortzusetzen, wenn er der Ansicht ist, dass er zu lange gewartet hat.

Sie können sehen, wie dies in "Vergessene Artefakte" funktioniert, indem Sie eine Quest abschließen oder einen Lagerkoffer öffnen.

Stellen Sie außerdem sicher, dass Sie Ihre Serverlogik so entworfen haben, dass Sie die Statusprüfung einer Blockchain-Transaktion außer Kraft setzen können.

In meinem Admin-Bereich stelle ich eine Schaltfläche bereit, mit der ich den Blockchain-Status erfolgreich erzwingen kann. Ich habe dies in den letzten Monaten ziemlich oft verwendet, als die Blockchain-Transaktion korrekt verarbeitet wurde, aber von Enjin nicht gesehen wurde. (Stellen Sie nur sicher, dass Sie keine Transaktionen genehmigen, die noch nicht erfolgreich verarbeitet wurden. Dies können Sie tun, indem Sie den Transaktions-Hash auf EnjinX überprüfen.)

Wenn ich diesen Fallback eingerichtet habe, kann ich manuell überprüfen, ob die Transaktion erfolgreich war, und die Quest dann in den Status "Bereit, Belohnung anzufordern" versetzen, damit meine Spieler fortfahren können.

Free Bitcoins: FreeBitcoin | BonusBitcoin

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close