Ошибка при развертывании смарт-контракта с 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

Надеюсь, я достаточно ясно сформулировал этот вопрос для всех, кто хочет помочь. Заранее спасибо.

0 ответов

Другие вопросы по тегам