На моем счету достаточно эфира для совершения транзакции. Как мне вызвать оплачиваемую функцию, которая написана в солидности? Я пытался, позвонив так
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')
});
Но я получаю эту ошибку "внутренний газ слишком низкий". Раньше с расширением метамаски он запрашивал подтверждение, если я нажимаю «Отправить» из метамаски, тогда транзакция завершалась успешно. Теперь, когда я удалил расширение метамаски, я получаю эту ошибку. Я хочу сделать эту транзакцию без метамаски. Возможно ли это сделать?
вы также можете явно передать 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'
});
херва
Трину