问题
为了在 EVM 上成功交易,我需要进行哪些更改?我在下面的代码中哪里出错了。
我做了什么
我正在尝试使用 Web3 将代币从我的钱包地址发送到另一个钱包地址。以下是我尝试执行此操作的方法,但我的交易从未成功。
初始化我的令牌 web3 和 ABI 代码
//TestAccount01
const TA1 = {
address: '0x57ece112876fb585c6a2b37114c91be752b7578c',
privateKey:
'privatekey',
};
const Web3 = require('web3');
const web3 = new Web3(
'https://rinkeby.infura.io/v3/api_endpint_url_id'
);
let minABI = [
// transfer
{
constant: false,
inputs: [
{
name: '_to',
type: 'address',
},
{
name: '_value',
type: 'uint256',
},
],
name: 'transfer',
outputs: [
{
name: '',
type: 'bool',
},
],
type: 'function',
},
];
将令牌 TXN 发送到地址的函数
async function sendToken() {
let contract = new web3.eth.Contract(
minABI,
//contract address
'0xD92E713d051C37EbB2561803a3b5FBAbc4962431'
);
let tx = await contract.methods.transfer(TA1.address, 1000);
let data = tx.encodeABI();
let gas = 61963;
let gasPrice = 1649999980;
console.log('creating transaction');
let transaction = await web3.eth.accounts.signTransaction(
{
data,
gas,
gasPrice,
},
'my private key'
);
console.log('sending transaction');
let recipt = await web3.eth
.sendSignedTransaction(transaction.rawTransaction)
.catch(err => {
console.log('error in sending tx');
console.error(err);
});
console.log(recipt);
}
await sendToken();
这给了我错误Error: Transaction has been reverted by the EVM:
和一个女巫的交易哈希,你可以在https://rinkeby.etherscan.io/tx/0x7f0ca267163219d2c8c783e9fdc8ec3a4c1d1c0c1c52d6a405c3763cac240d9c0x7f0ca267163219d2c8c783e9fdc8ec3a4c1d1c0c1c52d6a405c3763cac240d9c
看到自己
我尝试更改许多变量(尤其是 gas 和 Ga),试图让代币从我的地址发送到,TA1.address
但交易不断被 EVM 还原
另一件事。我注意到,无论我设置的 gas 限制有多高,Etherscan 都表示它已经使用了 100%。我已经为非常高的数字设置了气体限制,但使用率始终是 100%。
任何帮助将不胜感激。谢谢。