Как совершать транзакции без метамаски

На моем счету достаточно эфира для совершения транзакции. Как мне вызвать оплачиваемую функцию, которая написана в солидности? Я пытался, позвонив так

    const Web3 = require('web3');

const HDWalletProvider = require('truffle-hdwallet-provider');
const campaign = require('./build/CampaignFactory');



const provider = new HDWalletProvider(
  '12 word mnemonic',
  'https://rinkeby.infura.io/authid',
);
const web3 = new Web3(provider);
const accounts = await web3.eth.getAccounts();
      await campaign.methods.contribute().send({
        from: accounts[0],
        value: web3.utils.toWei(this.state.value, 'ether')
      });

Но я получаю эту ошибку "внутренний газ слишком низкий". Раньше с расширением метамаски он запрашивал подтверждение, если я нажимаю «Отправить» из метамаски, тогда транзакция завершалась успешно. Теперь, когда я удалил расширение метамаски, я получаю эту ошибку. Я хочу сделать эту транзакцию без метамаски. Возможно ли это сделать?

Проверьте цену на газ по умолчанию и лимит газа, так как метамаск может указать лимит и цену на газ по умолчанию для вас. var gasPrice = web3.eth.gasPrice; console.log(gasPrice.toString(10));
Kherwa офигенно спасибо за ответ. Теперь я могу совершать транзакции без метамаски.

Ответы (2)

вы также можете явно передать gasLimit и gasPrice.

await campaign.methods.contribute().send({
            from: accounts[0],
            value: web3.utils.toWei(this.state.value, 'ether'),
            gas: 'gasLimit',
            gasPrice: 'gasPriceInWei'
          });

Я решил это, просто пропустив газ, как это.

const accounts = await web3.eth.getAccounts();
  await campaign.methods.contribute().send({
    from: accounts[0],
    value: web3.utils.toWei(this.state.value, 'ether'),
    gas: '1000000'
  });