Documentation
¶
Overview ¶
Command fixseencommit repairs the seen commit that `strided in-place-testnet` would otherwise corrupt. It is a prerequisite of the localstride upgrade flow - see localstride/README.md.
The cosmos-sdk testnetify() routine rewrites the seen commit at the node's last block so that it appears signed by the local validator (server/start.go):
seenCommit.Signatures[0].Signature = vote.Signature seenCommit.Signatures[0].ValidatorAddress = validatorAddress seenCommit.Signatures[0].Timestamp = vote.Timestamp
It assigns the validator address but never touches BlockIDFlag, assuming slot 0 belongs to a validator that signed the block. When that validator was absent, the flag stays BlockIDFlagAbsent while the address becomes non-empty - precisely the combination CommitSig.ValidateBasic() rejects with "validator address is present". The node then panics on the next start, while reconstructing its last commit.
Promoting a validator that actually signed into slot 0 beforehand avoids this: testnetify overwrites every other field of that signature, so only the COMMIT flag needs to survive. Running this against an already-healthy seen commit is a no-op.