github.com/aswedchain/aswed@v1.0.1/consensus/congress/vmcaller/vmcaller.go (about) 1 package vmcaller 2 3 import ( 4 "github.com/aswedchain/aswed/core" 5 "github.com/aswedchain/aswed/core/state" 6 "github.com/aswedchain/aswed/core/types" 7 "github.com/aswedchain/aswed/core/vm" 8 "github.com/aswedchain/aswed/params" 9 ) 10 11 // ExecuteMsg executes transaction sent to system contracts. 12 func ExecuteMsg(msg core.Message, state *state.StateDB, header *types.Header, chainContext core.ChainContext, chainConfig *params.ChainConfig) (ret []byte, err error) { 13 // Set gas price to zero 14 context := core.NewEVMContext(msg, header, chainContext, &(header.Coinbase)) 15 vmenv := vm.NewEVM(context, state, chainConfig, vm.Config{}) 16 17 ret, _, err = vmenv.Call(vm.AccountRef(msg.From()), *msg.To(), msg.Data(), msg.Gas(), msg.Value()) 18 19 return ret, err 20 }