TriportRPC

bor_getCurrentProposer

POSThttps://api.triport.io/polygon

Returns the address of the validator currently scheduled to propose blocks on Polygon's Bor consensus layer.

Polygonpolygon_borPro and above — rate limited per tier with a short burst allowance; no daily quota

bor_getCurrentProposer returns a single 0x-prefixed address: the signer of the validator that is the current block proposer on Polygon. This is part of the bor namespace — Polygon's Bor (Proof-of-Stake) consensus extension — and is not exposed by standard EVM/Geth methods.

The proposer rotates every block (Polygon block time is ~2.1s), selected by stake weight within the active validator set. Because the answer changes so frequently, this method is best suited to real-time "who is proposing right now" lookups — for example, MEV pre-confirmation logic or live validator dashboards. Poll it once per block at most; the value is stale almost immediately after it is read.

If you need the full proposer schedule for an epoch rather than the single current proposer, call bor_getSnapshot instead, which returns the validator set together with the recent-signers history. To resolve the proposer (author) of a historic block, use bor_getAuthor.

This is a bor-namespace method available on the Pro tier and above. It is rate limited per tier with a short burst allowance; there is no daily quota.

Parameters

This method takes no parameters. Pass an empty array.

optional
No parameters. params must be [].

Response

Response fields

FieldTypeDescription
resultstringThe 0x-prefixed 20-byte signer address of the validator currently scheduled to propose.

Errors

CodeMeaningWhen it happens
-32002tier_insufficientYour API key's tier is below Pro; this bor-namespace method is not enabled for it. The error.data carries current_tier, required_tier, and upgrade_url.
-32003rate_limitedYou exceeded your tier's request rate (including burst). Honor the Retry-After header / error.data.retry_after_sec and retry after a short back-off.

See the shared error envelope reference for the full error object shape and handling guidance.

Examples

JavaScript (fetch)

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


const { result } = await res.json();
console.log("current proposer:", result);

TypeScript SDK (@triport/sdk)

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


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


const proposer = await triport.polygon.request("bor_getCurrentProposer", []);
console.log("current proposer:", proposer);

Python (triport-sdk)

import os
from triport import Triport


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


proposer = triport.polygon.request("bor_getCurrentProposer", [])
print("current proposer:", proposer)

Notes

  • The proposer changes every block (~2.1s). Treat the result as a point-in-time snapshot; do not cache it across blocks.
  • For the full epoch proposer schedule (validator set + recent signers), use bor_getSnapshot. For the proposer of a specific historic block, use bor_getAuthor. For the active validator set with stake weights, see bor_getCurrentValidators.
  • bor_* methods reflect Polygon Bor consensus state and have no Ethereum equivalent.