Senden von ETH- statt ERC20-Token Web3

Ich schreibe gerade eine Funktion mit Web3, um unsere Token zu senden, es sendet derzeit stattdessen ETH. Da wir dies direkt im Hauptnetzwerk tun (wir gehen gerne Risiken ein), summieren sich die Transaktionsgebühren.

Wenn uns jemand helfen kann zu sehen, wie wir unseren Token anstelle von ETH senden können, wäre dies sehr zu schätzen.

    const web3 = new Web3();
web3.setProvider(new 
web3.providers.HttpProvider("https://mainnet.infura.io/XXXXXX"));
var count = web3.eth.getTransactionCount(from_addr);
var contract =  web3.eth.contract(abi).at(contract_addr);

var data = contract.transfer.getData(to_addr, 10, {from: from_addr});
var gasPrice = web3.eth.gasPrice;
var gasLimit = 90000;

var rawTransaction = {
  "from": from_addr,
  "nonce": web3.toHex(count),
  "gasPrice": web3.toHex(gasPrice),
  "gasLimit": web3.toHex(gasLimit),
  "to": to_addr,
  "value": 0,
  "data": data,
  "chainId": 0x01
};

var privKey = new Buffer(priv_key, '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);
});

Ich habe diese Frage so ziemlich kopiert und eingefügt: Wie sende ich ERC20-Token mit der Web3-API? . Sie schienen den Weg gefunden zu haben, Token zu senden, während ich immer noch ETH sende.

Jeder Rat wäre sehr willkommen.

Danke

Antworten (1)

Diese Zeile ist falsch:

"to": to_addr,

Es sollte sein:

"to": contract_addr,

Sie rufen eine Funktion in einem Smart Contract auf, also ist der Smart Contract der Empfänger dieser Transaktion. (Er wird dann sein internes Hauptbuch aktualisieren, um die Übertragung des Tokens zu berücksichtigen.)

Ach natürlich! Danke schön! Ich konnte das Problem nicht sehen! Zusätzlich in getData(to, value, from). Wenn der Token 18 Dezimalstellen hat, wäre 10 dann 10 (und dann 18 Nullen) oder nur 10?
Ja, mit 18 Dezimalstellen sind 10 „Token“ eine 10 gefolgt von 18 Nullen.
@smarx Ich erhalte eine Fehlermeldung, wenn ich diesen Code ausführe, um Token im Hauptnetzwerk zu übertragen. Ich führe nicht testrpc aus, da es für das Testnetzwerk verwendet wird. Was mache ich falsch? BITTE HILFE unten ist der Fehler, den ich erhalte ====== > (Knoten: 1044) UnhandledPromiseRejectionWarning: Fehler: Ungültige JSON-RPC-Antwort: „“ bei Object.InvalidResponse .....
Kommentare sind nicht dazu da, neue Fragen zu stellen.