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
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.)
SchwimmenG
Benutzer19510
veeresh kumbar
Benutzer19510