github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/evm/types/codec.go (about)

     1  package types
     2  
     3  import (
     4  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
     5  	"github.com/tendermint/go-amino"
     6  )
     7  
     8  // ModuleCdc defines the evm module's codec
     9  var ModuleCdc = codec.New()
    10  
    11  const (
    12  	MsgEthereumTxName = "ethermint/MsgEthereumTx"
    13  	ChainConfigName   = "ethermint/ChainConfig"
    14  	TxDataName        = "ethermint/TxData"
    15  
    16  	ManageContractDeploymentWhitelistProposalName = "fbexchain/evm/ManageContractDeploymentWhitelistProposal"
    17  	ManageContractBlockedListProposalName         = "fbexchain/evm/ManageContractBlockedListProposal"
    18  )
    19  
    20  // RegisterCodec registers all the necessary types and interfaces for the
    21  // evm module
    22  func RegisterCodec(cdc *codec.Codec) {
    23  	cdc.RegisterConcrete(&MsgEthereumTx{}, MsgEthereumTxName, nil)
    24  	cdc.RegisterConcrete(TxData{}, TxDataName, nil)
    25  	cdc.RegisterConcrete(ChainConfig{}, ChainConfigName, nil)
    26  	cdc.RegisterConcrete(ManageContractDeploymentWhitelistProposal{}, ManageContractDeploymentWhitelistProposalName, nil)
    27  	cdc.RegisterConcrete(ManageContractBlockedListProposal{}, ManageContractBlockedListProposalName, nil)
    28  	cdc.RegisterConcrete(ManageContractMethodBlockedListProposal{}, "fbexchain/evm/ManageContractMethodBlockedListProposal", nil)
    29  	cdc.RegisterConcrete(ManageSysContractAddressProposal{}, "fbexchain/evm/ManageSysContractAddressProposal", nil)
    30  	cdc.RegisterConcrete(ManageContractByteCodeProposal{}, "fbexchain/evm/ManageContractBytecode", nil)
    31  
    32  	cdc.RegisterConcreteUnmarshaller(ChainConfigName, func(c *amino.Codec, bytes []byte) (interface{}, int, error) {
    33  		var cc ChainConfig
    34  		err := cc.UnmarshalFromAmino(c, bytes)
    35  		if err != nil {
    36  			return ChainConfig{}, 0, err
    37  		} else {
    38  			return cc, len(bytes), nil
    39  		}
    40  	})
    41  	cdc.RegisterConcreteUnmarshaller(MsgEthereumTxName, func(c *amino.Codec, bytes []byte) (interface{}, int, error) {
    42  		var msg MsgEthereumTx
    43  		err := msg.UnmarshalFromAmino(c, bytes)
    44  		if err != nil {
    45  			return nil, 0, err
    46  		}
    47  		return &msg, len(bytes), nil
    48  	})
    49  	cdc.RegisterConcreteUnmarshaller(TxDataName, func(c *amino.Codec, bytes []byte) (interface{}, int, error) {
    50  		var tx TxData
    51  		err := tx.UnmarshalFromAmino(c, bytes)
    52  		if err != nil {
    53  			return nil, 0, err
    54  		}
    55  		return tx, len(bytes), nil
    56  	})
    57  }
    58  
    59  func init() {
    60  	RegisterCodec(ModuleCdc)
    61  	codec.RegisterCrypto(ModuleCdc)
    62  	ModuleCdc.Seal()
    63  }