tendermint / tmkms

Key Management service for Tendermint Validator nodes
Apache License 2.0
142 stars 42 forks source link

Can't get PreVote request when running two KMS #358

Open yulidai opened 5 years ago

yulidai commented 5 years ago

1. Purpose

Just to test some special cases

2. Test Description

I'm running two group of one-kms-with-one-validator, Two KMS use the same priv_validator_key.json. One block per four heights.

In order to avoid DOUBLE SIGN, I let one of the two KMS only sign the odd height and the other only sign the even height.

3. Testing Result

Logs of the KMS with odd height only

02:58:36 [info] [ld_test@tcp://127.0.0.1:26659] signed PreCommit:<nil> at h/r/s 127/0/6 (0 ms)
02:58:41 [warn] failed to sign prop, h/r : 128/0
02:58:44 [warn] failed to sign vote, h/t/r : 128/1/0
02:58:47 [warn] failed to sign vote, h/t/r : 128/2/0
02:58:50 [warn] failed to sign vote, h/t/r : 128/2/1
02:58:53 [info] [ld_test@tcp://127.0.0.1:26659] signed PreCommit:<nil> at h/r/s 129/0/6 (0 ms)
02:58:57 [warn] failed to sign vote, h/t/r : 130/1/0
02:59:00 [warn] failed to sign vote, h/t/r : 130/2/0

Logs of the KMS with even height only

02:58:35 [warn] failed to sign vote, h/t/r : 127/1/0
02:58:38 [warn] failed to sign vote, h/t/r : 127/2/0
02:58:44 [info] [ld_test@tcp://127.0.0.1:16659] signed Proposal:878ACD4FD0 at h/r/s 128/0/3 (0 ms)
02:58:44 [info] [ld_test@tcp://127.0.0.1:16659] signed PreCommit:<nil> at h/r/s 128/0/6 (0 ms)
02:58:45 [info] [ld_test@tcp://127.0.0.1:16659] signed PreVote:3062FAFF5A at h/r/s 128/1/6 (0 ms)
02:58:45 [info] [ld_test@tcp://127.0.0.1:16659] signed PreCommit:3062FAFF5A at h/r/s 128/1/6 (0 ms)
02:58:51 [warn] failed to sign vote, h/t/r : 129/1/0
02:58:54 [warn] failed to sign vote, h/t/r : 129/2/0
02:58:57 [info] [ld_test@tcp://127.0.0.1:16659] signed PreCommit:<nil> at h/r/s 130/0/6 (0 ms)

4. Problem

You will never receive PreVote's signature request except when it comes out of Proposal. And Proposal never succeed.

Why does this strange phenomenon occur that every height's signature is not independent?

yulidai commented 5 years ago

Maybe it's tendermint's problem? But I haven't found any information for a long time.

tarcieri commented 5 years ago

This is definitely an unsupported configuration. No idea why the behavior is the way it is, but I'd agree it's probably something on the Tendermint side.