package dasigners import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/core/vm" "github.com/evmos/ethermint/x/evm/statedb" ) func (d *DASignersPrecompile) RegisterSigner(ctx sdk.Context, evm *vm.EVM, stateDB *statedb.StateDB, method *abi.Method, args []interface{}) ([]byte, error) { msg, err := NewMsgRegisterSigner(args) if err != nil { return nil, err } // validation sender := ToLowerHexWithoutPrefix(evm.Origin) if sender != msg.Signer.Account { return nil, fmt.Errorf(ErrInvalidSender, sender, msg.Signer.Account) } // execute _, err = d.dasignersKeeper.RegisterSigner(sdk.WrapSDKContext(ctx), msg) if err != nil { return nil, err } // emit events err = d.EmitNewSignerEvent(ctx, stateDB, args[0].(IDASignersSignerDetail)) if err != nil { return nil, err } return method.Outputs.Pack() } func (d *DASignersPrecompile) RegisterNextEpoch(ctx sdk.Context, evm *vm.EVM, stateDB *statedb.StateDB, method *abi.Method, args []interface{}) ([]byte, error) { msg, err := NewMsgRegisterNextEpoch(args, ToLowerHexWithoutPrefix(evm.Origin)) if err != nil { return nil, err } // execute _, err = d.dasignersKeeper.RegisterNextEpoch(sdk.WrapSDKContext(ctx), msg) if err != nil { return nil, err } return method.Outputs.Pack() } func (d *DASignersPrecompile) UpdateSocket(ctx sdk.Context, evm *vm.EVM, stateDB *statedb.StateDB, method *abi.Method, args []interface{}) ([]byte, error) { msg, err := NewMsgUpdateSocket(args, ToLowerHexWithoutPrefix(evm.Origin)) if err != nil { return nil, err } // execute _, err = d.dasignersKeeper.UpdateSocket(sdk.WrapSDKContext(ctx), msg) if err != nil { return nil, err } // emit events err = d.EmitSocketUpdatedEvent(ctx, stateDB, evm.Origin, args[0].(string)) if err != nil { return nil, err } return method.Outputs.Pack() }