rpc: refactor out runScriptInVM() from invokers

This commit is contained in:
Roman Khimov 2019-11-28 19:12:23 +03:00
parent e216139108
commit 127f8418c8

View file

@ -353,16 +353,7 @@ func (s *Server) invoke(reqParams Params) (interface{}, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
vm, _ := s.chain.GetTestVM() return s.runScriptInVM(script), nil
vm.LoadScript(script)
_ = vm.Run()
result := &wrappers.InvokeResult{
State: vm.State(),
GasConsumed: "0.1",
Script: hex.EncodeToString(script),
Stack: vm.Estack(),
}
return result, nil
} }
// invokescript implements the `invokescript` RPC call. // invokescript implements the `invokescript` RPC call.
@ -379,16 +370,7 @@ func (s *Server) invokeFunction(reqParams Params) (interface{}, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
vm, _ := s.chain.GetTestVM() return s.runScriptInVM(script), nil
vm.LoadScript(script)
_ = vm.Run()
result := &wrappers.InvokeResult{
State: vm.State(),
GasConsumed: "0.1",
Script: hex.EncodeToString(script),
Stack: vm.Estack(),
}
return result, nil
} }
// invokescript implements the `invokescript` RPC call. // invokescript implements the `invokescript` RPC call.
@ -402,18 +384,22 @@ func (s *Server) invokescript(reqParams Params) (interface{}, error) {
return nil, errInvalidParams return nil, errInvalidParams
} }
return s.runScriptInVM(script), nil
}
// runScriptInVM runs given script in a new test VM and returns the invocation
// result.
func (s *Server) runScriptInVM(script []byte) *wrappers.InvokeResult {
vm, _ := s.chain.GetTestVM() vm, _ := s.chain.GetTestVM()
vm.LoadScript(script) vm.LoadScript(script)
_ = vm.Run() _ = vm.Run()
// It's already being GetBytesHex'ed, so it's a correct string.
echo, _ := reqParams[0].GetString()
result := &wrappers.InvokeResult{ result := &wrappers.InvokeResult{
State: vm.State(), State: vm.State(),
GasConsumed: "0.1", GasConsumed: "0.1",
Script: echo, Script: hex.EncodeToString(script),
Stack: vm.Estack(), Stack: vm.Estack(),
} }
return result, nil return result
} }
func (s *Server) sendrawtransaction(reqParams Params) (interface{}, error) { func (s *Server) sendrawtransaction(reqParams Params) (interface{}, error) {