Развертывание смарт-контракта с использованием трюфеля на частном узле блокчейна на докере

Я столкнулся с проблемами при развертывании смарт-контракта в моей частной сети блокчейнов. Я создал свою блокчейн-сеть на трех виртуальных машинах (майнерах), используя puppeth на четвертой виртуальной машине (контроллере), выполнив действия, описанные в этом блоге: https://medium.com/@collin.cusce/using-puppeth-to-manual-create-an-ethereum-proof-of-author-clique-network-on-aws-ae0d7c906cce

После этого я установил трюфель на одну из виртуальных машин майнеров и инициализировал трюфель с помощью команды:

truffle init

Затем я написал простой смарт-контракт hello world, скомпилировал его и развернул на блокчейне разработки трюфелей, и он сработал. Однако я попытался развернуть его в своей частной цепочке блоков, но не могу подключиться к сети.

Команда admin.nodeInfo в консоли geth возвращает следующий вывод:

docker exec -it 954cd3955065 geth attach ipc:/root/.ethereum/geth.ipc
Welcome to the Geth JavaScript console!

instance: Geth/v1.9.25-unstable-ead81461-20201123/linux-amd64/go1.15.5
coinbase: 0xe8cc4bea2cfdfd14cddefe1141bedd109576b9a9
at block: 78558 (Tue Dec 01 2020 22:01:02 GMT+0000 (UTC))
 datadir: /root/.ethereum
 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

To exit, press ctrl-d
> admin.nodeInfo
{
  enode: "enode://7206ca3c62f6db47e1230dcf14a765d4c9b4870a66470dbb21fcc5ed2fab2167d6bcc47eec8044c42037b3e6e0017aeb8ddfc3580471da54a6c7274a0c1fe46b@10.100.2.32:30303",
  enr: "enr:-Je4QGXlVAESp8r2s1uHBJxoDLWQo8IvZsbe5sX2YRBb0un9Gdlt8nfDKQBR_j0lDPtaoCCuis4cJJlqtEHfa4tLO2EIg2V0aMfGhG5b-B6AgmlkgnY0gmlwhApkAiCJc2VjcDI1NmsxoQNyBso8YvbbR-EjDc8Up2XUybSHCmZHDbsh_MXtL6shZ4N0Y3CCdl-DdWRwgnZf",
  id: "027a351994ac1b127df56180b6210310cc0164f17f1b12c167cb167c4ffaa122",
  ip: "10.100.2.32",
  listenAddr: "[::]:30303",
  name: "Geth/v1.9.25-unstable-ead81461-20201123/linux-amd64/go1.15.5",
  ports: {
    discovery: 30303,
    listener: 30303
  },
  protocols: {
    eth: {
      config: {
        byzantiumBlock: 0,
        chainId: 1515,
        clique: {...},
        constantinopleBlock: 0,
        eip150Block: 0,
        eip150Hash: "0x0000000000000000000000000000000000000000000000000000000000000000",
        eip155Block: 0,
        eip158Block: 0,
        homesteadBlock: 0,
        istanbulBlock: 0,
        petersburgBlock: 0
      },
      difficulty: 98201,
      genesis: "0x17f752387c901db617cf0594ecd2cb9811dfcd666318c2e0e7cb0239471da979",
      head: "0xf8a37d0390558746901faa55463c127c553f02cf2d23ce0cb469fcd470c810f9",
      network: 1515
    }
  }
}

Я пробовал добавить конфигурацию сети в truffle-config.js вот так:

devnet2: {
    host: "localhost", 
    port: "30303", //port where the node is 
    network_id: "*",   
    from: 0x91cd7b879fefff34259d577a56d290b3315bf9b3    // Treats this network as if it was a public net. (default: false)
    }

затем при развертывании с помощью команды truffle deploy --network devnet2 я всегда получаю эту ошибку:

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.


/usr/local/lib/node_modules/truffle/build/webpack:/packages/provider/index.js:56
        throw new Error(errorMessage);
^
Error: There was a timeout while attempting to connect to the network.
       Check to see that your provider is valid.
       If you have a slow internet connection, try configuring a longer timeout in your Truffle config. Use the networks[networkName].networkCheckTimeout property to do this.
    at Timeout.setTimeout (/usr/local/lib/node_modules/truffle/build/webpack:/packages/provider/index.js:56:1)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)

Я попытался увеличить время ожидания, но это не сработало. Я также пробовал использовать поставщиков Web3 (HTTPProvider и IPCProvider), но безуспешно (при необходимости могу предоставить более подробную информацию).

Любая помощь приветствуется, потому что я потратил на нее много времени, ни к чему не придя. К сожалению, я не смог найти ничего о развертывании смарт-контрактов на узле, работающем на докере. При необходимости я с удовольствием расскажу подробнее о том, что я сделал.


person Mohammad Alkhufash    schedule 01.12.2020    source источник