Отправить маркер ERC20 с помощью web3

В настоящее время я использую версию XXX Javascript API версии 0.2xx. Я развернул свой пользовательский маркер ERC20, создав интеллектуальный контракт в солидности (в REMIX IDE). Я установил MetaMask и прошел тест на https://wallet.ethereum.org/, чтобы отправить некоторый пользовательский токен ERC в другую мою учетную запись. Он работал хорошо. Я хочу добавить ‘send custom ERC20 Token’ в мой код javascript, используя Web3.

Вот мой код ниже.

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 Testnet», и я отправил «эфир» для тестирования с помощью sendRawTransaction() . Но то, что я хочу сделать, это просто отправить мой пользовательский маркер ERC20. не эфир. Как я могу отправить свой токен в этом скрипте? Понятия не имею. Я попытался использовать sendTransaction() как 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. (/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) 

Я действительно не могу понять, что с ним не так. Пожалуйста, дайте мне знать, как с этим справиться. Благодаря!

Ну, вы можете попробовать что-то вроде этого:

 `myContractInstance.transfer(to,amount, {gas:estimateGas, gasPrice:gasPrice,from:fromAddr, nonce: nonceis}, function(err,txhash) { console.log("error: "+err); console.log("txhash: "+txhash); } ` 

Здесь ‘to’ – адрес, которому вы хотите отправить токены
количество сумм, которые вы хотите отправить
« GasGas », который вы хотите поставить на выполнение транзакции
цена « gasPrice » для каждой газовой единицы в терминах wei
fromAddr ‘ адрес, откуда вы хотите отправить эти жетоны. Поскольку транзакция будет подписана с использованием этого адреса, это должен быть адрес, выбранный в метамаске или переданный в infura
« nonceis » nonce для транзакции

Ошибка: Недействительный ответ JSON RPC: «” означает, что web3 не может подключиться к узлу rpc. Попробуйте запустить с помощью ::

для тестовой сети

 geth --testnet --rpc --rpcaddr 127.0.0.1 --rpcport 8545 --rpccorsdomain '*' --rpcapi personal,admin,db,eth,net,web3,miner,shh,txpool,debug --ws --wsaddr 127.0.0.1 --wsport 8546 --wsorigins '*' --wsapi personal,admin,db,eth,net,web3,miner,shh,txpool,debug --maxpeers 25 0 --gasprice 100 

для сети

 geth --rpc --rpcaddr 127.0.0.1 --rpcport 8545 --rpccorsdomain '*' --rpcapi personal,admin,db,eth,net,web3,miner,shh,txpool,debug --ws --wsaddr 127.0.0.1 --wsport 8546 --wsorigins '*' --wsapi personal,admin,db,eth,net,web3,miner,shh,txpool,debug --maxpeers 25 0 --gasprice 100 

Теперь в вашем случае (используя узел инфраструктуры infura), получите идентификатор от infura.io. Это должно быть так:

 https://ropsten.infura.io/id 
Давайте будем гением компьютера.