Wenn ich versuche, eine signierte Transaktion über ethereumjs-tx zu senden. Ich verstehe dasReturned error: invalid sender
web3Http.eth.getTransactionCount(myAddress,"pending").then(function(blockcount){
result = web3Http.utils.toWei(amt.toString(), 'ether');
count = blockcount;
var rawTransaction = {
"from":myAddress,
"gasPrice":web3Http.utils.toHex(20* 1e9),
"gasLimit":web3Http.utils.toHex(210000),
"to":contractAddress,"value":"0x0",
"data":contract.methods.approve(fromAddress,web3Http.utils.toHex(result)).encodeABI(),
"nonce":web3Http.utils.toHex(count)
}
var transaction = new Tx(rawTransaction,{'chain':'rinkeby',hardfork: 'petersburg'});
transaction.sign(Buffer.from(process.env.Key, 'hex'));
web3Http.eth.sendSignedTransaction('0x'+transaction.serialize().toString('hex'))
.on('receipt', ((data)=>{
resolve(data);
}))
Ändern Sie das Folgende
const Tx = require('ethereumjs-tx').Transaction;
var transaction_data = {
"from": myAddress,
"gasPrice": web3Http.utils.toHex(20 * 1e9),
"gasLimit": web3Http.utils.toHex(210000),
"to": contractAddress,
"value": "0x0",
"data": contract.methods.safeTransferFrom(myAddress, toAddress, tokenId).encodeABI(),
}
var privateKey = Buffer.from('abcde', 'hex')
var transaction = new Tx(transaction_data,{ chain: 'ropsten' , hardfork: 'petersburg' });
transaction.sign(privateKey);
web3Http.eth.sendSignedTransaction('0x' + transaction.serialize().toString('hex'))
.on('transactionHash', console.log);
nach unten
const Tx = require('ethereumjs-tx').Transaction;
var transaction_data = {
"from": myAddress,
"gasPrice": web3Http.utils.toHex(20 * 1e9),
"gasLimit": web3Http.utils.toHex(210000),
"to": contractAddress,
"value": "0x0",
"data": contract.methods.safeTransferFrom(myAddress, toAddress, tokenId).encodeABI(),
}
var privateKey ='abcde'
web3Http.eth.accounts.signTransaction(transaction_data, privateKey)
.then(function(value){
web3Http.eth.sendSignedTransaction(value.transaction_data)
.then(function(response){
console.log("response:" + JSON.stringify(response, null, ' '));
})
})
web3Http.eth.accounts.signTransaction
übernimmt die Last, die richtige chainId und nonce einzuschließen. Referenz: https://github.com/ChainSafe/web3.js/issues/1040
gute Stimmung
process.env.Key
nicht mit beginnt0x
.gute Stimmung
'0x'+
Teil erscheint überflüssig (und schädlich).Kryptoineer
process.env.Key
, beginnt nicht mit0x
und das Entfernen0x+
eines Teils hilft nicht