Bezahlbarer Vertrag mit mehreren "Optionen"?

Ich versuche, einen Vertrag zu erstellen, der sich je nach Auswahl des Benutzers anders verhält. Ich habe jedoch keine Ahnung, wie ich den Benutzer die Option "auswählen" lassen soll. Derzeit habe ich eine grundlegende Fallback-Funktion, die die grundlegende Logik ausführt, aber diese Logik hat 2 wichtige Variablen, die ich gerne ändern würde, wenn der Benutzer sie ändern könnte. Was ist der beste Ansatz, um dies zu erreichen? Ich weiß, dass ich eine kostenpflichtige Funktion mit 2 Eingaben erstellen kann, die dieses Verhalten ändern, aber wie würden die Leute diese Funktion überhaupt verwenden? Keine Wallet (außer MyEtherWallet) unterstützt Funktionen und selbst bei MEW muss man ABI kennen. Gibt es einen Workaround oder so?

Danke SEnergy

Antworten (1)

In Wirklichkeit gibt im Grunde niemand die Verträge so, wie sie sind, an die Endbenutzer weiter. Es gibt fast immer einige altmodischere Schnittstellenschichten zwischen dem Benutzer und Ihren Smart Contracts wie web3. Der Benutzer verwendet also eine einfach zu bedienende Oberfläche und im Hintergrund kümmern sich web3 und ein ausgewählter Knoten um die Smart Contract-Interaktionen.

Wenn dies jedoch eher eine theoretische Frage ist oder Sie wirklich wirklich möchten, dass sich Ihre Endbenutzer direkt mit den Smart Contracts verbinden:

Direkte Anbindung an Ihre Verträge ohne einfach zu bedienende Layer

Wenn Sie nicht möchten, dass Endbenutzer eine Brieftasche verwenden, die benutzerdefinierte Verträge unterstützt (oder nicht möchten, dass sie die Einrichtung und alles durchlaufen), haben Sie nicht mehr viele Optionen.

Das einzige, was mir einfiel, war, die Auswahl anhand der Menge des gesendeten Ethers zu bestimmen. Beispielsweise könnte die letzte Ziffer die Auswahl sein - wenn der Benutzer 5003 oder 4239082482390482903 weis sendet, bedeutet dies Auswahl 3. Der monetäre Unterschied ist unbedeutend, wenn es um weis geht.

Eine andere (dumme) Idee ist, von ihnen zu verlangen, die erforderliche Anzahl von Transaktionen zu senden. Bei nur einer Transaktion bedeutet dies Auswahl 1 und so weiter.

Ich glaube, die typische Lösung besteht darin, ein eigenes Frontend (DApp mit web3.js) zu erstellen.
Natürlich. Ich hatte gehofft, dass dies eher eine theoretische Frage war. Wie auch immer, wird das auch "nur für den Fall" enthalten