So fügen Sie dem Token-Vertrag Anforderungen hinzu: 1) Der Eigentümer hat genügend Token und 2) die Mindestsumme der ETH der Empfänger, bevor die Salden aktualisiert werden

Könnten Sie überprüfen, ob diese Zeilen korrekt sind und funktionieren? In diesem Code habe ich zwei Anforderungen : Ich möchte prüfen, ob der Besitzer über genügend Token (10 Millionen Token) verfügt, bevor er die Salden aktualisiert, und Token nur an Adressen mit mindestens 2 ETH-Guthaben senden .

  function getEthBalance(address _addr) constant
  returns(uint) {
      return _addr.balance;
  }

  function distributeToken(address[] addresses, uint256 _value) onlyOwner {
   for (uint i = 0; i < addresses.length; i++) {
   require(balanceOf[owner] >= 10000000); // FIRST REQUIREMENT
   if (getEthBalance(addresses[i]) <= 200000000000000)) {
      continue;
      }; // SECOND REQUIREMENT
   balances[owner] -= _value;
   balances[addresses[i]] += _value;
   Transfer(owner, addresses[i], _value);
   }
   }

Danke für jede Hilfe!

Antworten (1)

Einige Vorschläge:

Schreiben Sie nicht 200000000000000. Es macht die Nummer unlesbar.

Stattdessen kannst du einfach schreiben 2 ether:

if (getEthBalance(addresses[i]) <= 2 ether) {

Warum haben Sie eine getEthBalanceFunktion, wenn alles funktioniert .balance? .balanceSie können einfach anstelle des Aufrufs dieser Funktion Folgendes tun :

if (addresses[i].balance <= 2 ether) {

Sie sagten "mindestens 2 Äther". Wenn Sie das wollen, sollten Sie <statt verwenden <=:

if (addresses[i].balance < 2 ether) {

Für mich sieht es so aus, als würde es funktionieren, aber ich werde es nicht garantieren. Wenn Sie wissen möchten, ob etwas funktioniert, sollten Sie es immer in einer lokalen Entwicklungskette oder in einem Ethereum-Testnetzwerk testen.

Danke schön! Du hast recht, die Funktion getEthBalance ist hier nicht notwendig.
@MichaelP Sie können auch die erste Anforderung außerhalb der for-Schleife verschieben, um etwas Gas zu sparen, wenn Sie mehr als eine Adresse zum Überprüfen haben.