Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions methods/http/getRecentPerformanceSamples.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# getRecentPerformanceSamples

Returns blockstore performance samples for recent slots.

## Semantics

The omitted limit defaults to Agave PERFORMANCE_SAMPLES_LIMIT value of 720. A limit above 720 is rejected with the JSON-RPC invalid-params error. numNonVoteTransactions is nullable to preserve compatibility with older serialized samples.

## Implementation notes

- [**Agave**](../../implementations/agave.md): reference implementation. See the pinned [handler](https://github.com/anza-xyz/agave/blob/6dd9d38771e46103b9680357a855804165612602/rpc/src/rpc.rs#L3742-L3766).
40 changes: 40 additions & 0 deletions methods/http/getRecentPerformanceSamples.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: getRecentPerformanceSamples
status: standard
summary: Returns recent validator performance samples.
params:
- name: limit
required: false
summary: Maximum number of samples. Agave accepts at most 720.
schema: { type: integer, minimum: 0, maximum: 720 }
result:
name: samples
summary: Recent performance samples.
schema:
type: array
items:
type: object
required: [slot, numTransactions, numSlots, samplePeriodSecs]
properties:
slot: { $ref: '#/components/schemas/Slot' }
numTransactions: { $ref: '#/components/schemas/U64' }
numNonVoteTransactions:
oneOf:
- { $ref: '#/components/schemas/U64' }
- { type: 'null' }
numSlots: { $ref: '#/components/schemas/U64' }
samplePeriodSecs: { type: integer, minimum: 0, maximum: 65535 }
errors: []
examples:
- name: one-sample
summary: Request one recent sample.
params:
- name: limit
value: 1
result:
name: samples
value:
- { slot: 348125, numTransactions: 126, numNonVoteTransactions: 98, numSlots: 60, samplePeriodSecs: 60 }
implementations:
agave: { status: full }
cloudbreak: { status: none }
superbank: { status: none }
39 changes: 39 additions & 0 deletions proposals/0039-get-recent-performance-samples.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
number: 0039
title: Add getRecentPerformanceSamples method specification
authors: [rpcpool]
status: draft
created: 2026-09-14
reference-implementations:
- https://github.com/anza-xyz/agave/tree/6dd9d38771e46103b9680357a855804165612602
---

# Add getRecentPerformanceSamples method specification

## Summary

Add the public getRecentPerformanceSamples RPC method.

## Motivation

Clients need a portable contract for this public Agave RPC method.

## Specification

Add the paired HTTP method files. The optional limit is bounded to Agave current 720-sample maximum.

## Return-type impact

Adds the result shape defined by the paired method source.

## Compatibility

This is additive. Agave conforms. Cloudbreak and Superbank do not serve the method.

## Reference implementation

- [Agave implementation](https://github.com/anza-xyz/agave/blob/6dd9d38771e46103b9680357a855804165612602/rpc/src/rpc.rs#L3742-L3766)

## Security considerations

The bounded limit prevents callers from selecting an unbounded blockstore response.
2 changes: 1 addition & 1 deletion spec-info.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
title: Solana JSON-RPC API
version: 0.1.0
version: 0.2.0
license:
name: MIT
url: https://opensource.org/license/mit/
Expand Down
Loading