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  }