質問
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();
これにより、エラーが表示され、 https://rinkeby.etherscan.io/tx/0x7f0ca267163219d2c8c783e9fdc8ec3a4c1d1c0c1c52d6a405c3763cac240d9cで自分で確認できる魔女Error: Transaction has been reverted by the EVM:
のトランザクションハッシュが表示されます0x7f0ca267163219d2c8c783e9fdc8ec3a4c1d1c0c1c52d6a405c3763cac240d9c
アドレスから送信するトークンを取得するために多くの変数 (特にガスと Ga) を変更しようとしましたTA1.address
が、トランザクションは EVM によって元に戻され続けます
別物。ガス制限をどれだけ高く設定しても、Etherscan はそれを 100% 使用したと言っていることに気付きました。ガス制限を非常に高い数値に設定しましたが、使用率は常に 100% です。
どんな助けでも大歓迎です。ありがとう。