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  }