github.com/Finschia/finschia-sdk@v0.48.1/x/staking/teststaking/tm.go (about) 1 package teststaking 2 3 import ( 4 occrypto "github.com/Finschia/ostracon/crypto" 5 octypes "github.com/Finschia/ostracon/types" 6 7 cryptocodec "github.com/Finschia/finschia-sdk/crypto/codec" 8 sdk "github.com/Finschia/finschia-sdk/types" 9 "github.com/Finschia/finschia-sdk/x/staking/types" 10 ) 11 12 // GetOcConsPubKey gets the validator's public key as an occrypto.PubKey. 13 func GetOcConsPubKey(v types.Validator) (occrypto.PubKey, error) { 14 pk, err := v.ConsPubKey() 15 if err != nil { 16 return nil, err 17 } 18 19 return cryptocodec.ToOcPubKeyInterface(pk) 20 } 21 22 // ToOcValidator casts an SDK validator to a tendermint type Validator. 23 func ToOcValidator(v types.Validator, r sdk.Int) (*octypes.Validator, error) { 24 ocPk, err := GetOcConsPubKey(v) 25 if err != nil { 26 return nil, err 27 } 28 29 return octypes.NewValidator(ocPk, v.ConsensusPower(r)), nil 30 } 31 32 // ToOcValidators casts all validators to the corresponding tendermint type. 33 func ToOcValidators(v types.Validators, r sdk.Int) ([]*octypes.Validator, error) { 34 validators := make([]*octypes.Validator, len(v)) 35 var err error 36 for i, val := range v { 37 validators[i], err = ToOcValidator(val, r) 38 if err != nil { 39 return nil, err 40 } 41 } 42 43 return validators, nil 44 }