Search code examples
dockerdocker-composeiphyperledgerhyperledger-sawtooth

Hyperledger sawtooth with docker (Test network tutorial). Connectivity problem between the nodes of the network


I am trying to settup a sawtooth network like in the following tutorial.

I use the following docker-compose.yaml file as instructed in the tutorial to create a sawtooth network of 5 nodes using the pbft consesus engine.

The problem is that once I try to check whether peering has occurred on the network by submit a peers query to the REST API on the first node from the shell container I get a connection refused answer:

curl: (7) Failed to connect to sawtooth-rest-api-default-0 port 8008: Connection refused

Connectivity among the containers seems to be working fine (I have checked with ping from inside the containers).

I suspect that the problem stems from the following line of the docker-compose.yaml file:

  sawtooth-validator -vv \
      --endpoint tcp://validator-0:8800 \
      --bind component:tcp://eth0:4004 \
      --bind consensus:tcp://eth0:5050 \
      --bind network:tcp://eth0:8800 \
      --scheduler parallel \
      --peering static \
      --maximum-peer-connectivity 10000

and more specifically the --bind option. I noticed that eth0 is not resolved properly to the IP of the container network, but instead to the loopback:

terminal output for validator 0

Do you believe that this could be the problem or is there something else I might have overlooked?

Thannk you


Solution

  • Looks like the moment I post something here the answer magically reveals itself.

    The backslash characters are not interpreted correctly so the --bind option was not taken into account and the default is the loopback.

    What I did to fix it is either put the whole command in the same line or use double backslash.