diff options
author | Taylor Gerring <taylor.gerring@gmail.com> | 2015-03-20 20:45:07 +0800 |
---|---|---|
committer | Taylor Gerring <taylor.gerring@gmail.com> | 2015-03-20 20:45:07 +0800 |
commit | 739c36ad4df63580bef241a4da8d2cc5010eab54 (patch) | |
tree | 33e9e772604115a90350146491fe5bda22bea1ab | |
parent | 28e5fc83526af17a911eece6befa5fe54578fb55 (diff) | |
download | dexon-739c36ad4df63580bef241a4da8d2cc5010eab54.tar.gz dexon-739c36ad4df63580bef241a4da8d2cc5010eab54.tar.zst dexon-739c36ad4df63580bef241a4da8d2cc5010eab54.zip |
inline GetStorageAt
-rw-r--r-- | rpc/api.go | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/rpc/api.go b/rpc/api.go index 5f29886e0..4758363d1 100644 --- a/rpc/api.go +++ b/rpc/api.go @@ -4,7 +4,6 @@ import ( "encoding/json" "math/big" "path" - "strings" "sync" "github.com/ethereum/go-ethereum/common" @@ -43,27 +42,6 @@ func (self *EthereumApi) xeth() *xeth.XEth { return self.eth } -func (p *EthereumApi) GetStorageAt(args *GetStorageAtArgs, reply *interface{}) error { - if err := args.requirements(); err != nil { - return err - } - - state := p.xeth().AtStateNum(args.BlockNumber).State().SafeGet(args.Address) - value := state.StorageString(args.Key) - - var hx string - if strings.Index(args.Key, "0x") == 0 { - hx = string([]byte(args.Key)[2:]) - } else { - // Convert the incoming string (which is a bigint) into hex - i, _ := new(big.Int).SetString(args.Key, 10) - hx = common.Bytes2Hex(i.Bytes()) - } - rpclogger.Debugf("GetStateAt(%s, %s)\n", args.Address, hx) - *reply = map[string]string{args.Key: value.Str()} - return nil -} - // func (self *EthereumApi) Register(args string, reply *interface{}) error { // self.regmut.Lock() // defer self.regmut.Unlock() @@ -159,7 +137,14 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error if err := json.Unmarshal(req.Params, &args); err != nil { return err } - return p.GetStorageAt(args, reply) + if err := args.requirements(); err != nil { + return err + } + + state := p.xeth().AtStateNum(args.BlockNumber).State().SafeGet(args.Address) + value := state.StorageString(args.Key) + + *reply = common.Bytes2Hex(value.Bytes()) case "eth_getTransactionCount": args := new(GetTxCountArgs) if err := json.Unmarshal(req.Params, &args); err != nil { |