For the complete documentation index, see llms.txt. This page is also available as Markdown.

GetStartBlockHeimdallSpanID - Polygon gRPC

Example code for the GetStartBlockHeimdallSpanID grpc method. Сomplete guide on how to use GetStartBlockHeimdallSpanID grpc in GetBlock.io Web3 documentation.

Maps a Bor start block to its corresponding Heimdall span ID. Given a Bor block number, returns which Heimdall span that block belongs to — spans are ~6400-block windows during which a specific validator subset is authorized to produce blocks. Used by Heimdall to correlate Bor block ranges with span metadata (validator sets, producer selection).

Request Parameters

Parameter
Type
Required
Description

StartBlock

uint64

Yes

Bor start block number

Request Example

grpcurl -H 'x-access-token: <ACCESS-TOKEN>' \
        -d '{"StartBlock": "76540000"}' \
        shared.ap-southeast-1.getblock.io:443 \
        bor.BorApi/GetStartBlockHeimdallSpanID
import * as grpc from '@grpc/grpc-js';
import protoLoader from '@grpc/proto-loader';

const GRPC_TARGET = 'shared.ap-southeast-1.getblock.io:443';
const ACCESS_TOKEN = '<ACCESS-TOKEN>';
const PROTO_PATH = './protos/bor/bor.proto';

const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
    keepCase: true,
    longs: String,
    enums: String,
    defaults: true,
    oneofs: true,
    includeDirs: ['./protos'],
});
const proto = grpc.loadPackageDefinition(packageDefinition);
const BorApiClient = proto.bor.BorApi;
const client = new BorApiClient(GRPC_TARGET, grpc.credentials.createSsl());

const metadata = new grpc.Metadata();
metadata.add('x-access-token', ACCESS_TOKEN);

const request = {
    "StartBlock": "76540000"
};

client.GetStartBlockHeimdallSpanID(request, metadata, (err, response) => {
    if (err) {
        console.error('gRPC error:', err.code, err.message);
        return;
    }
    console.log(JSON.stringify(response, null, 2));
});

Response Example

{
    "StartBlock": "76540000",
    "HeimdallSpanID": "6543"
}

H160 and H256 encoding. In JSON representations of protobuf messages, common.H160 (20-byte addresses) and common.H256 (32-byte hashes) are shown here as hex strings for readability. The actual JSON wire format from grpcurl or MessageToJson reflects the message structure defined in common/common.proto — typically a nested object encoding. Applications using the typed generated clients receive H160/H256 as strongly-typed message objects, not strings.

Response Fields

Field
Type
Description

StartBlock

uint64

Echo of the input StartBlock (helps clients confirm the query was interpreted correctly)

HeimdallSpanID

uint64

The Heimdall span ID that contains this Bor block

Use Cases

  • Reconstructing which validator subset was authorized during a specific Bor block range

  • Historical span analysis for producer performance metrics

  • Cross-referencing Bor block production against Heimdall's span records

Error Handling

gRPC Status (Code)
Message
Cause

UNAUTHENTICATED (16)

missing or invalid x-access-token

Access token missing from x-access-token gRPC metadata or invalid

PERMISSION_DENIED (7)

access denied

Access token doesn't have permission for this method or endpoint

INVALID_ARGUMENT (3)

invalid request

Request message is malformed or fails validation (e.g. invalid block number tag)

INTERNAL (13)

internal error

Server-side error while processing the request

UNAVAILABLE (14)

service unavailable

Bor node is temporarily unavailable (syncing, restart, or overload)

DEADLINE_EXCEEDED (4)

deadline exceeded

Request took longer than the client-configured timeout

RESOURCE_EXHAUSTED (8)

rate limit exceeded

Rate limit exceeded for your plan

SDK Integration

Last updated

Was this helpful?