Ist es möglich, die Anzahl der an einen Smart Contract gesendeten Ether zu begrenzen?

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:

  1. 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.

  2. 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.

Antworten (2)

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

Das ist eigentlich nicht richtig. Sie können Transaktionen rückgängig machen, wenn eine bestimmte Menge Ether bereits an den Vertrag gesendet wurde (mit receiveFunktion, wie in einer anderen Antwort erwähnt). Ebenso können Sie diese Logik mit einer zeitbasierten Logik verbinden

Sie können eine receiveFunktion haben und eine requireAnweisung haben, die den tx rückgängig macht, wenn msg.value > someAmount. Mehr Infos in der Solidity-Dokumentation .