github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/jsonrpc/client/zkevm.go (about) 1 package client 2 3 import ( 4 "context" 5 "encoding/json" 6 "fmt" 7 "math/big" 8 9 "github.com/0xPolygon/supernets2-node/hex" 10 "github.com/0xPolygon/supernets2-node/jsonrpc/types" 11 ) 12 13 // BatchNumber returns the latest batch number 14 func (c *Client) BatchNumber(ctx context.Context) (uint64, error) { 15 response, err := JSONRPCCall(c.url, "zkevm_batchNumber") 16 if err != nil { 17 return 0, err 18 } 19 20 if response.Error != nil { 21 return 0, fmt.Errorf("%v %v", response.Error.Code, response.Error.Message) 22 } 23 24 var result string 25 err = json.Unmarshal(response.Result, &result) 26 if err != nil { 27 return 0, err 28 } 29 30 bigBatchNumber := hex.DecodeBig(result) 31 batchNumber := bigBatchNumber.Uint64() 32 33 return batchNumber, nil 34 } 35 36 // BatchByNumber returns a batch from the current canonical chain. If number is nil, the 37 // latest known batch is returned. 38 func (c *Client) BatchByNumber(ctx context.Context, number *big.Int) (*types.Batch, error) { 39 response, err := JSONRPCCall(c.url, "zkevm_getBatchByNumber", types.ToBatchNumArg(number), true) 40 if err != nil { 41 return nil, err 42 } 43 44 if response.Error != nil { 45 return nil, fmt.Errorf("%v %v", response.Error.Code, response.Error.Message) 46 } 47 48 var result *types.Batch 49 err = json.Unmarshal(response.Result, &result) 50 if err != nil { 51 return nil, err 52 } 53 54 return result, nil 55 }