Warum ist das Inhaberguthaben höher als das Gesamtangebot? Warum wurde nichts zum Vertrag geschickt?

Mein Token ist mit einem Vorrat von 100.000.000 konstruiert. Bei jeder Transaktion werden 0,007 % verbrannt und weitere 0,003 % werden an den Vertrag gesendet, wodurch sie Teil des Dividendenpools werden. Hier ist die Übertragungsfunktion:

function transfer(address to, uint256 value) public returns (bool) {
require(value <= _balances[msg.sender]);
require(to != address(0));

uint256 tokensToBurn = value.div(100000).mul(7);
uint256 tokensToDividend = value.div(100000).mul(3);
uint256 tokensToTransfer = value.sub(tokensToBurn).sub(tokensToDividend);

_balances[msg.sender] = _balances[msg.sender].sub(tokensToTransfer);
_balances[to] = _balances[to].add(tokensToTransfer);

_totalSupply = _totalSupply.sub(tokensToBurn);
_totalDividend = _totalDividend.add(tokensToDividend);

emit Transfer(msg.sender, to, tokensToTransfer);
emit Transfer(msg.sender, address(0), tokensToBurn);
emit Transfer(msg.sender, address(this), tokensToDividend);

return true;

}

Nach der Übertragung von 1 Million Token von Adresse 1 nach Adresse 2 waren die Salden wie folgt:

Adresse 1 : 99.000.100 - Falsch, sollte 99.000.000 sein Adresse 2 : 999.900 - Richtig

Gesamtvorrat: 99.999.930 - Richtig, deutet darauf hin, dass 70 verbrannt wurden.

Sie werden jedoch feststellen, dass das kombinierte Guthaben der beiden Adressen 100.000.000 beträgt und es kein Vertragsguthaben gibt, was darauf hindeutet, dass etwas schief gelaufen ist. Das Angebot spiegelt wider, was passieren sollte, aber die Gesamtbilanz ist inkonsistent.

Was habe ich falsch gemacht?

Antworten (1)

Was habe ich falsch gemacht?

FALSCH

_balances[msg.sender] = _balances[msg.sender].sub(tokensToTransfer);

RICHTIG

_balances[msg.sender] = _balances[msg.sender].sub(value);

Warum wurde nichts zum Vertrag geschickt?

Ich habe keinen Code gesehen, um das Guthaben für den Vertrag hinzuzufügen