Передача токена ERC20 с Web3 JS на Infura Ropsten Tes tnet - транзакция была отменена EVM - PullRequest
1 голос
/ 06 марта 2020

Итак, после одного дня поиска и множества фиолетовых ссылок я ничего не могу поделать, кроме как задать вопрос о топи 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

...