-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Description
type Solidity struct {
*tripod.Tripod
ethState *EthState
cfg *GethConfig
stateConfig *config.Config
}
func newEVM(cfg *GethConfig) *vm.EVM {
return vm.NewEVM(blockContext, txContext,
cfg.State, cfg.ChainConfig, cfg.EVMConfig)
}
func (s *Solidity) ExecuteTxn(ctx *context.WriteContext) (err error) {
txReq := new(TxRequest)
err = ctx.BindJson(txReq)
vmenv := newEVM(cfg)
vmenv.StateDB = pending_state.NewPendingState(s.ethState.stateDB)
sender := vm.AccountRef(txReq.Origin)
rules := cfg.ChainConfig.Rules(vmenv.Context.BlockNumber,
vmenv.Context.Random != nil, vmenv.Context.Time)
if txReq.Address == zeroAddress {
return executeContractCreation(txReq, ethstate, cfg,
vmenv, sender, rules)
} else {
return executeContractCall(txReq, ethstate, cfg, vmenv,
sender, rules)
}
}
Metadata
Metadata
Assignees
Labels
No labels