Angenommen, ich habe eine Funktion, die eine Dividende verschenkt, basierend darauf, wie viele Aktien dieser Kunde besitzt:
// Give away dividend based on how many balances of each customer has
function giveAwayDividend(uint _value) onlyOwner {
for(uint i=0;i<size();i++){
//balances[customerAddress[i]] = balances[customerAddress[i]].add(balances[customerAddress[i]]*_value/totalSupply);
//Transfer(msg.sender, customerAddress[i], (balances[customerAddress[i]] * _value / totalSupply) );
customerAddress[i].send((balances[customerAddress[i]] * _value) / totalSupply);
}
}
Das Problem ist, wie soll ich in der Lage sein, Ether in Dezimalzahlen zu senden? Wenn Kunde A 100 Coins hat, das Gesamtangebot 50000 Coins beträgt, der Gesamtbetrag der Dividende 10 Ether beträgt, sollte er 100/50000 * 10 = 0,02 Ether erhalten, aber hier denke ich, dass (balances[customerAddress[i]] * _value) / totalSupply ergeben wird ich 0?
Wie soll ich es beheben?
Wo genau ist Ihr Problem bei der Implementierung von 100/50000 * 10 = 0,02ETH? Salden werden standardmäßig in Wei behandelt, 1 Wei * 10^18 = 1ETH, also 0,02ETH == 20000000000000000 Wei, verwenden Sie diesen Einheitenumrechner .
Ich sehe darin ein grundlegenderes Problem: Wenn es customerAddress[i]
lang wird, giveAwayDividend
schlägt der Aufruf jedes Mal fehl, wenn ausgeführt wird out of gas
.
kuppel etwas
Nikita Fuchs
Thomas JayRush
Nikita Fuchs