aboutsummaryrefslogtreecommitdiffstats
path: root/xeth/xeth.go
diff options
context:
space:
mode:
Diffstat (limited to 'xeth/xeth.go')
-rw-r--r--xeth/xeth.go24
1 files changed, 14 insertions, 10 deletions
diff --git a/xeth/xeth.go b/xeth/xeth.go
index a65fa1331..0e71a0ed9 100644
--- a/xeth/xeth.go
+++ b/xeth/xeth.go
@@ -224,18 +224,22 @@ func (self *XEth) Call(toStr, valueStr, gasStr, gasPriceStr, dataStr string) (st
}
var (
- statedb = self.chainManager.TransState()
- initiator = state.NewStateObject(self.eth.KeyManager().KeyPair().Address(), self.eth.Db())
- block = self.chainManager.CurrentBlock()
- to = statedb.GetOrNewStateObject(fromHex(toStr))
- data = fromHex(dataStr)
- gas = ethutil.Big(gasStr)
- price = ethutil.Big(gasPriceStr)
- value = ethutil.Big(valueStr)
+ statedb = self.chainManager.TransState()
+ key = self.eth.KeyManager().KeyPair()
+ from = state.NewStateObject(key.Address(), self.eth.Db())
+ block = self.chainManager.CurrentBlock()
+ to = statedb.GetOrNewStateObject(fromHex(toStr))
+ data = fromHex(dataStr)
+ gas = ethutil.Big(gasStr)
+ price = ethutil.Big(gasPriceStr)
+ value = ethutil.Big(valueStr)
)
- vmenv := NewEnv(self.chainManager, statedb, block, value, initiator.Address())
- res, err := vmenv.Call(initiator, to.Address(), data, gas, price, value)
+ msg := types.NewTransactionMessage(fromHex(toStr), value, gas, price, data)
+ msg.Sign(key.PrivateKey)
+ vmenv := core.NewEnv(statedb, self.chainManager, msg, block)
+
+ res, err := vmenv.Call(from, to.Address(), data, gas, price, value)
if err != nil {
return "", err
}