Отправка ETH вместо токена ERC20 Web3

В настоящее время я пишу функцию, использующую 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.

Любые советы будут высоко ценится.

Спасибо

Ответы (1)

Эта строка неверна:

"to": to_addr,

Должен быть:

"to": contract_addr,

Вы вызываете функцию в смарт-контракте, поэтому смарт-контракт является получателем этой транзакции. (Затем он обновит свою внутреннюю книгу, чтобы учесть передачу токена.)

Ну конечно! Спасибо! Я не мог видеть проблему! Кроме того, в getData(to, value, from). Если токен имеет 18 знаков после запятой, будет ли 10 равным 10 (и затем 18 0) или это просто 10?
Да, с 18 десятичными знаками 10 «жетонов» — это 10, за которыми следуют 18 нулей.
@smarx Я получаю сообщение об ошибке, когда запускаю этот код для передачи токенов в основной сети, я не запускаю testrpc, потому что он используется для тестовой сети, что я делаю неправильно ПОЖАЛУЙСТА, ПОМОГИТЕ ниже, это ошибка, которую я получаю ====== > (узел: 1044) UnhandledPromiseRejectionWarning: Ошибка: неверный ответ JSON RPC: "" в Object.InvalidResponse .....
Комментарии не для того, чтобы задавать новые вопросы.