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 }