|
|
- package types
-
- // canonical json is go-wire's json for structs with fields in alphabetical order
-
- type CanonicalJSONBlockID struct {
- Hash []byte `json:"hash,omitempty"`
- PartsHeader CanonicalJSONPartSetHeader `json:"parts,omitempty"`
- }
-
- type CanonicalJSONPartSetHeader struct {
- Hash []byte `json:"hash"`
- Total int `json:"total"`
- }
-
- type CanonicalJSONProposal struct {
- BlockPartsHeader CanonicalJSONPartSetHeader `json:"block_parts_header"`
- Height int `json:"height"`
- POLBlockID CanonicalJSONBlockID `json:"pol_block_id"`
- POLRound int `json:"pol_round"`
- Round int `json:"round"`
- }
-
- type CanonicalJSONVote struct {
- BlockID CanonicalJSONBlockID `json:"block_id"`
- Height int `json:"height"`
- Round int `json:"round"`
- Type byte `json:"type"`
- }
-
- //------------------------------------
- // Messages including a "chain id" can only be applied to one chain, hence "Once"
-
- type CanonicalJSONOnceProposal struct {
- ChainID string `json:"chain_id"`
- Proposal CanonicalJSONProposal `json:"proposal"`
- }
-
- type CanonicalJSONOnceVote struct {
- ChainID string `json:"chain_id"`
- Vote CanonicalJSONVote `json:"vote"`
- }
-
- //-----------------------------------
- // Canonicalize the structs
-
- func CanonicalBlockID(blockID BlockID) CanonicalJSONBlockID {
- return CanonicalJSONBlockID{
- Hash: blockID.Hash,
- PartsHeader: CanonicalPartSetHeader(blockID.PartsHeader),
- }
- }
-
- func CanonicalPartSetHeader(psh PartSetHeader) CanonicalJSONPartSetHeader {
- return CanonicalJSONPartSetHeader{
- psh.Hash,
- psh.Total,
- }
- }
-
- func CanonicalProposal(proposal *Proposal) CanonicalJSONProposal {
- return CanonicalJSONProposal{
- BlockPartsHeader: CanonicalPartSetHeader(proposal.BlockPartsHeader),
- Height: proposal.Height,
- POLBlockID: CanonicalBlockID(proposal.POLBlockID),
- POLRound: proposal.POLRound,
- Round: proposal.Round,
- }
- }
-
- func CanonicalVote(vote *Vote) CanonicalJSONVote {
- return CanonicalJSONVote{
- CanonicalBlockID(vote.BlockID),
- vote.Height,
- vote.Round,
- vote.Type,
- }
- }
|