Ошибка при развертывании смарт-контракта с Truffle в частной сети Hyperledger Besu IBFT 2.0
Проблема:
Я экспериментировал с сетями Hyperledger Besu. После этой документации: Hyperledger Besu . Мне удалось запустить тестовую сеть Blockchain с механизмом консенсуса IBFT 2.0. Некоторые вещи работают нормально, но я продолжаю сталкиваться с этой ошибкой при попытке развернуть смарт-контракт с Truffle:
Compiling your contracts...
===========================
✔ Fetching solc version list from solc-bin. Attempt #1
> Everything is up to date, there is nothing to compile.
Starting migrations...
======================
> Network name: 'quickstartWallet'
> Network id: 1337
> Block gas limit: 4700000 (0x47b760)
2_deploy_contracts.js
=====================
Replacing 'Almacenamiento'
--------------------------
Error: *** Deployment Failed ***
"Almacenamiento" exceeded the block limit (with a gas value you set).
* Block limit: 4700000 (0x47b760)
* Gas sent: 6721975 (0x6691b7)
* Try:
+ Sending less gas.
+ Setting a higher network block limit if you are on a
private network or test client (like ganache).
at /home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/deployer/src/deployment.js:365:1
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at Migration._deploy (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/migrate/Migration.js:74:1)
at Migration._load (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/migrate/Migration.js:61:1)
at Migration.run (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/migrate/Migration.js:212:1)
at Object.runMigrations (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:150:1)
at Object.runFrom (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:110:1)
at Object.run (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:87:1)
at runMigrations (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:263:1)
at Object.run (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:228:1)
at Command.run (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/command.js:140:1)
Truffle v5.3.4 (core: 5.3.4)
Node v16.1.0
Я все еще новичок и не совсем понимаю, что именно от меня требуется и где это делать.
Что я пробовал:
Я попытался развернуть смарт-контракт на Remix с помощью Injected web3 и Metamask, но получаю сообщение об ошибке только при попытке получить значения:
Но похоже, что смарт-контракт отлично развертывается и использует эфир (я не знаю, почему он использует эфир, если предполагается, что он должен использовать механизм консенсуса IBFT):
Содержание смарт-контракта таково:
// SPDX-License-Identifier: MIT
pragma solidity 0.8.5;
contract Almacenamiento {
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public {
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256){
return number;
}
}
Также попробовал добавить строки о стоимости газа в файл truffle-config.json:
gasPrice:0,
gas: "0x1ffffffffffffe"
Я также развернул тестовую сеть с контейнерами из Quorum со всеми параметрами конфигурации по умолчанию. Я прочитал файлы конфигурации, которые он использует для развертывания смарт-контрактов, и мне удалось развернуть их с помощью Truffle, но моя основная цель - развертывание в моей частной сети, как в документации, которую я упомянул в начале.
Также попробовал решение из этого вопроса, но это дает мне эту ошибку:
Compiling your contracts...
===========================
✔ Fetching solc version list from solc-bin. Attempt #1
> Everything is up to date, there is nothing to compile.
Error: Execution reverted
at lastCompletedMigration (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:201:1)
at Object.lastCompletedMigration (/home/adriang/.nvm/versions/node/v16.1.0/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:212:1)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
Truffle v5.3.4 (core: 5.3.4)
Node v16.1.0
Дополнительная информация
Это содержимое файла truffle-config.json:
const PrivateKeyProvider = require("@truffle/hdwallet-provider");
// insert the private key of the account used in metamask eg: Account 1 (Miner Coinbase Account)
const privateKey = "c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3";
module.exports = {
// See <http://truffleframework.com/docs/advanced/configuration>
// for more about customizing your Truffle configuration!
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*", // Match any network id
gasPrice:0,
gas: "0x7530"
},
develop: {
port: 8545
},
quickstartWallet: {
provider: () => new PrivateKeyProvider(privateKey, "http://localhost:8545"),
network_id: "*",
}
},
compilers: {
solc: {
version: "^0.8.5"
}
}
};
И я пытаюсь развернуть смарт-контракты с Truffle, используя эту команду:
truffle migrate --network quickstartWallet
Надеюсь, я достаточно ясно сформулировал этот вопрос для всех, кто хочет помочь. Заранее спасибо.