Block structure
Block structure:
type MsgBlock struct {
Header BlockHeader
Proposals ProposalArea
Transactions []*MsgTx
}
Block header structure:
type BlockHeader struct {
ChainID Hash
Version uint64
Height uint64
Timestamp time.Time
Previous Hash
TransactionRoot Hash
WitnessRoot Hash
ProposalRoot Hash
Target *big.Int
Challenge Hash
PubKey *pocec.PublicKey
Proof *poc.Proof
Signature *pocec.Signature
BanList []*pocec.PublicKey
}
Block proposal structure:
type ProposalArea struct {
PunishmentArea []*FaultPubKey
OtherArea []*NormalProposal
}
type FaultPubKey struct {
version uint32
PubKey *pocec.PublicKey
Testimony [HeadersPerProposal]*BlockHeader
}
type NormalProposal struct {
version uint32
proposalType ProposalType
content []byte
}