В настоящее время я пишу функцию, использующую Web3 для отправки наших токенов, вместо этого она отправляет ETH. Поскольку мы делаем это прямо в основной сети (мы любим рисковать), транзакционные сборы увеличиваются.
Если кто-нибудь может помочь нам увидеть, как отправить наш токен, а не ETH, мы будем очень признательны.
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);
});
Я в значительной степени скопировал и вставил этот вопрос: Как отправить токен ERC20 с помощью Web3 API? . Похоже, они нашли способ отправлять токены, а я все еще отправляю ETH.
Любые советы будут высоко ценится.
Спасибо
Эта строка неверна:
"to": to_addr,
Должен быть:
"to": contract_addr,
Вы вызываете функцию в смарт-контракте, поэтому смарт-контракт является получателем этой транзакции. (Затем он обновит свою внутреннюю книгу, чтобы учесть передачу токена.)
ПлаваниеG
пользователь19510
виреш кумбар
пользователь19510