From 6fd894aae00c8c0f9f33eae7353dd9afd97f4fa1 Mon Sep 17 00:00:00 2001
From: Taylor Gerring <taylor.gerring@gmail.com>
Date: Mon, 23 Feb 2015 11:54:23 +0100
Subject: [PATCH] Allow zero and negative block numbers

0 is genesis block. Xeth recognises -1 as current
---
 rpc/args.go     |  7 -------
 rpc/packages.go | 12 ++++--------
 2 files changed, 4 insertions(+), 15 deletions(-)

diff --git a/rpc/args.go b/rpc/args.go
index f730819fd..347f60410 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -22,13 +22,6 @@ func (obj *GetBlockArgs) UnmarshalJSON(b []byte) (err error) {
 	return NewErrorResponse(ErrorDecodeArgs)
 }
 
-func (obj *GetBlockArgs) requirements() error {
-	if obj.BlockNumber == 0 && obj.Hash == "" {
-		return NewErrorResponse("GetBlock requires either a block 'number' or a block 'hash' as argument")
-	}
-	return nil
-}
-
 type NewTxArgs struct {
 	From     string `json:"from"`
 	To       string `json:"to"`
diff --git a/rpc/packages.go b/rpc/packages.go
index b51bde7ce..2f694b823 100644
--- a/rpc/packages.go
+++ b/rpc/packages.go
@@ -177,15 +177,11 @@ func (self *EthereumApi) AllLogs(args *FilterOptions, reply *interface{}) error
 }
 
 func (p *EthereumApi) GetBlock(args *GetBlockArgs, reply *interface{}) error {
-	err := args.requirements()
-	if err != nil {
-		return err
-	}
-
-	if args.BlockNumber > 0 {
-		*reply = p.xeth.BlockByNumber(args.BlockNumber)
-	} else {
+	// This seems a bit precarious Maybe worth splitting to discrete functions
+	if len(args.Hash) > 0 {
 		*reply = p.xeth.BlockByHash(args.Hash)
+	} else {
+		*reply = p.xeth.BlockByNumber(args.BlockNumber)
 	}
 	return nil
 }
-- 
GitLab