Bug Report
During testing, we identified an issue with the newest CommetBFT version (>=0.38.6). When a commit is proposed by a validator using a Secp key (without bulk verification support), and the previous commit was proposed by a validator using an ED25519 key (with bulk verification support), CommetBFT core attempts to verify the commit in bulk. This appears to be a problem with the system selecting the previous commit proposer instead of the current one.
Setup
CometBFT version
0.38.6
Have you tried the latest version: yes/no
Yes
ABCI app (name for built-in, URL for self-written if it's publicly available):
OdinApp
Environment:
- OS Debian GNU/Linux 10 (buster)
node command runtime flags:
odind start
What happened?
We encountered this issue while attempting to upgrade the Odin chain from CosmosSDK 0.47.7 to CosmosSDK 0.50.6. After the upgrade, the chain was unable to produce new blocks.
What did you expect to happen?
The system should verify the commit using the current proposer's key type and not attempt bulk verification when the current proposer uses a Secp key.
How to reproduce it
- Set up a CommetBFT network with at least two validators, one using a Secp key and the other using an ED25519 key.
- Ensure the version of CommetBFT is >=0.38.6.
- Have the validator with the ED25519 key propose a commit.
- Follow this with a commit proposed by the validator using the Secp key.
Logs
val1 | 4:12PM INF running app args=["start"] module=cosmovisor path=/root/.odin/cosmovisor/genesis/bin/odind
val1 | 4:12PM INF daemon shutting down in an attempt to restart module=cosmovisor
val1 | 4:12PM INF pre-upgrade command does not exist. continuing the upgrade. module=cosmovisor
val1 | 4:12PM INF upgrade detected, relaunching app=odind module=cosmovisor
val1 | 4:12PM INF running app args=["start"] module=cosmovisor path=/root/.odin/cosmovisor/upgrades/v0.8.1/bin/odind
val1 | 4:12PM INF starting node with ABCI CometBFT in-process module=server
val1 | 4:12PM INF service start impl=multiAppConn module=proxy msg="Starting multiAppConn service"
val1 | 4:12PM INF service start connection=query impl=localClient module=abci-client msg="Starting localClient service"
val1 | 4:12PM INF service start connection=snapshot impl=localClient module=abci-client msg="Starting localClient service"
val1 | 4:12PM INF service start connection=mempool impl=localClient module=abci-client msg="Starting localClient service"
val1 | 4:12PM INF service start connection=consensus impl=localClient module=abci-client msg="Starting localClient service"
val1 | 4:12PM INF service start impl=EventBus module=events msg="Starting EventBus service"
val1 | 4:12PM INF service start impl=PubSub module=pubsub msg="Starting PubSub service"
val1 | 4:12PM INF service start impl=IndexerService module=txindex msg="Starting IndexerService service"
val1 | 4:12PM INF ABCI Handshake App Info hash=32AF62EDD9667DDF1BE4D97DC0FD74080FA129B2ECA41938EF6DA6E0AC5DAC7D height=12505180 module=consensus protocol-version=0 software-version=0.8.1
val1 | 4:12PM INF ABCI Replay Blocks appHeight=12505180 module=consensus stateHeight=12505180 storeHeight=12505180
val1 | 4:12PM INF Completed ABCI Handshake - CometBFT and App are synced appHash=32AF62EDD9667DDF1BE4D97DC0FD74080FA129B2ECA41938EF6DA6E0AC5DAC7D appHeight=12505180 module=consensus
val1 | 4:12PM INF Version info abci=2.0.0 block=11 commit_hash= module=server p2p=8 tendermint_version=0.38.6
val1 | 4:12PM INF This node is a validator addr=C467BBD2E7912ADB09421D8E7A875D0698CD4E91 module=consensus pubKey=PubKeySecp256k1{02F5A41618D7FA8418AB953148F5D33E358AF9D1D2F9EAF6ADB9E4B1279AC0FCC2}
val1 | 4:12PM INF P2P Node ID ID=d23013e1a0a82d71d251f96c63609ee88af2e29c file=/root/.odin/config/node_key.json module=p2p
val1 | 4:12PM INF Adding persistent peers addrs=["3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1@172.18.0.3:26656","5cfe57184c002bf2050b5a1d1d247dccf18784f1@172.18.0.4:26656"] module=p2p
val1 | 4:12PM INF Adding unconditional peer ids ids=[] module=p2p
val1 | 4:12PM INF Add our address to book addr=d23013e1a0a82d71d251f96c63609ee88af2e29c@0.0.0.0:26656 book=/root/.odin/config/addrbook.json module=p2p
val1 | 4:12PM INF service start impl=Node module=server msg="Starting Node service"
val1 | 4:12PM INF service start impl="P2P Switch" module=p2p msg="Starting P2P Switch service"
val1 | 4:12PM INF service start impl=Mempool module=mempool msg="Starting Mempool service"
val1 | 4:12PM INF service start impl=Reactor module=blocksync msg="Starting Reactor service"
val1 | 4:12PM INF service start impl=BlockPool module=blocksync msg="Starting BlockPool service"
val1 | 4:12PM INF service start impl=ConsensusReactor module=consensus msg="Starting Consensus service"
val1 | 4:12PM INF Reactor module=consensus waitSync=true
val1 | 4:12PM INF service start impl=Evidence module=evidence msg="Starting Evidence service"
val1 | 4:12PM INF service start impl=StateSync module=statesync msg="Starting StateSync service"
val1 | 4:12PM INF service start impl=PEX module=pex msg="Starting PEX service"
val1 | 4:12PM INF service start book=/root/.odin/config/addrbook.json impl=AddrBook module=p2p msg="Starting AddrBook service"
val1 | 4:12PM INF serve module=rpc-server msg="Starting RPC HTTP server on [::]:26657"
val1 | 4:12PM ERR Can't add peer's address to addrbook err="Cannot add non-routable address 3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1@172.18.0.3:26656" module=p2p
val1 | 4:12PM ERR Can't add peer's address to addrbook err="Cannot add non-routable address 5cfe57184c002bf2050b5a1d1d247dccf18784f1@172.18.0.4:26656" module=p2p
val1 | 4:12PM INF Saving AddrBook to file book=/root/.odin/config/addrbook.json module=p2p size=0
val1 | 4:12PM INF Ensure peers module=pex numDialing=0 numInPeers=0 numOutPeers=0 numToDial=10
val1 | 4:12PM INF No addresses to dial. Falling back to seeds module=pex
val1 | 4:12PM INF starting gRPC server... address=0.0.0.0:9090 module=grpc-server
val1 | 4:12PM INF starting API server... address=tcp://0.0.0.0:1317 module=api-server
val1 | 4:12PM INF serve module=api-server msg="Starting RPC HTTP server on [::]:1317"
val1 | 4:12PM INF service start impl="Peer{MConn{172.18.0.3:26656} 3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 out}" module=p2p msg="Starting Peer service" peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1@172.18.0.3:26656
val1 | 4:12PM INF service start impl=MConn{172.18.0.3:26656} module=p2p msg="Starting MConnection service" peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1@172.18.0.3:26656
val1 | 4:12PM INF service start impl="Peer{MConn{172.18.0.4:44070} 5cfe57184c002bf2050b5a1d1d247dccf18784f1 in}" module=p2p msg="Starting Peer service" peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1@172.18.0.4:44070
val1 | 4:12PM INF service start impl=MConn{172.18.0.4:44070} module=p2p msg="Starting MConnection service" peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1@172.18.0.4:44070
val1 | 4:12PM INF Time to switch to consensus reactor! height=12505181 module=blocksync
val1 | 4:12PM INF service stop impl=BlockPool module=blocksync msg="Stopping BlockPool service"
val1 | 4:12PM INF SwitchToConsensus module=consensus
val1 | 4:12PM INF service start impl=ConsensusState module=consensus msg="Starting State service"
val1 | 4:12PM INF service start impl=baseWAL module=consensus msg="Starting baseWAL service" wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF service start impl=Group module=consensus msg="Starting Group service" wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF service start impl=TimeoutTicker module=consensus msg="Starting TimeoutTicker service"
val1 | 4:12PM INF Searching for height height=12505181 max=0 min=0 module=consensus wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF Searching for height height=12505180 max=0 min=0 module=consensus wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF Found height=12505180 index=0 module=consensus wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF Catchup by replaying consensus messages height=12505181 module=consensus
val1 | 4:12PM INF Replay: Timeout dur=-821.450468 height=12505181 module=consensus round=0 step=RoundStepNewHeight
val1 | 4:12PM INF Replay: New Step height=12505181 module=consensus round=0 step=RoundStepPropose
val1 | 4:12PM INF Replay: Proposal header=1:D08941B3D2E0 height=12505181 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 pol=-1 round=0
val1 | 4:12PM INF received proposal module=consensus proposal="Proposal{12505181/0 (336DACEC445D42666AF4967E326949C5694CD9D0BECF3A431F6521DB596D300F:1:D08941B3D2E0, -1) D73A4DFA3FEA @ 2024-06-01T16:08:39.36124665Z}" proposer=02D78DA3A5394D8E1B228D2A93BDE714ED46135A
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: BlockPart height=12505181 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0
val1 | 4:12PM INF received complete proposal block hash=336DACEC445D42666AF4967E326949C5694CD9D0BECF3A431F6521DB596D300F height=12505181 module=consensus
val1 | 4:12PM ERR prevote step: consensus deems this block invalid; prevoting nil err="pubkey is not Ed25519" height=12505181 module=consensus round=0
val1 | 4:12PM INF Replay: New Step height=12505181 module=consensus round=0 step=RoundStepPrevote
val1 | 4:12PM INF Replay: Vote blockID=:0:000000000000 extSigLen=0 extensionLen=0 height=12505181 module=consensus peer=local round=0 type=SIGNED_MSG_TYPE_PREVOTE
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Vote blockID=:0:000000000000 extSigLen=0 extensionLen=0 height=12505181 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0 type=SIGNED_MSG_TYPE_PREVOTE
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Timeout dur=3000 height=12505181 module=consensus round=0 step=RoundStepPropose
dump_consensus_state output
dump_consensus_state.json
Bug Report
During testing, we identified an issue with the newest CommetBFT version (>=0.38.6). When a commit is proposed by a validator using a Secp key (without bulk verification support), and the previous commit was proposed by a validator using an ED25519 key (with bulk verification support), CommetBFT core attempts to verify the commit in bulk. This appears to be a problem with the system selecting the previous commit proposer instead of the current one.
Setup
CometBFT version
0.38.6
Have you tried the latest version: yes/no
Yes
ABCI app (name for built-in, URL for self-written if it's publicly available):
OdinApp
Environment:
node command runtime flags:
odind start
What happened?
We encountered this issue while attempting to upgrade the Odin chain from CosmosSDK 0.47.7 to CosmosSDK 0.50.6. After the upgrade, the chain was unable to produce new blocks.
What did you expect to happen?
The system should verify the commit using the current proposer's key type and not attempt bulk verification when the current proposer uses a Secp key.
How to reproduce it
Logs
val1 | 4:12PM INF running app args=["start"] module=cosmovisor path=/root/.odin/cosmovisor/genesis/bin/odind
val1 | 4:12PM INF daemon shutting down in an attempt to restart module=cosmovisor
val1 | 4:12PM INF pre-upgrade command does not exist. continuing the upgrade. module=cosmovisor
val1 | 4:12PM INF upgrade detected, relaunching app=odind module=cosmovisor
val1 | 4:12PM INF running app args=["start"] module=cosmovisor path=/root/.odin/cosmovisor/upgrades/v0.8.1/bin/odind
val1 | 4:12PM INF starting node with ABCI CometBFT in-process module=server
val1 | 4:12PM INF service start impl=multiAppConn module=proxy msg="Starting multiAppConn service"
val1 | 4:12PM INF service start connection=query impl=localClient module=abci-client msg="Starting localClient service"
val1 | 4:12PM INF service start connection=snapshot impl=localClient module=abci-client msg="Starting localClient service"
val1 | 4:12PM INF service start connection=mempool impl=localClient module=abci-client msg="Starting localClient service"
val1 | 4:12PM INF service start connection=consensus impl=localClient module=abci-client msg="Starting localClient service"
val1 | 4:12PM INF service start impl=EventBus module=events msg="Starting EventBus service"
val1 | 4:12PM INF service start impl=PubSub module=pubsub msg="Starting PubSub service"
val1 | 4:12PM INF service start impl=IndexerService module=txindex msg="Starting IndexerService service"
val1 | 4:12PM INF ABCI Handshake App Info hash=32AF62EDD9667DDF1BE4D97DC0FD74080FA129B2ECA41938EF6DA6E0AC5DAC7D height=12505180 module=consensus protocol-version=0 software-version=0.8.1
val1 | 4:12PM INF ABCI Replay Blocks appHeight=12505180 module=consensus stateHeight=12505180 storeHeight=12505180
val1 | 4:12PM INF Completed ABCI Handshake - CometBFT and App are synced appHash=32AF62EDD9667DDF1BE4D97DC0FD74080FA129B2ECA41938EF6DA6E0AC5DAC7D appHeight=12505180 module=consensus
val1 | 4:12PM INF Version info abci=2.0.0 block=11 commit_hash= module=server p2p=8 tendermint_version=0.38.6
val1 | 4:12PM INF This node is a validator addr=C467BBD2E7912ADB09421D8E7A875D0698CD4E91 module=consensus pubKey=PubKeySecp256k1{02F5A41618D7FA8418AB953148F5D33E358AF9D1D2F9EAF6ADB9E4B1279AC0FCC2}
val1 | 4:12PM INF P2P Node ID ID=d23013e1a0a82d71d251f96c63609ee88af2e29c file=/root/.odin/config/node_key.json module=p2p
val1 | 4:12PM INF Adding persistent peers addrs=["3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1@172.18.0.3:26656","5cfe57184c002bf2050b5a1d1d247dccf18784f1@172.18.0.4:26656"] module=p2p
val1 | 4:12PM INF Adding unconditional peer ids ids=[] module=p2p
val1 | 4:12PM INF Add our address to book addr=d23013e1a0a82d71d251f96c63609ee88af2e29c@0.0.0.0:26656 book=/root/.odin/config/addrbook.json module=p2p
val1 | 4:12PM INF service start impl=Node module=server msg="Starting Node service"
val1 | 4:12PM INF service start impl="P2P Switch" module=p2p msg="Starting P2P Switch service"
val1 | 4:12PM INF service start impl=Mempool module=mempool msg="Starting Mempool service"
val1 | 4:12PM INF service start impl=Reactor module=blocksync msg="Starting Reactor service"
val1 | 4:12PM INF service start impl=BlockPool module=blocksync msg="Starting BlockPool service"
val1 | 4:12PM INF service start impl=ConsensusReactor module=consensus msg="Starting Consensus service"
val1 | 4:12PM INF Reactor module=consensus waitSync=true
val1 | 4:12PM INF service start impl=Evidence module=evidence msg="Starting Evidence service"
val1 | 4:12PM INF service start impl=StateSync module=statesync msg="Starting StateSync service"
val1 | 4:12PM INF service start impl=PEX module=pex msg="Starting PEX service"
val1 | 4:12PM INF service start book=/root/.odin/config/addrbook.json impl=AddrBook module=p2p msg="Starting AddrBook service"
val1 | 4:12PM INF serve module=rpc-server msg="Starting RPC HTTP server on [::]:26657"
val1 | 4:12PM ERR Can't add peer's address to addrbook err="Cannot add non-routable address 3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1@172.18.0.3:26656" module=p2p
val1 | 4:12PM ERR Can't add peer's address to addrbook err="Cannot add non-routable address 5cfe57184c002bf2050b5a1d1d247dccf18784f1@172.18.0.4:26656" module=p2p
val1 | 4:12PM INF Saving AddrBook to file book=/root/.odin/config/addrbook.json module=p2p size=0
val1 | 4:12PM INF Ensure peers module=pex numDialing=0 numInPeers=0 numOutPeers=0 numToDial=10
val1 | 4:12PM INF No addresses to dial. Falling back to seeds module=pex
val1 | 4:12PM INF starting gRPC server... address=0.0.0.0:9090 module=grpc-server
val1 | 4:12PM INF starting API server... address=tcp://0.0.0.0:1317 module=api-server
val1 | 4:12PM INF serve module=api-server msg="Starting RPC HTTP server on [::]:1317"
val1 | 4:12PM INF service start impl="Peer{MConn{172.18.0.3:26656} 3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 out}" module=p2p msg="Starting Peer service" peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1@172.18.0.3:26656
val1 | 4:12PM INF service start impl=MConn{172.18.0.3:26656} module=p2p msg="Starting MConnection service" peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1@172.18.0.3:26656
val1 | 4:12PM INF service start impl="Peer{MConn{172.18.0.4:44070} 5cfe57184c002bf2050b5a1d1d247dccf18784f1 in}" module=p2p msg="Starting Peer service" peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1@172.18.0.4:44070
val1 | 4:12PM INF service start impl=MConn{172.18.0.4:44070} module=p2p msg="Starting MConnection service" peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1@172.18.0.4:44070
val1 | 4:12PM INF Time to switch to consensus reactor! height=12505181 module=blocksync
val1 | 4:12PM INF service stop impl=BlockPool module=blocksync msg="Stopping BlockPool service"
val1 | 4:12PM INF SwitchToConsensus module=consensus
val1 | 4:12PM INF service start impl=ConsensusState module=consensus msg="Starting State service"
val1 | 4:12PM INF service start impl=baseWAL module=consensus msg="Starting baseWAL service" wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF service start impl=Group module=consensus msg="Starting Group service" wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF service start impl=TimeoutTicker module=consensus msg="Starting TimeoutTicker service"
val1 | 4:12PM INF Searching for height height=12505181 max=0 min=0 module=consensus wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF Searching for height height=12505180 max=0 min=0 module=consensus wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF Found height=12505180 index=0 module=consensus wal=/root/.odin/data/cs.wal/wal
val1 | 4:12PM INF Catchup by replaying consensus messages height=12505181 module=consensus
val1 | 4:12PM INF Replay: Timeout dur=-821.450468 height=12505181 module=consensus round=0 step=RoundStepNewHeight
val1 | 4:12PM INF Replay: New Step height=12505181 module=consensus round=0 step=RoundStepPropose
val1 | 4:12PM INF Replay: Proposal header=1:D08941B3D2E0 height=12505181 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 pol=-1 round=0
val1 | 4:12PM INF received proposal module=consensus proposal="Proposal{12505181/0 (336DACEC445D42666AF4967E326949C5694CD9D0BECF3A431F6521DB596D300F:1:D08941B3D2E0, -1) D73A4DFA3FEA @ 2024-06-01T16:08:39.36124665Z}" proposer=02D78DA3A5394D8E1B228D2A93BDE714ED46135A
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: BlockPart height=12505181 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0
val1 | 4:12PM INF received complete proposal block hash=336DACEC445D42666AF4967E326949C5694CD9D0BECF3A431F6521DB596D300F height=12505181 module=consensus
val1 | 4:12PM ERR prevote step: consensus deems this block invalid; prevoting nil err="pubkey is not Ed25519" height=12505181 module=consensus round=0
val1 | 4:12PM INF Replay: New Step height=12505181 module=consensus round=0 step=RoundStepPrevote
val1 | 4:12PM INF Replay: Vote blockID=:0:000000000000 extSigLen=0 extensionLen=0 height=12505181 module=consensus peer=local round=0 type=SIGNED_MSG_TYPE_PREVOTE
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Vote blockID=:0:000000000000 extSigLen=0 extensionLen=0 height=12505181 module=consensus peer=3ae5858dbad9c65f07f1bd8ccf6c2bf9e089dbb1 round=0 type=SIGNED_MSG_TYPE_PREVOTE
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Vote blockID=970AB8865D24F054BDECD5E2352E3FA99F35E7057BC35F5AD6DD1DE9D7130489:1:A820B02D9764 extSigLen=0 extensionLen=0 height=12505180 module=consensus peer=5cfe57184c002bf2050b5a1d1d247dccf18784f1 round=0 type=SIGNED_MSG_TYPE_PRECOMMIT
val1 | 4:12PM INF Replay: Timeout dur=3000 height=12505181 module=consensus round=0 step=RoundStepPropose
dump_consensus_stateoutputdump_consensus_state.json