#solidity #ethers.js #hardhat
#надежность #ethers.js #hardhat
Вопрос:
Я пытался сохранить 10000 16-байтовых строк (строка, которую я использовал, ‘abcdefghijklmnop’) в отображении солидности: отображение (uint256 => string)
- Я пробовал отправлять все 10000 строк за одну транзакцию, но она всегда превышает максимальный лимит газа и завершается неудачей.
- Разделил эти 10000 строк на равные 10 массивов и попытался выполнить 10 транзакций.. Первая транзакция с первыми 1000 строками выполняется успешно, но следующие транзакции завершаются неудачно из-за проблемы с газом
Код надежности:
uint256 public totalGenomes;
mapping(uint256 => string) public genomesList;
function addGenome(string[] memory genome) public {
for (uint256 index = totalGenomes; index < (1000 totalGenomes); index ) {
genomesList[index] = genome[index];
}
totalGenomes = 1000;
}
Скрипт Hardhat: есть 10 файлов genomes0.txt , genomes1.txt , genomes2.txt …. каждая из которых содержит 1000 строк ‘abcdefghijklmnop’
for (i = 0; i < 10; i ) {
let filepath = `./img/genomes${i}.txt`;
let genomes1000 = [];
genomes1000 = fs.readFileSync(filepath).toString().split('n');
console.log(filepath);
await svgNFT.addGenome(genomes1000);
}
Ошибка:
Error: cannot estimate gas; transaction may fail or may require manual gas limit
Я также намерен минимизировать цену на газ для всего процесса.
Есть ли у кого-нибудь здесь предыдущий опыт работы с таким сценарием?
ОБНОВЛЕНИЕ: я справился с вышеуказанной проблемой.
Я сделал это, предложенное Miguel_LZPF на Hardhat discord:
contract.function(param1, param2..., lastfunctionparam, {gasLimit: xxxxx})
и определите gasLimit и gasPrice вручную. А теперь я застрял в другой проблеме.
https://rinkeby.etherscan.io/address/0x11740C2367a0F0465d31b3612B3A5464dC7c8Afb
Внимание! Ошибка, возникшая во время выполнения контракта [выполнение отменено]
Тем не менее, первая транзакция в цикле оказывается успешной, остальные завершаются неудачей.
Комментарии:
1. Пожалуйста, отредактируйте вопрос и покажите код, создающий неудачную транзакцию.
2. Отредактировано и обновлено 🙂 пожалуйста, помогите, если это возможно