¿Por qué el saldo del tenedor es mayor que la oferta total? ¿Por qué no se ha enviado nada al contrato?

Mi token está construido con un suministro de 100,000,000. En cada transacción, se quema el 0,007 % y se envía un 0,003 % adicional al contrato, lo que lo convierte en parte del grupo de dividendos. Aquí está la función de transferencia:

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;

}

Después de transferir 1 millón de tokens de la Dirección 1 a la Dirección 2, los saldos quedaron así:

Dirección 1 : 99 000 100 - Incorrecta, debería ser 99 000 000 Dirección 2 : 999 900 - Correcta

Suministro total: 99,999,930 - Correcto, sugiere que se han quemado 70.

Sin embargo, notará que el saldo combinado de las dos direcciones es 100,000,000 y no hay saldo de contrato, lo que sugiere que algo salió mal. El suministro refleja lo que debería estar sucediendo, pero el balance total es inconsistente.

¿Qué he hecho mal?

Respuestas (1)

¿Qué he hecho mal?

EQUIVOCADO

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

CORRECTO

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

¿Por qué no se ha enviado nada al contrato?

No vi ningún código para agregar saldo para el contrato