Browse Source

more types

pull/1667/head
Ethan Buchman 6 years ago
parent
commit
ebd2fe7a68
1 changed files with 30 additions and 6 deletions
  1. +30
    -6
      types/protobuf.go

+ 30
- 6
types/protobuf.go View File

@ -14,8 +14,8 @@ var TM2PB = tm2pb{}
type tm2pb struct{}
func (tm2pb) Header(header *Header) types.Header {
return types.Header{
func (tm2pb) Header(header *Header) *types.Header {
return &types.Header{
ChainId: header.ChainID,
Height: header.Height,
Time: header.Time.Unix(),
@ -25,8 +25,8 @@ func (tm2pb) Header(header *Header) types.Header {
}
}
func (tm2pb) Validator(val *Validator) types.Validator {
return types.Validator{
func (tm2pb) Validator(val *Validator) *types.Validator {
return &types.Validator{
PubKey: TM2PB.PubKey(val.PubKey),
Power: val.VotingPower,
}
@ -49,8 +49,8 @@ func (tm2pb) PubKey(pubKey crypto.PubKey) *types.PubKey {
}
}
func (tm2pb) Validators(vals *ValidatorSet) []types.Validator {
validators := make([]types.Validator, len(vals.Validators))
func (tm2pb) Validators(vals *ValidatorSet) []*types.Validator {
validators := make([]*types.Validator, len(vals.Validators))
for i, val := range vals.Validators {
validators[i] = TM2PB.Validator(val)
}
@ -74,3 +74,27 @@ func (tm2pb) ConsensusParams(params *ConsensusParams) *types.ConsensusParams {
},
}
}
//----------------------------------------------------------------------------
// PB2TM is used for converting protobuf types to Tendermint types.
// UNSTABLE
var PB2TM = pb2tm{}
type pb2tm struct{}
// TODO: validate key lengths ...
func (pb2tm) PubKey(pubKey *types.PubKey) (crypto.PubKey, error) {
switch pubKey.Type {
case "ed25519":
var pk crypto.PubKeyEd25519
copy(pk[:], pubKey.Data)
return pk, nil
case "secp256k1":
var pk crypto.PubKeySecp256k1
copy(pk[:], pubKey.Data)
return pk, nil
default:
return nil, fmt.Errorf("Unknown pubkey type %v", pubKey.Type)
}
}

Loading…
Cancel
Save