Actualmente estoy escribiendo una función usando Web3 para enviar nuestros tokens, actualmente está enviando ETH en su lugar. Dado que estamos haciendo esto directamente en la red principal (nos gusta correr riesgos), las tarifas de transacción se acumulan.
Si alguien puede ayudarnos a ver cómo enviar nuestro token en lugar de ETH, sería muy apreciado.
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);
});
Prácticamente copié y pegué esta pregunta: ¿Cómo enviar el token ERC20 usando la API Web3? . Parecían haber encontrado la forma de enviar tokens mientras que yo sigo enviando ETH.
Cualquier consejo sería muy apreciado.
Gracias
Esta línea está mal:
"to": to_addr,
Debería ser:
"to": contract_addr,
Está llamando a una función en un contrato inteligente, por lo que el contrato inteligente es el destinatario de esa transacción. (Luego actualizará su libro mayor interno para dar cuenta de la transferencia del token).
NataciónG
usuario19510
veeresh kumbar
usuario19510