Wie man Transaktionen ohne Metamaske durchführt

Mein Konto hat genug Ether, um eine Transaktion durchzuführen. Wie rufe ich eine zahlbare Funktion auf, die in Solidität geschrieben ist? Ich habe es versucht, indem ich so anrufe

    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')
      });

Aber ich bekomme diesen Fehler "Eigengas zu niedrig". Früher mit der Metamask-Erweiterung wurde eine Bestätigung angefordert, wenn ich auf „Senden“ von Metamask klicke, dann war die Transaktion erfolgreich. Jetzt, da ich die Metamask-Erweiterung entfernt habe, erhalte ich diesen Fehler. Ich möchte diese Transaktion ohne Metamask durchführen. Ist es möglich zu tun?

Überprüfen Sie den Standardgaspreis und das Gaslimit, da Metamask möglicherweise das Standardgaslimit und den Standardpreis für Sie festlegt. var gasPrice = web3.eth.gasPrice; console.log(gasPrice.toString(10));
Kherwa super danke für die Antwort. Jetzt kann ich Transaktionen ohne Metamaske durchführen.

Antworten (2)

Sie können gasLimit und gasPrice auch explizit übergeben.

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

Ich habe es gelöst, indem ich einfach so Gas gegeben habe.

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