Documentation Index
Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt
Use this file to discover all available pages before exploring further.
Параметры
Слот для получения времени блока
Ответ
Unix timestamp момента производства блока, или null, если блок недоступен
Примеры кода
Базовый запрос
curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY -X POST -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getBlockTime",
"params": [
100000000
]
}'
Использование web3.js
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');
// Get block time
const blockTime = await connection.getBlockTime(100000000);
if (blockTime !== null) {
console.log('Block time:', new Date(blockTime * 1000));
} else {
console.log('Block not available');
}
// Get multiple block times
async function getBlockTimes(slots: number[]) {
const times = await Promise.all(
slots.map(slot => connection.getBlockTime(slot))
);
return times.map((time, index) => ({
slot: slots[index],
time: time ? new Date(time * 1000) : null
}));
}
Примечания
- Возвращает Unix timestamp момента производства блока
- Возвращает null, если блок недоступен
- Временная метка измеряется в секундах с эпохи Unix
- Времена блоков являются приблизительными и могут различаться между узлами
- Для старых блоков временные метки могут быть недоступны
Лучшие практики
- Правильно обрабатывайте ответы null
- Конвертируйте Unix timestamps в объекты Date для отображения
- Учитывайте различия часовых поясов при отображении времени
- Кэшируйте результаты при необходимости для снижения нагрузки на RPC
- Используйте этот метод совместно с другими методами для работы с блоками
Распространённые ошибки
| Код | Сообщение | Решение |
|---|
| -32601 | Method not found | Убедитесь, что вы подключены к узлу Solana RPC |
| -32007 | Block time not available | Блок может быть слишком старым или ещё не произведённым |
Примеры использования
-
Анализ времени блоков
interface BlockTimeMetrics {
slot: number;
time: Date | null;
delay: number | null;
}
async function analyzeBlockTimes(startSlot: number, endSlot: number) {
const blocks = await connection.getBlocks(startSlot, endSlot);
const times = await Promise.all(
blocks.map(slot => connection.getBlockTime(slot))
);
const metrics: BlockTimeMetrics[] = blocks.map((slot, index) => {
const time = times[index];
const prevTime = index > 0 ? times[index - 1] : null;
return {
slot,
time: time ? new Date(time * 1000) : null,
delay: time && prevTime ? time - prevTime : null
};
});
return metrics;
}
-
Отслеживание времени блоков
interface BlockTimeHistory {
slot: number;
timestamp: number;
date: Date;
}
async function trackBlockTimes(slots: number[]) {
const times = await Promise.all(
slots.map(slot => connection.getBlockTime(slot))
);
const history: BlockTimeHistory[] = times
.filter((time, index) => time !== null)
.map((time, index) => ({
slot: slots[index],
timestamp: time!,
date: new Date(time! * 1000)
}));
return history;
}
-
Скорость производства блоков
async function calculateBlockProductionRate(startSlot: number, endSlot: number) {
const blocks = await connection.getBlocks(startSlot, endSlot);
const times = await Promise.all(
blocks.map(slot => connection.getBlockTime(slot))
);
const validTimes = times.filter(time => time !== null) as number[];
if (validTimes.length < 2) {
return null;
}
const firstTime = validTimes[0];
const lastTime = validTimes[validTimes.length - 1];
const totalTime = lastTime - firstTime;
const blocksPerSecond = validTimes.length / totalTime;
return {
blocksPerSecond,
totalTime,
totalBlocks: validTimes.length
};
}