Soweit ich weiß, werden alle Front-End-Komponenten für eine reaktionsbasierte Ethereum-Dapp aus der Sicht des Metamask-Standardkontos des Benutzers gerendert. Alle Aufrufe von konstanten Funktionen in Solidität zum Abrufen von Zustandsvariablenwerten und Rendern der relevanten Komponenten zur Anzeige für Benutzer verwenden das Konto des Benutzers.
Was ich möchte, ist, ein bestimmtes Design hinzuzufügen:
eine automatisierte Routine, die im Hintergrund läuft (ohne anzuzeigende Front-End-Komponenten), die den Zustandsvariablenwert bewertet und eine intelligente Vertragstransaktion ausführt, die nur vom Eigentümer ausgeführt werden soll.
Diese eigentümerbasierte Transaktionsaufrufroutine muss ständig automatisiert im Hintergrund ausgeführt werden und nicht nur, wenn ein Benutzer Ihre Website-Seite in seinem/ihrem Browser geöffnet hat.
Als Beispiel möchte ich im Fall der Abstimmungs-Dapp eine Routine erstellen, bei der nach einer bestimmten Anzahl von Stimmen oder nach Ablauf einer bestimmten Frist die Routine zur Berechnung der Stimmen automatisch ausgeführt werden soll, und zwar auch vom Eigentümer Adresse (da nur der Eigentümer das Privileg hat, Stimmen zu zählen und den Gewinner zu erklären).
Könnten Sie bitte erläutern, wie eine solche Routine implementiert werden kann? Müsste ich dafür die Keystore-Datei des Besitzers serverseitig hinterlegen? Ist es eine sichere Strategie? Danke.
Sie könnten ein Programm auf demselben Server ausführen, der die Webseite Ihrer App bereitstellt. Dieses Programm liest den Status Ihrer Variablen und reagiert darauf, indem es Funktionen ausführt. Da dies auf Ihrem PC läuft, können Sie die Transaktionen mit den Eigentümerschlüsseln auf sichere Weise durchführen.
Wenn der Auslöser ausschließlich zeitbasiert ist, d. h. Sie möchten, dass eine Funktion nach Ablauf einer bestimmten Zeit oder allgemein zu einem bestimmten Datum ausgeführt wird, können Sie Dienste wie AION Scheduling System verwenden . Da Aion für jeden Benutzer ein unabhängiges Konto (Smart Contract) erstellt, können Sie sicher sein, dass die Funktion, wenn sie von dieser Adresse kommt, einer vom Eigentümer geplanten Funktion entspricht. AION kann jede von Ihnen angegebene Funktion aufrufen, wenn eine bestimmte Zeit oder ein bestimmter Block erreicht ist.
Hoffe das hilft
Sie müssen neu bewerten.
Hier ist die Einschränkung. Ein Client kann ohne Kenntnis des privaten Schlüssels nicht für eine Adresse signieren. Identitätsdiebstahl ist nicht möglich. msg.sender
lügt nicht.
Sie müssen den Prozess berücksichtigen und beeinflussen möglicherweise die Vertragsgestaltung.
Wenn nur der Eigentümer einen Gewinner erklären kann, bedeutet dies, dass es einen Client oder Server gibt, der dies letztendlich tun wird. Dieser Stil impliziert die Wiedereinführung der Zentralisierung, die oft nicht notwendig ist.
Wenn die Abstimmungsfrist abgelaufen ist und die Stimmen ehrlich gezählt werden, gibt es für den Eigentümer keine subjektive Entscheidung. Ähnlich verhält es sich mit Auktionen und Spielen.
Nun, es könnte Code geben, der am Ende ausgeführt werden muss. Sie müssen darüber nachdenken, wer es ausführen wird oder was es auslöst. Es ist üblich, den Gewinner eine solche Funktion ausführen zu lassen, da er einen Anreiz hat, für Benzin zu bezahlen.
In Betracht ziehen
function claimPrize () public onlyWinner onlyIfClosed ...
Ich hoffe es hilft.
Kombo
Jaime
Kombo
Jaime
Kombo
Kombo
Jaime
Jaime
Jaime
Kombo