github.com/KiraCore/sekai@v0.3.43/app/encoding.go (about)

     1  package app
     2  
     3  import (
     4  	"github.com/cosmos/cosmos-sdk/client"
     5  	"github.com/cosmos/cosmos-sdk/codec"
     6  	"github.com/cosmos/cosmos-sdk/codec/types"
     7  	"github.com/cosmos/cosmos-sdk/std"
     8  	"github.com/cosmos/cosmos-sdk/x/auth/tx"
     9  )
    10  
    11  // This data structure (EncodingConfig) is heavily inspired by Quicksilver. https://github.com/ingenuity-build/quicksilver/blob/main/app/encoding.go
    12  type EncodingConfig struct {
    13  	InterfaceRegistry types.InterfaceRegistry
    14  	Marshaler         codec.Codec
    15  	TxConfig          client.TxConfig
    16  	Amino             *codec.LegacyAmino
    17  }
    18  
    19  // MakeEncodingConfig creates an EncodingConfig for an amino based test configuration.
    20  func MakeEncodingConfig() EncodingConfig {
    21  	amino := codec.NewLegacyAmino()
    22  	interfaceRegistry := types.NewInterfaceRegistry()
    23  	marshaler := codec.NewProtoCodec(interfaceRegistry)
    24  	txCfg := tx.NewTxConfig(marshaler, tx.DefaultSignModes)
    25  
    26  	encodingConfig := EncodingConfig{
    27  		InterfaceRegistry: interfaceRegistry,
    28  		Marshaler:         marshaler,
    29  		TxConfig:          txCfg,
    30  		Amino:             amino,
    31  	}
    32  
    33  	std.RegisterLegacyAminoCodec(encodingConfig.Amino)
    34  	std.RegisterInterfaces(encodingConfig.InterfaceRegistry)
    35  	ModuleBasics.RegisterLegacyAminoCodec(encodingConfig.Amino)
    36  	ModuleBasics.RegisterInterfaces(encodingConfig.InterfaceRegistry)
    37  	return encodingConfig
    38  }