我目前使用的是 Web3 JavaScript API 的 0.2xx 版本。我通过在 solidity 中创建智能合约(在 REMIX IDE 上)部署了我的自定义 ERC20 令牌。我安装了 MetaMask 并在 https://wallet.ethereum.org/ 上进行了测试,以将一些自定义 ERC 令牌发送到我的另一个帐户。它运作良好。我想使用 Web3js 在我的 JavaScript 代码中添加“发送自定义 ERC20 令牌”功能。
下面是我的代码。
var http = require('http');
var Web3 = require('web3');
var Tx = require('ethereumjs-tx');
var abi = [{"...."}];
var data = '0x00..';
var contract_addr = '0x00..';
var owner = '0x00..';
var web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/"));
web3.eth.getBlock("latest", (error, result) => {
//console.log('error:', error);
//console.log('results', result);
});
var myContract = web3.eth.contract(abi);
var myContractInstance = myContract.at(address);
eb3.eth.getDefaultAccount = owner;
var defaultAccount = web3.eth.getDefaultAccount;
console.log('DefaultAccount => ', defaultAccount);
var total = myContractInstance.totalSupply();
var balance = myContractInstance.balanceOf(defaultAccount);
console.log('DefulatAccount total => ',total);
console.log('DefaultAccount balance => ',balance);
var to = '0x00..';
var isAddress = web3.isAddress(to);
console.log('isAddress(to) => ',isAddress);
console.log('balanceOf(to) => ',myContractInstance.balanceOf(to));
我正在“Ropsten 测试网”上工作,我使用 sendRawTransaction()
发送了一些“以太币”进行测试。但我想做的只是发送我的自定义 ERC20 令牌。不是以太。如何在此脚本中发送我自己的令牌?我不知道。我尝试使用 sendTransaction()
如下所示。
var rawTx = {
from : defaultAccount,
nonce : nonceHex,
gasPrice : gasPriceHex,
gas : gasHex,
to : to,
value : 100,
data : data
};
web3.eth.sendTransaction(rawTx, function(err, transactionHash) {
if (!err)
console.log('transactionHash => ',transactionHash);
else
console.log(err);
});
我不断收到错误。
Error: Invalid JSON RPC response: ""
at Object.InvalidResponse (/Users/rachel/dev/test/node_modules/web3/lib/web3/errors.js:38:16)
at XMLHttpRequest.request.onreadystatechange (/Users/rachel/dev/test/node_modules/web3/lib/web3/httpprovider.js:119:24)
at XMLHttpRequestEventTarget.dispatchEvent (/Users/rachel/dev/test/node_modules/xhr2/lib/xhr2.js:64:18)
at XMLHttpRequest._setReadyState (/Users/rachel/dev/test/node_modules/xhr2/lib/xhr2.js:354:12)
at XMLHttpRequest._onHttpResponseEnd (/Users/rachel/dev/test/node_modules/xhr2/lib/xhr2.js:509:12)
at IncomingMessage.<anonymous> (/Users/rachel/dev/test/node_modules/xhr2/lib/xhr2.js:469:24)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1056:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
我真的不明白它有什么问题。请让我知道一些方法来处理这个问题。谢谢!
原文由 rachel_hong 发布,翻译遵循 CC BY-SA 4.0 许可协议
以 EOS 代币转账为例。
下面的代码需要
web3
和ethereumjs-tx
。如果您还没有安装它们,请使用npm install web3 ethereumjs-tx
安装它们您还可以使用 https://etherscan.io 检查交易。
交易发送后,您可以通过 https://etherscan.io/address/0xaa597b7e8aaffe9f2a187bedb472ef3455957560#tokentxns 查看,您会在
Transactions
文件中看到如下待处理交易,但您看不到它在Token Transfers
字段中。等待1分钟左右,可以看到
Transactions
字段和Token Transfers
字段都成功了。