Senden Sie programmgesteuert Token von der Ethereum-Adresse

Ich möchte einen Dienst erstellen, um Token von verschiedenen Wallets zu senden. Ich habe die Ethereum-Transaktionen bereits erstellt, aber ich bekomme noch keine Token.

Anscheinend brauche ich das ABI, aber ich möchte es vermeiden. Ich habe gesehen, dass myetherwallet es Ihnen erlaubt, Token zu senden, ohne etwas anderes als das Ziel und das Benzin zu fragen.

Einige Fragen:

Soll ich den privaten Schlüssel meiner Ethereum-Adresse verwenden, um diese Transaktion zu signieren? oder es ist ein anderer privater Schlüssel wie der Vertragsschlüssel

Wenn myetherwallet mir erlaubt, Token von einer Adresse an eine andere zu senden, warum kann ich das nicht programmatisch tun? Was vermisse ich?

Danke

Antworten (1)

myetherwallet ermöglicht es Ihnen, Token zu senden, ohne etwas zu fragen

Die meisten Token werden mit dem ERC20-Standard implementiert und definieren klar das Funktionsformat für die Übertragung von Token. Es sind also nur die anderen Teile der Transaktion erforderlich.

Soll ich den privaten Schlüssel meiner Ethereum-Adresse verwenden, um diese Transaktion zu signieren? oder es ist ein anderer privater Schlüssel wie der Vertragsschlüssel

Der Vertrag hat keinen privaten Schlüssel. Wenn Ihr Konto über Token verfügt, können diese Token von diesem Konto übertragen werden, wenn dieses Konto eine signierte TXN zur Übertragung von Token einreicht.

Wie kommt es, dass ich das nicht programmatisch tun kann? Was vermisse ich?

Sie können es programmgesteuert tun. Die Token-Übertragungsfunktion befindet sich im Vertrag. Sie können diese Funktion vom Konto des Absenders aufrufen. Und die Token des Absenders würden übertragen. Code, um dies zu erreichen, finden Sie unter How to send ERC20 token using Web3 API?

var count = web3.eth.getTransactionCount("0x26...");
var abiArray = JSON.parse(fs.readFileSync('mycoin.json', 'utf-8'));
var contractAddress = "0x8...";
var contract = web3.eth.contract(abiArray).at(contractAddress);
var rawTransaction = {
    "from": "0x26...",
    "nonce": web3.toHex(count),
    "gasPrice": "0x04e3b29200",
    "gasLimit": "0x7458",
    "to": contractAddress,
    "value": "0x0",
    "data": contract.transfer.getData("0xCb...", 10, {from: "0x26..."}),
    "chainId": 0x03
};

var privKey = new Buffer('fc3...', 'hex');
var tx = new Tx(rawTransaction);

tx.sign(privKey);
var serializedTx = tx.serialize();

web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'), function(err, hash) {
    if (!err)
        console.log(hash);
    else
        console.log(err);
});

Anscheinend brauche ich das ABI, aber ich möchte es vermeiden.

Sie können ABI von jedem ERC20-Token verwenden, da alle ERC20-Token diese eine Funktion haben, die Sie aufrufen möchten.

Können Sie bitte das gesamte Tutorial davon teilen, damit ich es von Anfang an implementieren kann