Web3js
如何使用 Web3 API 發送 ERC20 令牌?
我使用本指南在 Ropsten 測試網中創建了一些自定義令牌: https ://steemit.com/ethereum/@maxnachamkin/how-to-create-your-own-ethereum-token-in-an-hour-erc20-verified
我可以使用 MetaMask 將其發送到其他帳戶,但無法弄清楚如何使用 web3、ethereumjs-tx 和 Web3 JavaScript 應用程序 API 在 node.js 中執行此操作。
我目前的程式碼如下所示:
var count = web3.eth.getTransactionCount("0x26..."); var abiArray = JSON.parse(fs.readFileSync('mycoin.json', 'utf-8')); var contractAddress = "0x8..."; var contract = web3.eth.contract(abiArray).at(contractAddress); var rawTransaction = { "from": "0x26...", "nonce": web3.toHex(count), "gasPrice": "0x04e3b29200", "gasLimit": "0x7458", "to": contractAddress, "value": "0x0", "data": contract.transfer("0xCb...", 10, {from: "0x26..."}), "chainId": 0x03 }; var privKey = new Buffer('fc3...', '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); });
在這種情況下,程式碼只是在部分停止,
contract.transfer("0xCb...", 10, {from: "0x26..."})
請求只是掛起。找不到任何做類似事情的指南。在這裡找到了一些程式碼:和這裡:
但仍然卡住了,不知道我錯過了什麼。
我在 node.js express 應用程序中使用 web3.js 版本:0.20.1。我在 Virtualbox Ubuntu 機器上執行 Parity。
正確的程式碼如下所示:
var count = web3.eth.getTransactionCount("0x26..."); var abiArray = JSON.parse(fs.readFileSync('mycoin.json', 'utf-8')); var contractAddress = "0x8..."; var contract = web3.eth.contract(abiArray).at(contractAddress); var rawTransaction = { "from": "0x26...", "nonce": web3.toHex(count), "gasPrice": "0x04e3b29200", "gasLimit": "0x7458", "to": contractAddress, "value": "0x0", "data": contract.transfer.getData("0xCb...", 10, {from: "0x26..."}), "chainId": 0x03 }; var privKey = new Buffer('fc3...', '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); });