Some checks are pending
docker-build-cometbft / vars (push) Waiting to run
docker-build-cometbft / build-images (amd64, ubuntu-24.04) (push) Blocked by required conditions
docker-build-cometbft / build-images (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
docker-build-cometbft / merge-images (push) Blocked by required conditions
docker-build-e2e-node / vars (push) Waiting to run
docker-build-e2e-node / build-images (amd64, ubuntu-24.04) (push) Blocked by required conditions
docker-build-e2e-node / build-images (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
docker-build-e2e-node / merge-images (push) Blocked by required conditions
113 lines
2.8 KiB
Go
113 lines
2.8 KiB
Go
package types
|
|
|
|
import (
|
|
abci "github.com/cometbft/cometbft/abci/types"
|
|
"github.com/cometbft/cometbft/crypto"
|
|
cryptoenc "github.com/cometbft/cometbft/crypto/encoding"
|
|
cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
|
|
)
|
|
|
|
//-------------------------------------------------------
|
|
|
|
// TM2PB is used for converting CometBFT ABCI to protobuf ABCI.
|
|
// UNSTABLE
|
|
var TM2PB = tm2pb{}
|
|
|
|
type tm2pb struct{}
|
|
|
|
func (tm2pb) Header(header *Header) cmtproto.Header {
|
|
return cmtproto.Header{
|
|
Version: header.Version,
|
|
ChainID: header.ChainID,
|
|
Height: header.Height,
|
|
Time: header.Time,
|
|
|
|
LastBlockId: header.LastBlockID.ToProto(),
|
|
|
|
LastCommitHash: header.LastCommitHash,
|
|
DataHash: header.DataHash,
|
|
|
|
ValidatorsHash: header.ValidatorsHash,
|
|
NextValidatorsHash: header.NextValidatorsHash,
|
|
ConsensusHash: header.ConsensusHash,
|
|
AppHash: header.AppHash,
|
|
LastResultsHash: header.LastResultsHash,
|
|
|
|
EvidenceHash: header.EvidenceHash,
|
|
ProposerAddress: header.ProposerAddress,
|
|
}
|
|
}
|
|
|
|
func (tm2pb) Validator(val *Validator) abci.Validator {
|
|
return abci.Validator{
|
|
Address: val.PubKey.Address(),
|
|
Power: val.VotingPower,
|
|
}
|
|
}
|
|
|
|
func (tm2pb) BlockID(blockID BlockID) cmtproto.BlockID {
|
|
return cmtproto.BlockID{
|
|
Hash: blockID.Hash,
|
|
PartSetHeader: TM2PB.PartSetHeader(blockID.PartSetHeader),
|
|
}
|
|
}
|
|
|
|
func (tm2pb) PartSetHeader(header PartSetHeader) cmtproto.PartSetHeader {
|
|
return cmtproto.PartSetHeader{
|
|
Total: header.Total,
|
|
Hash: header.Hash,
|
|
}
|
|
}
|
|
|
|
// XXX: panics on unknown pubkey type
|
|
func (tm2pb) ValidatorUpdate(val *Validator) abci.ValidatorUpdate {
|
|
pk, err := cryptoenc.PubKeyToProto(val.PubKey)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return abci.ValidatorUpdate{
|
|
PubKey: pk,
|
|
Power: val.VotingPower,
|
|
}
|
|
}
|
|
|
|
// XXX: panics on nil or unknown pubkey type
|
|
func (tm2pb) ValidatorUpdates(vals *ValidatorSet) []abci.ValidatorUpdate {
|
|
validators := make([]abci.ValidatorUpdate, vals.Size())
|
|
for i, val := range vals.Validators {
|
|
validators[i] = TM2PB.ValidatorUpdate(val)
|
|
}
|
|
return validators
|
|
}
|
|
|
|
// XXX: panics on nil or unknown pubkey type
|
|
func (tm2pb) NewValidatorUpdate(pubkey crypto.PubKey, power int64) abci.ValidatorUpdate {
|
|
pubkeyABCI, err := cryptoenc.PubKeyToProto(pubkey)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return abci.ValidatorUpdate{
|
|
PubKey: pubkeyABCI,
|
|
Power: power,
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
// PB2TM is used for converting protobuf ABCI to CometBFT ABCI.
|
|
// UNSTABLE
|
|
var PB2TM = pb2tm{}
|
|
|
|
type pb2tm struct{}
|
|
|
|
func (pb2tm) ValidatorUpdates(vals []abci.ValidatorUpdate) ([]*Validator, error) {
|
|
cmtVals := make([]*Validator, len(vals))
|
|
for i, v := range vals {
|
|
pub, err := cryptoenc.PubKeyFromProto(v.PubKey)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
cmtVals[i] = NewValidator(pub, v.Power)
|
|
}
|
|
return cmtVals, nil
|
|
}
|