github.com/InjectiveLabs/sdk-go@v1.53.0/chain/wasmx/types/custom_execution.go (about) 1 package types 2 3 import ( 4 "encoding/json" 5 6 "cosmossdk.io/errors" 7 sdk "github.com/cosmos/cosmos-sdk/types" 8 sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" 9 ) 10 11 type InjectiveExecMsg struct { 12 ExecutionData ExecutionData `json:"injective_exec"` 13 } 14 15 type ExecutionData struct { 16 Origin string `json:"origin"` 17 Name string `json:"name"` 18 Args interface{} `json:"args"` 19 } 20 21 func NewInjectiveExecMsg(origin sdk.AccAddress, data string) (*InjectiveExecMsg, error) { 22 var e ExecutionData 23 if err := json.Unmarshal([]byte(data), &e); err != nil { 24 return nil, errors.Wrap(err, data) 25 } 26 27 if e.Origin == "" && origin.Empty() { 28 return nil, errors.Wrap(sdkerrors.ErrInvalidAddress, "origin address is empty") 29 } 30 31 // override e.Origin for safety 32 e.Origin = origin.String() 33 34 return &InjectiveExecMsg{ 35 ExecutionData: e, 36 }, nil 37 }