java - Sawtooth 1.1.2 将块添加到创世块时,“由于无效的前任而被拒绝”
问题描述
我无法将新块添加到链中,因为锯齿验证器默认值正在报告:
[2019-01-25 18:18:54.029 WARNING block_validator] Block 7f3...370e (block_num:1, state:c3a...954, previous_block_id:0d8...09d) failed validation: Block 7f3...370e (block_num:1, state:c3a...954, previous_block_id:0d8...09d) rejected due to invalid predecessor 0d8...09d (block_num:0, state:66e...ee1, previous_block_id:0000000000000000)
我猜这是一个时间问题,因为它刚刚开始发生并且在同事的环境中仍然可以正常工作。
今天早上我尝试运行以下操作序列 7 次:
- 码头工人-撰写下来
- gradle clean build fatJar docker
- 码头工人组成 --build
- GET localhost:8008/blocks --> 1 块如预期
- POST locApplication 到链
- GET localhost:8008/blocks --> 显示是否添加了块...
- 获取 localhost:20005/api/v1/lettersofcredit/applications/?id=d26...f2d
作品?Y|N|N|Y|Y|Y|N
我没有看到来自 settings_tp 的任何输出,仅来自默认验证器。每次新块提交返回 202 ACCEPTED。
我在开发人员模式下运行,使用 docker-compose 在单个 Ubuntu 18.0.4 VM 上运行所有容器。这是 docker-compose.yaml:
version: "2.1"
services:
settings-tp:
image: hyperledger/sawtooth-settings-tp:1.1
container_name: sawtooth-settings-tp-default
depends_on:
- validator
entrypoint: settings-tp -vv -C tcp://validator:4004
intkey-tp-python:
image: hyperledger/sawtooth-intkey-tp-python:1.1
container_name: sawtooth-intkey-tp-python-default
depends_on:
- validator
entrypoint: intkey-tp-python -vv -C tcp://validator:4004
xo-tp-python:
image: hyperledger/sawtooth-xo-tp-python:1.1
container_name: sawtooth-xo-tp-python-default
depends_on:
- validator
entrypoint: xo-tp-python -vv -C tcp://validator:4004
validator:
image: hyperledger/sawtooth-validator:1.1
container_name: sawtooth-validator-default
expose:
- 4004
ports:
- "4004:4004"
# start the validator with an empty genesis batch
entrypoint: "bash -c \"\
sawadm keygen && \
sawtooth keygen my_key && \
sawset genesis -k /root/.sawtooth/keys/my_key.priv && \
sawadm genesis config-genesis.batch && \
sawtooth-validator -vv \
--endpoint tcp://validator:8800 \
--bind component:tcp://eth0:4004 \
--bind network:tcp://eth0:8800 \
--bind consensus:tcp://eth0:5050 \
\""
devmode-engine:
image: hyperledger/sawtooth-devmode-engine-rust:1.1
container_name: sawtooth-devmode-engine-rust-default
depends_on:
- validator
entrypoint: devmode-engine-rust -C tcp://validator:5050
rest-api:
image: hyperledger/sawtooth-rest-api:1.1
container_name: sawtooth-rest-api-default
expose:
- 8008
ports:
- "8008:8008"
depends_on:
- validator
entrypoint: sawtooth-rest-api -C tcp://validator:4004 --bind rest-api:8008
shell:
image: hyperledger/sawtooth-all:1.1
container_name: sawtooth-shell-default
depends_on:
- rest-api
entrypoint: "bash -c \"\
sawtooth keygen && \
tail -f /dev/null \
\""
importer-webserver:
image: sawtooth-trade-finance/importer-web:latest
container_name: importer-webserver
depends_on:
- rest-api
ports:
- "20005:8080"
importer-processor:
container_name: importer-processor
image: sawtooth-trade-finance/importer-processor:latest
build:
context: .
dockerfile: ./tf_processor/Dockerfile
depends_on:
- validator
任何有关我如何调试此问题的建议都将不胜感激。谢谢。
解决方案
您是否尝试删除 docker 中的所有容器、图像和卷?这个对我有用。Docker 移除所有容器、镜像和卷
推荐阅读
- docker - 如何在 Docker 中安装 Visual Studio 12 BuildTools
- javascript - 是否可以使用打字稿在 html 标记内循环和插入代码?
- java - 当我在 while 循环中单击一个按钮时,如何进行下一次迭代?
- javascript - 如果用户在此选项卡中未处于活动状态,如何使倒计时暂停,如果处于活动状态则继续?
- angular - FormGroup.patchValue 未更新空值的文本框视图
- clojure - 如何在每个字符串前面加上分隔符的字符串向量?
- angular - 角火消息无法收到通知,我该如何解决这个问题?
- javascript - 导出不适用于反应中的连接组件
- sonarqube - 更改通过自制软件安装的 SonarQube 端口
- mysql - Centos 7目录初始化问题上安装MySQL 5.7问题