diff --git a/rpc/api.go b/rpc/api.go
index 339de44328336bb52c8ad94089330f92da7d714a..cdd95c888d6a2a735fb997b9626129cc93207c54 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -212,7 +212,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
 		args := new(HashIndexArgs)
 		if err := json.Unmarshal(req.Params, &args); err != nil {
 		}
-		tx := api.xeth().EthTransactionByHash(args.Hash.Hex())
+		tx := api.xeth().EthTransactionByHash(args.Hash)
 		if tx != nil {
 			*reply = NewTransactionRes(tx)
 		}
diff --git a/rpc/args.go b/rpc/args.go
index 3637aff66dc0ae642de9e948c29c4f3ede129048..19258263c5fbebbdfd530d7b11a74bc5485abc1a 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -61,7 +61,7 @@ func numString(raw interface{}, number *int64) error {
 }
 
 type GetBlockByHashArgs struct {
-	BlockHash  common.Hash
+	BlockHash  string
 	IncludeTxs bool
 }
 
@@ -80,7 +80,7 @@ func (args *GetBlockByHashArgs) UnmarshalJSON(b []byte) (err error) {
 	if !ok {
 		return NewInvalidTypeError("blockHash", "not a string")
 	}
-	args.BlockHash = common.HexToHash(argstr)
+	args.BlockHash = argstr
 
 	if len(obj) > 1 {
 		args.IncludeTxs = obj[1].(bool)
@@ -360,7 +360,7 @@ func (args *BlockNumIndexArgs) UnmarshalJSON(b []byte) (err error) {
 }
 
 type HashIndexArgs struct {
-	Hash  common.Hash
+	Hash  string
 	Index int64
 }
 
@@ -379,7 +379,7 @@ func (args *HashIndexArgs) UnmarshalJSON(b []byte) (err error) {
 	if !ok {
 		return NewInvalidTypeError("hash", "not a string")
 	}
-	args.Hash = common.HexToHash(arg0)
+	args.Hash = arg0
 
 	if len(obj) > 1 {
 		arg1, ok := obj[1].(string)
diff --git a/rpc/args_test.go b/rpc/args_test.go
index da98071e948ca7af6d5cdfee3d6afaab0f00baa4..71f1a7058bec622ec387e9dcfc2c15a36b2167a0 100644
--- a/rpc/args_test.go
+++ b/rpc/args_test.go
@@ -191,7 +191,7 @@ func TestGetBalanceArgsAddressInvalid(t *testing.T) {
 func TestGetBlockByHashArgs(t *testing.T) {
 	input := `["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", true]`
 	expected := new(GetBlockByHashArgs)
-	expected.BlockHash = common.HexToHash("0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331")
+	expected.BlockHash = "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
 	expected.IncludeTxs = true
 
 	args := new(GetBlockByHashArgs)
@@ -1444,7 +1444,7 @@ func TestBlockNumIndexArgsIndexInvalid(t *testing.T) {
 func TestHashIndexArgs(t *testing.T) {
 	input := `["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x1"]`
 	expected := new(HashIndexArgs)
-	expected.Hash = common.HexToHash("0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b")
+	expected.Hash = "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b"
 	expected.Index = 1
 
 	args := new(HashIndexArgs)