61 lines
1.9 KiB
Go
61 lines
1.9 KiB
Go
package types
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/tendermint/tendermint/crypto/tmhash"
|
|
tmtypes "github.com/tendermint/tendermint/types"
|
|
"github.com/tendermint/tendermint/version"
|
|
)
|
|
|
|
const maxInt = int(^uint(0) >> 1)
|
|
|
|
// Copied unimported test functions from tmtypes to use them here
|
|
func MakeBlockID(hash []byte, partSetSize int, partSetHash []byte) tmtypes.BlockID {
|
|
return tmtypes.BlockID{
|
|
Hash: hash,
|
|
PartsHeader: tmtypes.PartSetHeader{
|
|
Total: partSetSize,
|
|
Hash: partSetHash,
|
|
},
|
|
}
|
|
}
|
|
|
|
// CreateTestHeader creates a mock header for testing only.
|
|
func CreateTestHeader(chainID string, height int64, timestamp time.Time, valSet *tmtypes.ValidatorSet, signers []tmtypes.PrivValidator) Header {
|
|
vsetHash := valSet.Hash()
|
|
tmHeader := tmtypes.Header{
|
|
Version: version.Consensus{Block: 2, App: 2},
|
|
ChainID: chainID,
|
|
Height: height,
|
|
Time: timestamp,
|
|
LastBlockID: MakeBlockID(make([]byte, tmhash.Size), maxInt, make([]byte, tmhash.Size)),
|
|
LastCommitHash: tmhash.Sum([]byte("last_commit_hash")),
|
|
DataHash: tmhash.Sum([]byte("data_hash")),
|
|
ValidatorsHash: vsetHash,
|
|
NextValidatorsHash: vsetHash,
|
|
ConsensusHash: tmhash.Sum([]byte("consensus_hash")),
|
|
AppHash: tmhash.Sum([]byte("app_hash")),
|
|
LastResultsHash: tmhash.Sum([]byte("last_results_hash")),
|
|
EvidenceHash: tmhash.Sum([]byte("evidence_hash")),
|
|
ProposerAddress: valSet.Proposer.Address,
|
|
}
|
|
hhash := tmHeader.Hash()
|
|
blockID := MakeBlockID(hhash, 3, tmhash.Sum([]byte("part_set")))
|
|
voteSet := tmtypes.NewVoteSet(chainID, height, 1, tmtypes.PrecommitType, valSet)
|
|
commit, err := tmtypes.MakeCommit(blockID, height, 1, voteSet, signers, timestamp)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
signedHeader := tmtypes.SignedHeader{
|
|
Header: &tmHeader,
|
|
Commit: commit,
|
|
}
|
|
|
|
return Header{
|
|
SignedHeader: signedHeader,
|
|
ValidatorSet: valSet,
|
|
}
|
|
}
|