diff options
author | obscuren <geffobscura@gmail.com> | 2015-04-09 06:44:20 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-04-09 06:44:20 +0800 |
commit | a9959805e572ec438bf31ea97cb4a52e0e9715e9 (patch) | |
tree | c8cd9e2318c5ad19aebad5c949066071e29b9668 | |
parent | 204ac81188e43900835c6aa5bad6b3e48f3a16d0 (diff) | |
download | go-tangerine-a9959805e572ec438bf31ea97cb4a52e0e9715e9.tar go-tangerine-a9959805e572ec438bf31ea97cb4a52e0e9715e9.tar.gz go-tangerine-a9959805e572ec438bf31ea97cb4a52e0e9715e9.tar.bz2 go-tangerine-a9959805e572ec438bf31ea97cb4a52e0e9715e9.tar.lz go-tangerine-a9959805e572ec438bf31ea97cb4a52e0e9715e9.tar.xz go-tangerine-a9959805e572ec438bf31ea97cb4a52e0e9715e9.tar.zst go-tangerine-a9959805e572ec438bf31ea97cb4a52e0e9715e9.zip |
Removed from as a requirement and changed
Removed the from as a requiremet from the RPC eth_call. Xeth#Call now
also default values to:
1. Supplied account
2. First account if any
3. No managed account => 000000..00
-rw-r--r-- | rpc/args.go | 5 | ||||
-rw-r--r-- | rpc/args_test.go | 15 | ||||
-rw-r--r-- | xeth/xeth.go | 14 |
3 files changed, 13 insertions, 21 deletions
diff --git a/rpc/args.go b/rpc/args.go index 5b1c271cc..4bc36f5d9 100644 --- a/rpc/args.go +++ b/rpc/args.go @@ -279,11 +279,6 @@ func (args *CallArgs) UnmarshalJSON(b []byte) (err error) { return NewDecodeParamError(err.Error()) } - if len(ext.From) == 0 { - return NewValidationError("from", "is required") - } - args.From = ext.From - if len(ext.To) == 0 { return NewValidationError("to", "is required") } diff --git a/rpc/args_test.go b/rpc/args_test.go index 050f8e472..cfe6c0c45 100644 --- a/rpc/args_test.go +++ b/rpc/args_test.go @@ -671,10 +671,6 @@ func TestCallArgs(t *testing.T) { t.Error(err) } - if expected.From != args.From { - t.Errorf("From shoud be %#v but is %#v", expected.From, args.From) - } - if expected.To != args.To { t.Errorf("To shoud be %#v but is %#v", expected.To, args.To) } @@ -895,19 +891,8 @@ func TestCallArgsNotStrings(t *testing.T) { } } -func TestCallArgsFromEmpty(t *testing.T) { - input := `[{"to": "0xb60e8dd61c5d32be8058bb8eb970870f07233155"}]` - - args := new(CallArgs) - str := ExpectValidationError(json.Unmarshal([]byte(input), &args)) - if len(str) > 0 { - t.Error(str) - } -} - func TestCallArgsToEmpty(t *testing.T) { input := `[{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155"}]` - args := new(CallArgs) str := ExpectValidationError(json.Unmarshal([]byte(input), &args)) if len(str) > 0 { diff --git a/xeth/xeth.go b/xeth/xeth.go index 94014763a..407fe69d5 100644 --- a/xeth/xeth.go +++ b/xeth/xeth.go @@ -572,8 +572,20 @@ func (self *XEth) PushTx(encodedTx string) (string, error) { func (self *XEth) Call(fromStr, toStr, valueStr, gasStr, gasPriceStr, dataStr string) (string, error) { statedb := self.State().State() //self.eth.ChainManager().TransState() + var from *state.StateObject + if len(fromStr) == 0 { + accounts, err := self.backend.AccountManager().Accounts() + if err != nil || len(accounts) == 0 { + from = statedb.GetOrNewStateObject(common.Address{}) + } else { + from = statedb.GetOrNewStateObject(common.BytesToAddress(accounts[0].Address)) + } + } else { + from = statedb.GetOrNewStateObject(common.HexToAddress(fromStr)) + } + msg := callmsg{ - from: statedb.GetOrNewStateObject(common.HexToAddress(fromStr)), + from: from, to: common.HexToAddress(toStr), gas: common.Big(gasStr), gasPrice: common.Big(gasPriceStr), |