Ich verwende ethereumJs und web3.js, um erc20-Token von einem Konto zu einem anderen Konto zu senden. Ich kann den Hash der Transaktion abrufen, kann aber keine Transaktionsdetails auf dem Etherscan sehen.
var Web3 = require('web3');
var express = require('express');
var router = express.Router();
var fs = require("fs");
var EthereumTx = require('ethereumjs-tx');
var crypto = require('crypto');
var secp256k1 = require('secp256k1');
var keccak = require("keccak");
router.get('/', (req, res, next) => {
if ( typeof web3 !== 'undefined' && typeof web3 !== undefined) {
web3 = new Web3(web3.currentProvider);
console.log('if');
}
else{
web3 = new Web3(new Web3.providers.HttpProvider("https://rinkeby.infura.io/tPNyqnWI32IepQh2lrMf"));
var count = web3.eth.getTransactionCount("0xD8d9e3fE93315b8ce838E39c4696438A8d8E66F3");
var abiArray = JSON.parse(fs.readFileSync('./public/mycoin.json', 'utf-8'));
var contractAddress = "0x9A48831A220c793ed4CcF0dCbD5390fB56EF9B91";
var contract = web3.eth.contract(abiArray).at(contractAddress);
var number = web3.eth.blockNumber;
var rawTransaction = {
"from": "0x95297713bdb43515420d9662a88516219085bb8a",
"nonce": "0x001",
"gasPrice": "0x9184e72a000",
"gasLimit": "0x7458",
"to": "0xDED54CC5f578Aa39c1083dbe16D68a28C776cA02",
"value": "0x012",
"data": contract.transfer.getData("0x9A48831A220c793ed4CcF0dCbD5390fB56EF9B91", 10, {from: "0xD8d9e3fE93315b8ce838E39c4696438A8d8E66F3"}),
"chainId": "0x04"
};
var privKey = new Buffer('9e37167fd8b807a3805e41e34e07dd5472512ec568878c0a08c49cec0c5f9a4b', 'hex');
console.log('else');
var tx = new EthereumTx(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);
}
});
}
});
module.exports = router;
Ich übertrage auch den Trx-Hash an das Netzwerk, bekomme aber einen Fehler ---- rlp: Wertgröße überschreitet die verfügbare Eingabelänge
Es scheint, Sie haben rückwärts, wie transfer
und to
sollten Sie sich verhalten.
var rawTransaction = {
"from": "0x2222...", // <-- Address owner tokens
"nonce": "0x..", // <-- eth.getTransactionCount(from)
"gasPrice": "0x9184e72a000",
"gasLimit": "0x7458", // <-- Might be low, try 90k = 0x015f90
"to": "0x4444...", // <-- Token address
"value": "0x00", // <-- Most tokens require value to be zero
"data": contract.transfer.getData("0x999999...", 10), // <-- Recipienet
"chainId": "0x04"
};
Um die Token-Menge zu berechnen, berücksichtigen Sie die Dezimalstellen. Wenn Dezimalstellen 5 sind und Sie 2 Token übertragen möchten, ist der Wert 200000. Der häufigere Wert ist 18 Dezimalstellen, um 11 Token zu senden, müssen Sie berechnen 11 * 10**18
.