Intelligente Wahlverträge

Ich habe Probleme bei der Implementierung eines Timeout-Faktors in meine Wahl. Nehmen wir an, wenn der Vertrag bereitgestellt wird, startet der Timer, nachdem der Timer abgelaufen ist, endet die Wahl und es gibt die Ergebnisse der Wahl bekannt.

Wie kann ich solide Berichte erstellen?

Antworten (2)

Sie erstellen keine Berichte in Solidity.

Was Sie normalerweise tun würden, wäre, eine Schließzeit festzulegen, nach der keine Stimmen mehr angenommen werden, und diese Zeit jedes Mal überprüfen zu lassen, wenn jemand versucht, abzustimmen. Ab der Schließzeit wäre der Stand der Abstimmungen also automatisch gesperrt.

Den endgültigen, gesperrten Zustand in einen für Menschen lesbaren Bericht umzuwandeln, wäre normalerweise die Aufgabe einer externen Software, die Leseanforderungen an ihren Knoten stellt und diese für Menschen formatiert. Dies geschieht am häufigsten in JavaScript, oft mit einem Tool wie Truffle.

Sie müssen den Ablauf leicht umkehren, da Sie einen Prozess nicht einfach starten können, wenn die Frist erreicht ist.

Sie können (und sollten) die Abstimmung auf den Zeitraum beschränken, in dem die Wahl offen ist. Das heißt, keine Abstimmung nach Ablauf der Frist zulassen. Sie können auch ein zurückgeben, boolum den offenen/geschlossenen Status anzugeben, damit Kunden wissen, ob die Wahl offen oder geschlossen ist.

modifier onlyIfOpen {
  require(isOpen());
  _;
}

function isOpen() public view returns(bool isIndeed) {
  return now < deadlinel;
}

Optional können Sie auch einen Gewinner zurückgeben.

function blueTeamIsWinner() public view returns(bool isIndeed) {
  return blueCount > redCount;
}

Alles basiert darauf, dass der Kunde den Vertrag prüft, anstatt einen Prozess nach Zeitplan zu starten.

Ich hoffe es hilft.