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

GetAuthor - Polygon gRPC

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

Returns the address of the validator that authored (produced and signed) a specific block. Bor uses secp256k1 signatures appended to the extraData header field to identify block authors — this method recovers the author from the signature. Used by Heimdall to verify that blocks were produced by the correct validator subset for the active span.

Request Parameters

Parameter
Type
Required
Description

number

string

Yes

Block reference — tag or hex block number

Request Example

grpcurl -H 'x-access-token: <ACCESS_TOKEN>' \
        -d '{"number": "latest"}' \
        shared.ap-southeast-1.getblock.io:443 \
        bor.BorApi/GetAuthor
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 = {
    "number": "latest"
};

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

Response Example

{
  "author": {
    "Hi": {
      "Hi": "2718481128240167593",
      "Lo": "13848821177151473057"
    },
    "Lo": 1989474573
  }
}

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

author

H160

The block author (validator) address

Use Cases

  • Validator dashboards showing block production distribution

  • Detecting when blocks are produced by unauthorized validators (a Heimdall-side sanity check)

  • Producer performance analytics

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

NOT_FOUND (5)

block not found

Block number is beyond the current chain tip

INVALID_ARGUMENT (3)

malformed block reference

Block reference is not a valid tag or hex number

SDK Integration

Last updated

Was this helpful?