Falsche Werte für Gesamtlieferung/ausgeschüttete Menge

Ich arbeite an der Veröffentlichung eines Tokens auf Eth und habe an einem Code herumgebastelt, damit der Token über Personen beansprucht werden kann, die 0 eth an die Vertragsadresse senden.

Bisher habe ich es geschafft, die Airdrop-Funktion zu implementieren und die Details des Tokens usw.

Womit ich Probleme habe, ist die Tatsache, dass ich bei der Ausführung des Vertrags beispielsweise 3 Millionen Tokens an die Erstellungsadresse gesendet bekomme (was ich will) und weitere 3 Millionen Tokens, die an 0x00000000000000 gesendet werden - ich nicht wissen, warum ich sehe, dass die zweiten 3m an eine andere Stelle gesendet werden.

Wenn ich versuche, diesem Problem entgegenzuwirken, indem ich mehr generiere, als ich möchte, und den verbleibenden Vorrat verbrenne, schlägt die Interaktion fehl (wahrscheinlich aufgrund der Anzahl der Token im Vorrat usw.) und ich habe Mühe, das Problem anzugehen.

Ich bin ein einfacher Programmierer und habe den größten Teil dieses Vertrags kopiert und geändert, wo ich kann. Dieser Teil hat mich einfach stecken lassen.

Ich möchte im Grunde einen Token mit einem Gesamtvorrat von 28 Millionen, von denen 3 Millionen an den Ersteller gesendet werden und 25 Millionen übrig bleiben, damit die Leute sie über die Airdrop-Funktion beanspruchen können.

So wie es ist, habe ich einen Gesamtvorrat von 28 Mio., 3 Mio. werden an den Schöpfer gesendet und 3 Mio. verschwinden im Wesentlichen bei der Erstellung, was mir einen Gesamtvorrat von 25 Mio. gibt, obwohl der Vertrag einen Gesamtvorrat von 28 Mio. vorsieht.

[
{
    "topic": "0x8940c4b8e215f8822c5c8f0056c12652c746cbc57eedbd2a440b175971d47a77",
    "event": "Distr",
    "args": [
        "fd2b03d644df375f96cda053790e013e12a621a2",
        "3000000000000000000000000"
    ]
},
{
    "topic": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
    "event": "Transfer",
    "args": [
        "0000000000000000000000000000000000000000",
        "fd2b03d644df375f96cda053790e013e12a621a2",
        "3000000000000000000000000"
    ]
}

Dies ist das Protokoll, das ich erhalte, wenn ich den Vertrag in remix.solidity ausführe. Ich vermute, das Problem liegt in einem der folgenden:

    function transfer(address _to, uint256 _amount) onlyPayloadSize(2 * 32) public returns (bool success) {

    require(_to != address(0));
    require(_amount <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_amount);
    balances[_to] = balances[_to].add(_amount);
    Transfer(msg.sender, _to, _amount);
    return true;
}

Das:

    function distr(address _to, uint256 _amount) canDistr private returns (bool) {
    totalDistributed = totalDistributed.add(_amount);
    totalRemaining = totalRemaining.sub(_amount);
    balances[_to] = balances[_to].add(_amount);
    Distr(_to, _amount);
    Transfer(address(0), _to, _amount);
    return true;

    if (totalDistributed >= totalSupply) {
        distributionFinished = true;
    }
}

oder dieses:

    function distribution(address[] addresses, uint256 amount) onlyOwner canDistr public {

    require(addresses.length <= 255);
    require(amount <= totalRemaining);

    for (uint i = 0; i < addresses.length; i++) {
        require(amount <= totalRemaining);
        distr(addresses[i], amount);
    }

    if (totalDistributed >= totalSupply) {
        distributionFinished = true;
    }
}

Wenn jemand mehr Informationen benötigt, lassen Sie es mich bitte wissen und ich bin für jede Hilfe dankbar.

Antworten (1)

Es ist in Ordnung, ich habe es geschafft, das Problem zu lösen, indem ich die Brennfunktion herausgefunden habe. Es schien, dass die Burn-Funktion aufgrund der Größe der Zahl und der Anforderung, dass beträchtlich große Zahlen in Anführungszeichen gesetzt werden müssen, fehlschlug.

Wenn ich also die 3-Millionen-Token brenne, anstatt die Funktion zu aktivieren, indem ich einfach 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Hoffe, dass dies jemandem hilft