token - 使用 web3 Ropsten Infura 测试网传输 ERC20 代币

标签 token blockchain ethereum solidity

我使用示例 solidity 代码教程创建了一个合约代币。它有一个名为 transfer 的功能,可以在账户之间发送代币:

function transfer(address _to, uint256 _value)

我现在需要使用 web3 连接到这个合约,然后将生成的一定数量的代币发送到另一个账户。很长一段时间以来,我一直在为如何做到这一点而苦苦挣扎,希望这个社区能提供帮助。这是我到目前为止所拥有的,使用 web3 版本 0.20.0:

const Web3 = require("web3");
const web3 = new Web3();
web3.setProvider(new 
web3.providers.HttpProvider("https://ropsten.infura.io/XXXXXX"));
var abi = [ {} ] // redacted on purpose
var count = web3.eth.getTransactionCount("0x9...");
var abiArray = abi;
var contractAddress = "0x2...";
var contract =  web3.eth.contract(abiArray).at(contractAddress);

var data = contract.transfer.getData("0x2...", 10000, {from: "0x9..."});
var gasPrice = web3.eth.gasPrice;
var gasLimit = 90000;

var rawTransaction = {
  "from": "0x9...",
  "nonce": web3.toHex(count),
  "gasPrice": web3.toHex(gasPrice),
  "gasLimit": web3.toHex(gasLimit),
  "to": "0x2...",
  "value": "0x1",
  "data": data,
  "chainId": 0x03
};

var privKey = new Buffer('XXXXXXXXXXXXXX', '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 代币。我真的不知道为什么会这样,非常感谢任何帮助。

最佳答案

这可能会迟到,但对于 future 的用户来说。 您发送以太币代替 token 的原因是,在原始交易值(value)字段中,您输入的是“0x1”。要发送 ERC20 token ,您应该将其保留在“0x0”。

关于token - 使用 web3 Ropsten Infura 测试网传输 ERC20 代币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47003273/

相关文章:

c - 如何将 char 指针数组的索引设置为 char 指针?

R/googlesheets4 非交互式 session

Laravel 4 - CSRF token 永远不会改变

testing - 如何发送wei/eth到合约地址? (使用松露javascript测试)

javascript - 没有为以太坊智能合约生成事件日志

ethereum - Solidity:如何在 compile.js 文件中编译多个智能合约?

ethereum - 有什么办法可以获取特定合约地址的库地址吗?

php - 为忘记密码生成随机 token 的最佳实践

memory - 在以太坊 Solidity 中, "memory"关键字的用途是什么?

python - 如何创建以太钱包?