如何解决ST 1.1.2中的随机无效创世块?

时间:2019-01-21 10:24:14

标签: hyperledger-sawtooth

我在docker上安装了ST 1.1.2,但结果不一致。有时可以很好地生成创世纪图块,我可以提交新的批次/图块。另一方面,有时由于“失败的”共识数据,devmode处理器不处理创世块。

我在多个具有相同随机行为的AWS Ubuntu 16.04实例上运行了该命令。我还在Ubuntu上本地安装了1.1.2,但始终遇到相同的问题。

sudo docker-compose -f sawtooth-default.yaml up
devmode_engine_rust: | Received message: BlockNew(Block(block_num: 0 ...*
devmode_engine_rust: | Checking consensus data: Block(block_num: 0 ...*
devmode_engine_rust: | Failed consensus check: Block(block_num: 0 ...*
devmode_engine_rust: | Failing block [86, ...*
sudo docker-compose -f sawtooth-defualt.yaml down
sudo docker-compose -f sawtooth-defualt.yaml up

我希望创世块将在每个实例中得到验证,而不是大约50%的时间发生,即使我在启动Docker容器的方式上没有任何改变。为了使devmode共识过程在初次尝试时始终接受创世块,我需要做什么?

1 个答案:

答案 0 :(得分:0)

似乎是时间问题。共识容器对验证者容器有依赖性吗?例如,

devmode-engine:
    image: hyperledger/sawtooth-devmode-engine-rust:1.1
    ports:
      - '5050:5050'
    container_name: sawtooth-devmode-engine-rust-default
    depends_on:
      - validator
    entrypoint: devmode-engine-rust --connect tcp://validator:5050

(来自 https://github.com/danintel/sawtooth-cookiejar/blob/master/docker-compose.yaml

此外,验证器容器是否在sawadm开始之前运行所有初始化命令(sawtooth keygensawset genesissawadm genesissawtooth-validator)?