From c7dc379da5a02fb8ac92788fa317379fbde00d20 Mon Sep 17 00:00:00 2001 From: Taylor Gerring Date: Thu, 26 Mar 2015 10:14:52 +0100 Subject: GetBlockByHashArgs --- rpc/api.go | 8 ++++---- rpc/args.go | 4 ++-- rpc/args_test.go | 2 +- xeth/xeth.go | 7 +++++-- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/rpc/api.go b/rpc/api.go index aa5b54199..8d1a412d1 100644 --- a/rpc/api.go +++ b/rpc/api.go @@ -245,7 +245,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err return err } - block := api.xeth().EthBlockByHash(args.Hash) + block := api.xeth().EthBlockByHexstring(args.Hash) br := NewBlockRes(block) br.fullTx = true @@ -273,14 +273,14 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err return err } - br := NewBlockRes(api.xeth().EthBlockByHash(args.Hash)) + br := NewBlockRes(api.xeth().EthBlockByHexstring(args.Hash)) if args.Index > int64(len(br.Uncles)) || args.Index < 0 { return NewValidationError("Index", "does not exist") } uhash := br.Uncles[args.Index].Hex() - uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash)) + uncle := NewBlockRes(api.xeth().EthBlockByHexstring(uhash)) *reply = uncle case "eth_getUncleByBlockNumberAndIndex": @@ -298,7 +298,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err } uhash := v.Uncles[args.Index].Hex() - uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash)) + uncle := NewBlockRes(api.xeth().EthBlockByHexstring(uhash)) *reply = uncle case "eth_getCompilers": diff --git a/rpc/args.go b/rpc/args.go index 5b655024c..9a51959f4 100644 --- a/rpc/args.go +++ b/rpc/args.go @@ -35,7 +35,7 @@ func blockHeight(raw interface{}, number *int64) (err error) { } type GetBlockByHashArgs struct { - BlockHash string + BlockHash common.Hash IncludeTxs bool } @@ -54,7 +54,7 @@ func (args *GetBlockByHashArgs) UnmarshalJSON(b []byte) (err error) { if !ok { return NewDecodeParamError("BlockHash not a string") } - args.BlockHash = argstr + args.BlockHash = common.HexToHash(argstr) if len(obj) > 1 { args.IncludeTxs = obj[1].(bool) diff --git a/rpc/args_test.go b/rpc/args_test.go index 5cbafd4b2..c6d3a558b 100644 --- a/rpc/args_test.go +++ b/rpc/args_test.go @@ -83,7 +83,7 @@ func TestGetBalanceEmptyArgs(t *testing.T) { func TestGetBlockByHashArgs(t *testing.T) { input := `["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", true]` expected := new(GetBlockByHashArgs) - expected.BlockHash = "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" + expected.BlockHash = common.HexToHash("0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331") expected.IncludeTxs = true args := new(GetBlockByHashArgs) diff --git a/xeth/xeth.go b/xeth/xeth.go index bf30fc2fc..92e73c7d5 100644 --- a/xeth/xeth.go +++ b/xeth/xeth.go @@ -160,13 +160,16 @@ func (self *XEth) BlockByHash(strHash string) *Block { return NewBlock(block) } -func (self *XEth) EthBlockByHash(strHash string) *types.Block { - hash := common.HexToHash(strHash) +func (self *XEth) EthBlockByHash(hash common.Hash) *types.Block { block := self.backend.ChainManager().GetBlock(hash) return block } +func (self *XEth) EthBlockByHexstring(strHash string) *types.Block { + return self.EthBlockByHash(common.HexToHash(strHash)) +} + func (self *XEth) EthTransactionByHash(hash string) *types.Transaction { data, _ := self.backend.ExtraDb().Get(common.FromHex(hash)) if len(data) != 0 { -- cgit v1.2.3