mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-03 11:45:18 +00:00
block: fix max commit sig size (#5567)
This commit is contained in:
@@ -24,6 +24,8 @@ import (
|
||||
|
||||
const (
|
||||
// MaxHeaderBytes is a maximum header size.
|
||||
// NOTE: Because app hash can be of arbitrary size, the header is therefore not
|
||||
// capped in size and thus this number should be seen as a soft max
|
||||
MaxHeaderBytes int64 = 626
|
||||
|
||||
// MaxOverheadForBlock - maximum overhead to encode a block (up to
|
||||
@@ -583,9 +585,9 @@ const (
|
||||
const (
|
||||
// Max size of commit without any commitSigs -> 82 for BlockID, 8 for Height, 4 for Round.
|
||||
MaxCommitOverheadBytes int64 = 94
|
||||
// Commit sig size is made up of 32 bytes for the signature, 20 bytes for the address,
|
||||
// Commit sig size is made up of 64 bytes for the signature, 20 bytes for the address,
|
||||
// 1 byte for the flag and 14 bytes for the timestamp
|
||||
MaxCommitSigBytes int64 = 77
|
||||
MaxCommitSigBytes int64 = 109
|
||||
)
|
||||
|
||||
// CommitSig is a part of the Vote included in a Commit.
|
||||
|
||||
@@ -257,33 +257,22 @@ func TestCommitValidateBasic(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestMaxCommitSigBytes(t *testing.T) {
|
||||
func TestMaxCommitBytes(t *testing.T) {
|
||||
// time is varint encoded so need to pick the max.
|
||||
// year int, month Month, day, hour, min, sec, nsec int, loc *Location
|
||||
timestamp := time.Date(math.MaxInt64, 0, 0, 0, 0, 0, math.MaxInt64, time.UTC)
|
||||
|
||||
cs := &CommitSig{
|
||||
BlockIDFlag: BlockIDFlagNil,
|
||||
ValidatorAddress: crypto.AddressHash([]byte("validator_address")),
|
||||
Timestamp: timestamp,
|
||||
Signature: tmhash.Sum([]byte("signature")),
|
||||
}
|
||||
|
||||
pb := cs.ToProto()
|
||||
|
||||
assert.EqualValues(t, MaxCommitSigBytes, pb.Size())
|
||||
}
|
||||
|
||||
func TestMaxCommitBytes(t *testing.T) {
|
||||
timestamp := time.Date(math.MaxInt64, 0, 0, 0, 0, 0, math.MaxInt64, time.UTC)
|
||||
|
||||
cs := CommitSig{
|
||||
BlockIDFlag: BlockIDFlagNil,
|
||||
ValidatorAddress: crypto.AddressHash([]byte("validator_address")),
|
||||
Timestamp: timestamp,
|
||||
Signature: tmhash.Sum([]byte("signature")),
|
||||
Signature: crypto.CRandBytes(MaxSignatureSize),
|
||||
}
|
||||
|
||||
pbSig := cs.ToProto()
|
||||
// test that a single commit sig doesn't exceed max commit sig bytes
|
||||
assert.EqualValues(t, MaxCommitSigBytes, pbSig.Size())
|
||||
|
||||
// check size with a single commit
|
||||
commit := &Commit{
|
||||
Height: math.MaxInt64,
|
||||
@@ -463,9 +452,11 @@ func TestBlockMaxDataBytes(t *testing.T) {
|
||||
}{
|
||||
0: {-10, 1, 0, true, 0},
|
||||
1: {10, 1, 0, true, 0},
|
||||
2: {809, 1, 0, true, 0},
|
||||
3: {810, 1, 0, false, 0},
|
||||
4: {811, 1, 0, false, 1},
|
||||
2: {841, 1, 0, true, 0},
|
||||
3: {842, 1, 0, false, 0},
|
||||
4: {843, 1, 0, false, 1},
|
||||
5: {954, 2, 0, false, 1},
|
||||
6: {1053, 2, 100, false, 0},
|
||||
}
|
||||
|
||||
for i, tc := range testCases {
|
||||
@@ -492,9 +483,9 @@ func TestBlockMaxDataBytesNoEvidence(t *testing.T) {
|
||||
}{
|
||||
0: {-10, 1, true, 0},
|
||||
1: {10, 1, true, 0},
|
||||
2: {809, 1, true, 0},
|
||||
3: {810, 1, false, 0},
|
||||
4: {811, 1, false, 1},
|
||||
2: {841, 1, true, 0},
|
||||
3: {842, 1, false, 0},
|
||||
4: {843, 1, false, 1},
|
||||
}
|
||||
|
||||
for i, tc := range testCases {
|
||||
|
||||
Reference in New Issue
Block a user