Problem beim Senden des ERC20-Tokens mit web3@1.0.0

Umstand

Ich bin allen Hinweisen aus dieser GH- Ausgabe und aus anderen SO-Beiträgen gefolgt . Die Transaktion wird erfolgreich übertragen , aber es werden keine Token übertragen.

Wenn ich den Kontostand vor und nach dem Ausführen des Codes überprüfe, erhalte ich dasselbe Ergebnis: 10000, das ist die ursprüngliche Lieferung.

const Tx = require('ethereumjs-tx');

const config = require('../config');
const contract = require('../contract')('PaulCoin', config.contracts[0]);
const web3 = require('../web3');

const main = async () => {
    try {
        const count = await web3.eth.getTransactionCount(config.accounts[0]);
        const nonce = web3.utils.toHex(count);
        const txValue = web3.utils.toHex(parseInt(process.argv[2], 10) || 10);

        const from = web3.utils.toChecksumAddress(config.accounts[0]);

        const to = web3.utils.toChecksumAddress(config.accounts[1]);
        const rawTx = {
            nonce: nonce,
            from: from,
            to: to,
            value: '0x0',
            gasLimit: '0x30D40', // 54,000
            gasPrice: '0x2CB417800', // 12 gwei
            data: contract.methods.transfer(to, txValue).encodeABI(),
            chainId: '0x03'
        };

        const privateKey = Buffer.from(config.private, 'hex');
        const tx = new Tx(rawTx);
        tx.sign(privateKey);
        const serializedTx = tx.serialize();

        const receipt = await web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex'));
        console.log(`Receipt info:  ${JSON.stringify(receipt, null, '\t')}`);

        console.log(`From\'s balance after transfer: ${await contract.methods.balanceOf(from).call()}`);
        console.log(`To\'s balance after transfer: ${await contract.methods.balanceOf(to).call()}`);
    } catch (err) {
        console.log(err);
    }
};

main();

Umfeld

  • Knoten9.3.0
  • web31.0.0-beta.35
  • infuraropsten
  • ososx 13.13.5
Bei welchem ​​Block wurde Ihre Transaktion abgebaut?
Als erstes würde ich die Blocknummer abrufen, die Transaktionseingabe abrufen und dekodieren, prüfen, ob der übertragene Wert nicht 0 ist
Ich habe gerade nachgesehen, es ist nicht 0, sondern aoder 10 in Dezimalzahl, genau wie es sollte. Sie können den tx und den Vertrag selbst überprüfen .
Sind Sie sicher, dass das der richtige Code für den Vertrag ist? Es scheint keine Funktion namens zu haben transfer.
Oh, eigentlich wird die Transaktion überhaupt nicht an einen Vertrag gesendet. Die toAdresse lautet ropsten.etherscan.io/address/… , was kein Vertrag ist. (Es gibt keinen zugehörigen Code.)

Antworten (1)

Die Transaktion wird an die Adresse gesendet 0x19149798f777a3d738777334ccbf0063a04fca3b, die kein Vertrag ist.

Es findet keine ERC20-Übertragung statt, da keine Transaktion an einen ERC20-Token-Vertrag gesendet wurde.

Es funktionierte jetzt wie ein Zauber. Hut ab!