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!
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 getEthBalance
Funktion, wenn alles funktioniert .balance
? .balance
Sie 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.
Michael P
Ismael