TriportRPC

bor_getSigners

POSThttps://api.triport.io/polygon

Returns the list of authorized validator signer addresses for a given Polygon (Bor) block.

Polygonpolygon_borPro tier · premium bor_* namespace — low sustained RPS with a burst allowance of 2 × limit_rps (no per-method RPS is published in the spec)

bor_getSigners returns the set of validator addresses authorized to sign at a given block on Polygon's Bor consensus layer. The result is a flat array of 0x-prefixed addresses.

This is a Bor-consensus-specific method — it is not part of the standard EVM / Geth namespace and is only meaningful on Polygon. It belongs to the premium bor_* family, so a Pro tier key (scope polygon_bor) is required.

The signer list it returns is a subset of bor_getSnapshot's validators field and exists mainly for legacy compatibility. If you need richer consensus state — stake/power per validator, the proposer-rotation accumulator, or the recent-signers history — prefer bor_getSnapshot, which returns all of it in one call. Reach for bor_getSigners when you only need the bare authorized-signer set at a block.

Parameters

Positional params array (JSON-RPC params).

blockstring | numberoptional
Block selector to read the signer set at — a hex block-number quantity (e.g. "0x3a2c940"), a decimal block number, or a tag such as "latest". Omit (empty params) to use the latest block.

Response

Response fields

FieldTypeDescription
resultarray of stringAuthorized signer addresses (0x-prefixed, 20-byte) for the requested block. A subset of bor_getSnapshot.validators.

Errors

JSON-RPC errors are returned in the standard error object with a numeric code, a message, and a data payload carrying the extra fields below.

CodeMeaningWhen it happens
-32002tier_insufficientYour key's tier is below Pro. data includes current_tier, required_tier, method, category (polygon_bor), and upgrade_url.
-32003rate_limitedSustained RPS for your tier and the polygon_bor category was exceeded. data includes retry_after_sec, limit_rps, burst_capacity, category, and current_tier.
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32002,
    "message": "Method 'bor_getSigners' requires pro tier or higher",
    "data": {
      "current_tier": "free",
      "required_tier": "pro",
      "method": "bor_getSigners",
      "category": "polygon_bor",
      "upgrade_url": "https://triport.io/upgrade/pro"
    }
  }
}

See the shared errors reference for the full envelope, the HTTP↔JSON-RPC code mapping, and the X-RateLimit-* / X-Required-Tier response headers.

Examples

JavaScript (fetch)

const res = await fetch("https://api.triport.io/polygon", {
  method: "POST",
  headers: {
    "x-token": process.env.TRIPORT_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "bor_getSigners",
    params: ["latest"],
  }),
});


const { result: signers } = await res.json();
console.log(`${signers.length} authorized signers`, signers);

TypeScript SDK (@triport/sdk)

import { Triport } from "@triport/sdk";


const client = new Triport({ apiKey: process.env.TRIPORT_API_KEY });


// Requires a Pro-tier key (polygon_bor scope).
const signers = await client.polygon.rpc<string[]>("bor_getSigners", ["latest"]);
console.log(signers);

Python (triport-sdk)

import os
from triport import Triport


client = Triport(api_key=os.environ["TRIPORT_API_KEY"])


# Requires a Pro-tier key (polygon_bor scope).
signers = client.polygon.rpc("bor_getSigners", ["latest"])
print(f"{len(signers)} authorized signers")
print(signers)

Notes

  • Prefer bor_getSnapshot for anything beyond the bare signer set — it returns the validator set plus recent-signers history and block context in a single call. bor_getSigners is a legacy-compatibility subset of that snapshot's validators.
  • The Bor validator set rotates roughly once per epoch (~36 minutes), so the signer list is stable within an epoch — a client-side cache TTL of ~30 minutes is a reasonable default.
  • Related Bor methods: bor_getCurrentValidators (current epoch's validators with stake/power), bor_getCurrentProposer (current block proposer), bor_getAuthor (author of a historic block), and bor_getRootHash.
  • This method has no Ethereum equivalent — Bor consensus is Polygon-specific.