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.
getRecentBlockhash
Этот метод устарел. Пожалуйста, используйте getLatestBlockhash вместо него, который предоставляет более точную и надёжную информацию о blockhash.
Возвращает недавний blockhash и его расписание комиссий. Этот метод будет удалён в будущем релизе.
Параметры
Показать поля конфигурации
Уровень подтверждения (processed, confirmed, finalized)
Ответ
Слот, в котором был обработан запрос
Недавний blockhash (в кодировке base-58)
Комиссия в lamports за подпись
Руководство по миграции
Для перехода с getRecentBlockhash на getLatestBlockhash:
- Замените вызовы метода:
- const { blockhash, feeCalculator } = await connection.getRecentBlockhash();
+ const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
- Обновите расчёты комиссий:
// Old way
const fee = feeCalculator.lamportsPerSignature * numSignatures;
// New way
const fee = await connection.getFeeForMessage(message);
Примеры кода
Базовый запрос (устаревший)
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": "getRecentBlockhash",
"params": []
}'
Запрос с уровнем подтверждения (устаревший)
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": "getRecentBlockhash",
"params": [
{
"commitment": "confirmed"
}
]
}'
Использование web3.js (устаревший)
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');
// Get recent blockhash (deprecated)
const { value: { blockhash, feeCalculator } } = await connection.getRecentBlockhash();
console.log('Blockhash:', blockhash);
console.log('Fee per signature:', feeCalculator.lamportsPerSignature);
Примечания
- Этот метод устарел и будет удалён в будущем релизе
- Используйте
getLatestBlockhash для новой разработки
- Blockhash действителен в течение ограниченного времени (обычно 150 слотов)
- Можно указывать разные уровни подтверждения
- Рассмотрите обновление существующего кода для использования новых методов
Рекомендации
- Перейдите на
getLatestBlockhash для новой разработки
- Используйте
getFeeForMessage для расчёта комиссий
- Отслеживайте истечение blockhash с помощью
lastValidBlockHeight
- Обрабатывайте сетевые ошибки и выполняйте повторные попытки при необходимости
- Используйте подходящий уровень подтверждения в зависимости от ваших потребностей
Распространённые ошибки
| Код | Сообщение | Решение |
|---|
| -32601 | Method not found | Убедитесь, что вы подключены к узлу Solana RPC |
| -32602 | Invalid params | Проверьте параметры конфигурации |
| -32007 | Blockhash information unavailable | Узел может выполнять начальную загрузку или синхронизацию |
Сценарии использования
-
Расчёт комиссии за транзакцию
interface TransactionFee {
blockhash: string;
feePerSignature: number;
totalFee: number;
metadata: {
timestamp: number;
slot: number;
};
}
async function calculateTransactionFees(
numSignatures: number
): Promise<TransactionFee> {
const { context, value } = await connection.getRecentBlockhash();
return {
blockhash: value.blockhash,
feePerSignature: value.feeCalculator.lamportsPerSignature,
totalFee: numSignatures * value.feeCalculator.lamportsPerSignature,
metadata: {
timestamp: Date.now(),
slot: context.slot
}
};
}
-
Мониторинг blockhash
interface BlockhashInfo {
blockhash: string;
slot: number;
feePerSignature: number;
metadata: {
timestamp: number;
age: number;
};
}
class BlockhashMonitor {
private currentBlockhash: string | null = null;
private currentSlot: number | null = null;
async monitorBlockhash(
interval: number = 5000
): Promise<BlockhashInfo | null> {
const { context, value } = await connection.getRecentBlockhash();
if (this.currentBlockhash === value.blockhash) {
return null;
}
this.currentBlockhash = value.blockhash;
this.currentSlot = context.slot;
return {
blockhash: value.blockhash,
slot: context.slot,
feePerSignature: value.feeCalculator.lamportsPerSignature,
metadata: {
timestamp: Date.now(),
age: 0
}
};
}
}
-
Планирование транзакций
interface TransactionPlan {
blockhash: string;
feePerSignature: number;
estimatedFees: {
single: number;
batch: number;
};
metadata: {
timestamp: number;
slot: number;
};
}
async function planTransactions(
numTransactions: number,
signaturesPerTransaction: number
): Promise<TransactionPlan> {
const { context, value } = await connection.getRecentBlockhash();
const feePerSignature = value.feeCalculator.lamportsPerSignature;
return {
blockhash: value.blockhash,
feePerSignature,
estimatedFees: {
single: signaturesPerTransaction * feePerSignature,
batch: numTransactions * signaturesPerTransaction * feePerSignature
},
metadata: {
timestamp: Date.now(),
slot: context.slot
}
};
}