Was ist der beste Ansatz zum Generieren zufälliger NFTs?

Ich denke darüber nach, eine kleine DApp zu entwickeln, bei der der Benutzer Karten sammeln würde (NFT). Jede Karte würde ein Bild und einen damit verbundenen Wert haben. Der Benutzer sammelt Karten durch den Kauf Pack of Five Cards, die der Benutzer öffnen und 5 zufällige Karten mit unterschiedlichem Wert erhalten kann. Einige Karten wären seltener als andere ... Dies würde einen Marktplatz schaffen, auf dem Benutzer Karten kaufen / verkaufen können ...

Das Problem, das ich habe, ist, wie man diese Zufallskarten generiert. Ich habe viel über Zufälligkeit in der Blockchain gelesen und wie sie ausgenutzt werden kann, also habe ich nur wenige Möglichkeiten.

Option A:

Verwenden Sie das VRF von Chainlink, das mir folgende Nummer gibt:

60 281 005 833 581 254 158 276 701 724 503 448 998 474 868 621 179 906 924 992 243 038 007 226 057 672

Was 77 Ziffern hat (ich bin mir nicht sicher, ob dies immer der Fall ist, aber beim Testen im Kovan-Netzwerk scheint es immer 77 Ziffern zu haben). Ich kann diese Gruppe von 3 Ziffern verwenden, die mir eine zufällige Karte geben ... Aber auf diese Weise ist der Benutzer darauf beschränkt, maximal 5 (oder weniger) x zu kaufen Packs of Five Cards... Ich muss eine Gruppe von drei Ziffern oder mehr verwenden, je nachdem, wie viele Karten gibt es in einem Satz und verschiedene Karten hätten unterschiedliche Gewichte, also würde ich diese Gewichte verwenden, um zufällige Karten aus dem Satz auszuwählen.

Möglichkeit B:

Der Benutzer genehmigt einige Stable Coins an die Vertragsadresse über MetaMask und ruft mein Backend an, das wiederum private Schlüssel zum Vertrag hat, und das Backend wählt alle zufälligen Karten aus und sendet einfach Anweisungen zum Vertrag, um neue NFTs zu prägen und sie dem Benutzer zuzuweisen, der sie gekauft hat ...

Aber bei diesem Ansatz muss ich Gasgebühren bezahlen, und ich nehme auch an, dass die Gasgebühren hoch wären, um etwa 100 Token auf einmal zu erstellen (wenn der Benutzer 20 gekauft hat Packs of Five Cards) .

Möglichkeit C:

Ich weiß nicht, ob dies möglich ist, aber gibt es eine Möglichkeit, einen Vertrag auf dem Chainlink-Knoten zu erstellen, der so viele Zufallszahlen wie nötig generiert ... Ich würde die Benutzer immer noch darauf beschränken, maximal 10 Pakete zu kaufen, und der Chainlink-Vertrag würde eintreten Return generiert maximal 50 Zufallszahlen im Bereich 1 und 1000 (oder etwas mehr, abhängig von der Summe aller Kartengewichte im Set) und gibt sie an meinen Vertrag zurück, der dann diese NFTs prägen würde ...

Gibt es eine andere Möglichkeit, dies umzusetzen. Und ich nehme auch an, Option B würde einige negative Kommentare hervorrufen, da dies außerhalb der Blockchain wäre und nicht transparent wäre ...

Es gibt kein bestes Werkzeug für alles. Ethereum ist eine Umgebung, die sich ständig verändert. Probieren Sie die verschiedenen Ansätze aus und entscheiden Sie mit Tests.

Antworten (1)

Wir versuchen herauszufinden, was Sie zu entwickeln versuchen ...

In Anbetracht der Tatsache, dass NFTs endliche Ausgaben haben, was bedeutet, dass Sie 10.000 Ausgaben mit jeweils 5 Karten prägen würden, müssten Sie die Anzahl der Karten mit dem höchsten Wert (von insgesamt 50.000), die Menge der zweitwertvollsten (von insgesamt 50.000) und vorprogrammieren bald. So ähnlich wie Lotto-Rubbellose, es würde idealerweise nur 1 1. Preis geben, der zu Beginn auf einer Karte aufgedruckt ist.

Wenn Sie die Blockchain beim Kauf erledigen lassen, generieren Sie möglicherweise nie die Karte mit dem höchsten Wert.

Nicht hilfreich, aber wenn Sie es zum Laufen bringen oder eine APP oder DAPP finden, die das tut, rufen Sie mich an.