Итак, после одного дня поиска и множества фиолетовых ссылок я ничего не могу поделать, кроме как задать вопрос о топи c, который задавали дюжину раз, но каждый вопрос почему-то уникален.
Информация :
Узел v12.16.1
Тест Ропстена tnet через Infura API
"web3": "1.2.6"
"ethereumjs -tx": "2.1.2"
Пример токена ERC20 , изменение имени токена и десятичных знаков на 8 и pragma solidity ^0.5.2;
Важное примечание: Смарт-контракт компилируется и разворачивается с помощью Remix (с использованием компилятора 0.5.3), transfer()
метод успешно протестирован с помощью Metamask.
Этот код вызывает эту ошибку: - Транзакция была Отменено EVM
const Web3 = require("web3");
const compiled = require("./compile");
const Tx = require("ethereumjs-tx").Transaction;
const contractAddress = "0x27...";
const address = "0x02...";
const privateKey = "A475...";
const bufferedPrivKey = Buffer.from(privateKey, "hex");
const rpcUrl = "https://ropsten.infura.io/v3/{INFURA_API_KEY}";
const web3 = new Web3(new Web3.providers.HttpProvider(rpcUrl));
const call = async () => {
try {
const abi = compiled.abi; //copied from remix
const contract = await new web3.eth.Contract(abi, contractAddress, {
from: address
});
const gasPrice = await web3.eth.getGasPrice();
const nonce = await web3.eth.getTransactionCount(address);
const data = await contract.methods.transfer("0x2B0...", 1000).encodeABI();
const rawTx = {
from: address,
gasPrice: web3.utils.toHex(gasPrice),
gas: web3.utils.toHex(100000),
data: data,
nonce: web3.utils.toHex(nonce),
value: 0x00,
chainId: 0x03 //ropsten i guess?
};
const tx = new Tx(rawTx, { chain: "ropsten" });
tx.sign(bufferedPrivKey);
const serializedTx = tx.serialize();
await web3.eth.sendSignedTransaction("0x" + serializedTx.toString("hex"));
} catch (err) {
console.log(err);
console.log(err.stack);
}
};
call();
Забавные факты:
У меня возникла та же проблема, когда я пытался развернуть смарт-контракт через web3.eth.sendSignedTransaction()
После кроличьей норы я нашел потенциальное решение для понижения версии web3 до 1.0.0-beta.34 и когда я у меня были проблемы с газом - трансакция заняла много времени, и в итоге у меня кончился газ Большинство проблем были: intrinsic gas too low
или Transaction ran out of gas. Please provide more gas