Ich bin ein Neuling in der Ethereum-Programmierung und spiele mit einem ICO Smart Contract. Ich möchte wissen, ob es möglich ist, die folgenden Einschränkungen in den Smart Contract aufzunehmen:
Kann ich einen Höchstbetrag für Ether festlegen, der über einen Zeitraum von 24 Stunden an die Vertragsadresse gesendet werden kann? Ich möchte sicherstellen, dass ein einzelner Benutzer nicht alle meine Token kauft.
Kann ich eine maximale Menge an Ether festlegen, die über einen Zeitraum von 24 Stunden an die Vertragsadresse gesendet wird? Ich möchte sicherstellen, dass jeden Tag nur eine bestimmte Menge meiner Token verkauft wird.
Sie können Personen nicht verbieten, Ether an einen Vertrag zu senden, aber Sie können den Ether-/Token-Saldo des Vertrags verfolgen und erhaltene Ether zurücksenden, sobald eine Obergrenze erreicht ist. Sie sollten ein paar Verträge von Open Zepplin lesen , es ist ein großartiges Projekt, um ein Gefühl für das Schreiben von Smart Contracts zu bekommen. Sie verfügen über Ressourcen für Anwendungsfälle wie Ihren.
Um Zeitintervalle zu definieren und gegen diese zu prüfen, gibt es zwei Möglichkeiten: I) Sie können Blocknummern mit "block.number" verwenden. II) Sie können Zeitstempel mit "block.timestamp" verwenden, das eine Unix-Epoche zurückgibt
siehe hier für Details
Sie können eine receive
Funktion haben und eine require
Anweisung haben, die den tx rückgängig macht, wenn msg.value > someAmount
. Mehr Infos in der Solidity-Dokumentation .
Lauri Peltonen
receive
Funktion, wie in einer anderen Antwort erwähnt). Ebenso können Sie diese Logik mit einer zeitbasierten Logik verbinden