3

我正在尝试在 FishNet 示例中更改我的共识算法。

/sawtooth-supply-chain-master/fish_client/public/dist/bundle.js文件中我发现了这个:

consensus":{"type":"bytes","id":5}

有谁知道锯齿中的共识ID映射是什么?

默认情况下它是开发模式。但我想改变共识类型。这可能吗 ?

在 /sawtooth-supply-chain-master/docker/compose/supply-chain-default.yaml

入口点:| bash -c " if [ ! -f /etc/sawtooth/keys/validator.priv ]; 然后 sawadm keygen && 锯齿密钥生成 my_key && sawset genesis -k /root/.sawtooth/keys/my_key.priv && sawadm genesis config-genesis .batch fi; 锯齿验证器 -v \ --endpoint tcp://validator:8800 \ --bind 组件:tcp://eth0:4004 \ --bind 网络:tcp://eth0:8800 \ --bind共识:tcp://eth0:5050 "

devmode-engine:图像:hyperledger/sawtooth-devmode-engine-rust:1.1 容器名称:sawtooth-devmode-engine-rust-defaultdepends_on:-验证器入口点:devmode-engine-rust -C tcp://validator:5050

4

1 回答 1

1

锯齿动态共识概述

Hyperledger Sawtooth 支持动态共识模型。正如您所提到的,默认的共识引擎是Devmode.

其他支持的共识引擎包括:

共识类型是链上设置。从文档中:

Each consensus type has a consensus engine that communicates 
with the validator through the consensus API. Each node in 
the network must run the same consensus engine.

配置网络

要使用默认类型以外的共识类型Devmode,您需要更新两个链上设置:

  • sawtooth.consensus.algorithm.name
  • sawtooth.consensus.algorithm.version

这必须通过sawset proposal create命令完成,该命令可以在网络运行时完成,或者作为创世块的一部分包含在批处理中,例如:

sawadm keygen && \
  sawtooth keygen my_key && \
  sawset genesis -k /root/.sawtooth/keys/my_key.priv && \
  sawset proposal create \
    -k /root/.sawtooth/keys/my_key.priv \
    sawtooth.consensus.algorithm.name= pbft \
    sawtooth.consensus.algorithm.version=1.0 \
    sawtooth.consensus.pbft.members=["VAL1KEY","VAL2KEY",...,"VALnKEY"] \
    -o config.batch \
  && sawadm genesis config-genesis.batch config.batch

请注意config.batch(其中包含我们更新共识模式的建议)需要包含在sawadm genesis.

我建议查看有关设置锯齿网络的文档以获取更多信息 - 特别是创建创世块的第 4 步。

于 2020-01-05T07:00:17.427 回答