#node.js #blockchain #web3 #binance #bep20
Вопрос:
Здравствуйте,я хочу перенести токен bep20 с одного адреса на другой адрес, используя api ankr и провайдера для web3, но получил ошибку типа
Неверный Отправитель
Вот код, который я использовал для токена передачи, я использовал идентификатор chaind для binanace, например bnb, bsc binance smart chain mainnet
let tokenAddress = '0x41XXXXXXXXXXXXXXXXXXXXXXXXXXXXXbce' // contract address
let toAddress = req.params.toaddress // where to send it
let fromAddress = req.params.fromaddress // your wallet
let pKey = req.params.privatekey.split('0x');
let privateKey = Buffer.from(pKey[1],'hex');
let contractABI = [
// transfer
{
'constant': false,
'inputs': [
{
'name': '_to',
'type': 'address'
},
{
'name': '_value',
'type': 'uint256'
}
],
'name': 'transfer',
'outputs': [
{
'name': '',
'type': 'bool'
}
],
'type': 'function'
}
]
let contract = new web32.eth.Contract(contractABI, tokenAddress, {from: fromAddress})
// 1e18 === 1 HST
let amount1 = req.params.amount;
let amount = web32.utils.toBN(amount1*1000000000000000000)
// console.log(amount);
web32.eth.getTransactionCount(fromAddress)
.then((count) => {
let rawTransaction = {
'from': fromAddress,
'gasPrice': web32.utils.toHex(20 * 1e9),
'gasLimit': web32.utils.toHex(210000),
'to': tokenAddress,
'value': 0x0,
'data': contract.methods.transfer(toAddress, amount).encodeABI(),
'nonce': web32.utils.toHex(count),
"chainId": 56
}
let transaction = new EthereumTx(rawTransaction,{chain:'bsc'})
transaction.sign(privateKey)
web32.eth.sendSignedTransaction('0x' transaction.serialize().toString('hex'),(err,hash) => {
console.log(err)
var url = "https://etherscan.io/tx/" hash
res.json({hash: hash, status_url: url,success:'true',message : 'Transaction has been pushed.'});
})
})
Ответ №1:
transaction.sign(privateKey)
web32.eth.sendSignedTransaction('0x' transaction.serialize().toString('hex'),(err,hash) => {
Вы передаете неподписанную транзакцию, вам нужно передать подписанную.
const signedTx = transaction.sign(privateKey)
web32.eth.sendSignedTransaction('0x' signedTx.serialize().toString('hex'),(err,hash) => {
Смотрите пример в файле readme (найдите const signedTx
фрагмент кода).