newBlocks

Available on Gateway and Cloud API

Name: newBlocks

newBlocks is a stream of all new blocks as they are propagated in the BDN.

Options

Key
Description
Values

include

Fields to include in the block stream.

hash,header,transactions,future_validator_info,withdrawals

[Default: all] future_validator_info contains validator addresses for future blocks and indicates whether the validators are connected to the BDN (currently only supported in BSC) withdrawals

contains withdrawals for ETH block

parsedTxs

Controls whether transactions in each block are returned as fully parsed JSON objects (true) or as raw, unparsed RLP payloads (false). Disabling parsing reduces server work and improves delivery latency.

Type: boolean [Default: false]

Examples (Websocket)

Cloud-API

## ETH Example
wscat -c wss://virginia.eth.blxrbdn.com/ws --header "Authorization: <YOUR-AUTHORIZATION-HEADER>"
> {"jsonrpc": "2.0", "id": 1, "method": "subscribe", "params": ["newBlocks", {"include": ["hash"]}]}
< ......


## BSC Example
wscat -c wss://virginia.bsc.blxrbdn.com/ws --header "Authorization: <YOUR-AUTHORIZATION-HEADER>"
> {"jsonrpc": "2.0", "id": 1, "method": "subscribe", "params": ["newBlocks", {"include": ["hash"], "blockchain_network": "BSC-Mainnet"}]}
< ......

Response (Block Event)

This response is for when parsedTxs is set to true in the stream subscription

<<< {"jsonrpc": "2.0", "id": null, "method": "subscribe", 
     "params": {"subscription": "213883fe-b3e2-4da2-b9ba-196a82df8628", 
     "result": {"hash": "0x079b7f1b5a68d4301cf97df2f81c406aa598dd508e2d1908974b95ddd61a4156", 
                "header": {"parentHash": "0xafef6c6bd1049febe85834aa84735f81f2e81efd55d85a1076aae0adceba16de", 
                           "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", 
                           "miner": "0xea674fdde714fd979de3edf0f56aa9716b898ec8", 
                           "stateRoot": "0x13f4a37eb7d0ca8ea309a631e51cca86eaa1b9765a2e6a9eb1614ddcf4ea57e4", 
                           "transactionsRoot": "0x33d0f3c1ce4e3be6346738465cafc727f3500990c881d6fe4821567504badfd5", 
                           "receiptsRoot": "0xad4fe2b36823a0b57f1c640d115eacc8cc1e64c73e49f89a131f206457afbf9f", 
                           "logsBloom": "0x3862455e6027e5863992de359e89bd33e91312891441903f715503c922420904c00e77b054483930423b7a0b5aa4433342b5c096fb3a0883a970d882b9ac02104582cab5eb046e62c9ca17acba8268e25c103107216cec48bc432d78b54927991c5147080a5781c028102040a28ab8d016439e6f8a4804b44c15c3fa85873c204ab8938d450f702ec2444f5a83028586683439ff6de3e57be46c295514527dbcc717f08804c1ac022fcccac7c058d447122e109294a38c3b1a2a676c9814c6913200414e638eb046ed244035875a0c2e446132bd450223952a9bbcd694666884a03db1340b8010dfaae464948a9b4ae524ff8a942258445c73ce176bee981b7d", 
                           "difficulty": "0xc39780fb04af3", 
                           "number": "0xab05c3", 
                           "gasLimit": "0xbdfca5", 
                           "gasUsed": "0xbdb8e3", 
                           "timestamp": "0x5fa62290", 
                           "extraData": "0x65746865726d696e652d6575312d36", 
                           "mixHash": "0x3cd96f6536c1cc745ce9a4f767d65a94b64392bc787e029e7c16339641265b0a", 
                           "nonce": "0x327b58b8b7216cf5",
                           "blobGasUsed": "0xa0000",
                           "excessBlobGas": "0x4b40000",
                           "parentBeaconBlockRoot": "0x14e886e6...908fe06ba3c"
                  },
                "future_validator_info":[{"block_height":22460216,
                                          "wallet_id":"0x295e26495cef6f69dfa69911d9d8e4f3bbadb89b",
                                          "accessible":true},
                                          {"block_height":22460217,
                                           "wallet_id":"0x2d4c407bbe49438ed859fe965b140dcf1aab71a9",
                                           "accessible":false}], 
                "transactions": [{"from": "0xea674fdde714fd979de3edf0f56aa9716b898ec8", 
                                  "gas": "0xc350", 
                                  "gasPrice": "0x3b9aca00", 
                                  "hash": "0x587a2db59d1af16aa03521a711c3db5b443e5d05cfc72eccadb89c99380f7da0", 
                                  "input": "0x", 
                                  "nonce": "0x1b8a09b", 
                                  "value": "0x54fbe53cd2d1338", 
                                  "v": "0x25", 
                                  "r": "0x41f3261e25a3e77abd4b0bd4f21cfc2d92ca2d52ff9c663c9a68c6a382115dac", 
                                  "s": "0x4350bb6f770bb3363094774fe36478b20013c705f4041fc1bcd0f9fe520c9a23", 
                                  "to": "0x190aab185dbf089b1c5cf06a4f13421c14fc18fa"},  
                                  ...
                                  {"from": "0xc88f7666330b4b511358b7742dc2a3234710e7b1", 
                                   "gas": "0x5208", 
                                   "gasPrice": "0x7aef40a00", 
                                   "hash": "0x92df6598e3a2bc9550898fd7b3322594228e513c0098333bbefd6784a1aa90db", 
                                   "input": "0x", 
                                   "nonce": "0x6827c", 
                                   "value": "0x36e9c396c89e000", 
                                   "v": "0x25", 
                                   "r": "0x1653aae7a09b85b923b4602f69886c816f470f9b5167d16f2cbb963d00345583", 
                                   "s": "0x2c429419c8f23172d4fe4177f796daacf6cfccd9d1545d62957e13fa4af933db", 
                                   "to": "0x844359bf8d5fa20f32b0d679527adb93d6255abf"}], 
               "withdrawals": [
                                 {
                                 "index": "0x1506516",
                                 "validatorIndex": "0x18ea9",
                                 "address": "0x8e609ac80f4324e499a6efd24f221a2caa868224",
                                 "amount": "0x379ea6b",
                                 },
                                 {
                                 "index": "0x1506517",
                                 "validatorIndex": "0x18eaa",
                                 "address": "0x8e609ac80f4324e499a6efd24f221a2caa868224",
                                 "amount": "0x102d9b3",
                                 }
                               ], 
                "uncles": []}}}

Examples - gRPC

package main

import (
	"context"
	"fmt"
	pb "github.com/bloXroute-Labs/gateway/v2/protobuf"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials"
	"time"
)

type blxrCredentials struct {
	authorization string
}

func (bc blxrCredentials) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {
	return map[string]string{
		"authorization": bc.authorization,
	}, nil
}

func (bc blxrCredentials) RequireTransportSecurity() bool {
	return false
}

func main() {
	// gRPC server default values
	gatewayHostIP := "localhost"
	gatewayGRPCPort := 5001
	
	// this will use localhost CA to verify the certificate
	creds := credentials.NewClientTLSFromCert(nil, "")

	// Open gRPC connection to Gateway.
	conn, _ := grpc.Dial(
		fmt.Sprintf("%v:%v", gatewayHostIP, gatewayGRPCPort),
		grpc.WithTransportCredentials(creds),
		grpc.WithPerRPCCredentials(blxrCredentials{authorization: "<YOUR-AUTHORIZATION-HEADER>"}),
	)

	// Use the Gateway client connection interface.
	client := pb.NewGatewayClient(conn)

	// create context and defer cancel of context
	callContext, cancel := context.WithTimeout(context.Background(), 24*time.Hour)
	defer cancel()

	// Create a subscription using the stream-specific method and request.
	stream, _ := client.NewBlocks(callContext, &pb.BlocksRequest{})

	for {
		subscriptionNotification, err := stream.Recv()
		if err == nil {
			fmt.Println(subscriptionNotification) // or process it generally
		}
	}
}

Response (Block Event)

{
    "future_validator_info": [],
    "transaction": [
        {
            "from": "",
            "local_region": false,
            "time": "0",
            "raw_tx": "+I6DAlTHhQHc1lHAglnYlBXsRrWI...3SFs7n3n3UUCAVX1weV6HLAcAKuA"
        },
        ....
        {
            "from": "",
            "local_region": false,
            "time": "0",
            "raw_tx": "AviPgkJogwkGOoQ7mso...3Z99ZUu1/Jc0B9ytQ="
        }
    ],
    "withdrawals": [
        {
            "address": "0x9baA3244565d51D9C7897c0EB6679eD4890e536E",
            "amount": "0x60077b",
            "index": "0x104ed81",
            "validator_index": "0x1ee90"
        },
        ....
        {
            "address": "0x9baA3244565d51D9C7897c0EB6679eD4890e536E",
            "amount": "0x604095",
            "index": "0x104ed90",
            "validator_index": "0x1ee9f"
        }
    ],
    "hash": "0xd9cfa479b98ae15...a7e629fe3435e6169abca",
    "subscriptionID": "c5451b97-c82c-47e2-a70e-74e3256584e6",
    "header": {
        "parent_hash": "0xf3fd6b6011eed8d...f482e9345a3fe5dfe9e26c1db",
        "sha3_uncles": "0x1dcc4de8dec75d7aa...48a7413f0a142fd40d49347",
        "miner": "0x0c10000000756...7f022929a97bda45",
        "state_root": "0xf074e94fc3d700a8f....9ea3280595bd5acd5d97d0",
        "transactions_root": "0xedade2fe2198c....ccf38eeaacb2ccaa92e60",
        "receipts_root": "0x2ff34bb52237c31b8...78e0ac369028cb63f",
        "logs_bloom": "0x4c0008000804...00402004048",
        "difficulty": "0x0",
        "number": "0x107336",
        "gas_limit": "0x1c9c380",
        "gas_used": "0x11bc8e3",
        "timestamp": "0x65e73b50",
        "extra_data": "0xd883010d0e846....2312e37856c696e7578",
        "mix_hash": "0xf6743b00bce48fc1617acf...84d781807a3866ab",
        "nonce": "0x0000000000000000",
        "base_fee_per_gas": "59",
        "withdrawals_root": "0x5e9855e2716a2b4793d4e...9faa41d9c876fcff1b",
        "blob_gas_used": "0x80000",
        "excess_blob_gas": "0x4b20000",
        "parent_beacon_root": "0xe83661292da71373c38...3a91a5e27ac4a59ea3c"
    }
}

Last updated