package distribution import ( sdk "github.com/cosmos/cosmos-sdk/types" distributionkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/core/vm" "github.com/evmos/ethermint/x/evm/statedb" ) func (d *DistributionPrecompile) SetWithdrawAddress( ctx sdk.Context, evm *vm.EVM, stateDB *statedb.StateDB, contract *vm.Contract, method *abi.Method, args []interface{}, ) ([]byte, error) { msg, err := NewMsgSetWithdrawAddress(args, contract.CallerAddress) if err != nil { return nil, err } // validation // execute _, err = distributionkeeper.NewMsgServerImpl(d.distributionKeeper).SetWithdrawAddress(ctx, msg) if err != nil { return nil, err } // emit events return method.Outputs.Pack() } func (d *DistributionPrecompile) WithdrawDelegatorReward( ctx sdk.Context, evm *vm.EVM, stateDB *statedb.StateDB, contract *vm.Contract, method *abi.Method, args []interface{}, ) ([]byte, error) { msg, err := NewMsgWithdrawDelegatorReward(args, contract.CallerAddress) if err != nil { return nil, err } // validation // execute _, err = distributionkeeper.NewMsgServerImpl(d.distributionKeeper).WithdrawDelegatorReward(ctx, msg) if err != nil { return nil, err } // emit events return method.Outputs.Pack() } func (d *DistributionPrecompile) WithdrawValidatorCommission( ctx sdk.Context, evm *vm.EVM, stateDB *statedb.StateDB, contract *vm.Contract, method *abi.Method, args []interface{}, ) ([]byte, error) { msg, err := NewMsgWithdrawValidatorCommission(args, contract.CallerAddress) if err != nil { return nil, err } // validation // execute _, err = distributionkeeper.NewMsgServerImpl(d.distributionKeeper).WithdrawValidatorCommission(ctx, msg) if err != nil { return nil, err } // emit events return method.Outputs.Pack() }