Перейти к основному содержанию

Параметры

Этот метод не принимает параметров.

Ответ

result
string
Хеш генезиса в виде строки в кодировке base-58

Примеры кода

Базовый запрос

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": "getGenesisHash"
}'

Использование web3.js

import { Connection } from '@solana/web3.js';

const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');

// Get genesis hash
const genesisHash = await connection.getGenesisHash();
console.log('Genesis hash:', genesisHash);

// Verify cluster
async function verifyCluster(expectedHash: string) {
  const actualHash = await connection.getGenesisHash();
  if (actualHash !== expectedHash) {
    throw new Error(`Connected to wrong cluster. Expected ${expectedHash}, got ${actualHash}`);
  }
  console.log('Connected to correct cluster');
}

Примечания

  1. Возвращает хеш генезиса кластера
  2. Хеш генезиса уникален для каждого кластера
  3. Может использоваться для проверки того, к какому кластеру вы подключены
  4. Хеш закодирован в base-58
  5. Ответ приходит немедленно, так как читается из текущего состояния

Рекомендации

  1. Используйте этот метод для проверки подключения к кластеру
  2. Кэшируйте результат для снижения нагрузки на RPC
  3. Сравнивайте с известными хешами генезиса для разных кластеров
  4. Используйте совместно с другими методами верификации кластера
  5. Обрабатывайте сетевые ошибки должным образом

Распространённые ошибки

КодСообщениеРешение
-32601Method not foundУбедитесь, что вы подключены к узлу Solana RPC
-32007Genesis hash unavailableУзел может выполнять начальную загрузку или синхронизацию

Сценарии использования

  1. Верификация кластера
    const CLUSTER_HASHES = {
      mainnet: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d',
      testnet: '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY',
      devnet: 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG'
    };
    
    async function verifyClusterConnection(expectedCluster: keyof typeof CLUSTER_HASHES) {
      const genesisHash = await connection.getGenesisHash();
      const expectedHash = CLUSTER_HASHES[expectedCluster];
      
      if (genesisHash !== expectedHash) {
        throw new Error(`Connected to wrong cluster. Expected ${expectedCluster} (${expectedHash}), got ${genesisHash}`);
      }
      
      return {
        cluster: expectedCluster,
        genesisHash,
        verified: true
      };
    }
    
  2. Определение кластера
    async function detectCluster() {
      const genesisHash = await connection.getGenesisHash();
      
      for (const [cluster, hash] of Object.entries(CLUSTER_HASHES)) {
        if (hash === genesisHash) {
          return cluster;
        }
      }
      
      throw new Error('Unknown cluster');
    }
    
  3. Настройка сети
    interface NetworkConfig {
      cluster: string;
      genesisHash: string;
      rpcEndpoint: string;
      wsEndpoint: string;
    }
    
    async function configureNetwork(endpoint: string): Promise<NetworkConfig> {
      const connection = new Connection(endpoint);
      const genesisHash = await connection.getGenesisHash();
      const cluster = await detectCluster();
      
      return {
        cluster,
        genesisHash,
        rpcEndpoint: endpoint,
        wsEndpoint: endpoint.replace('http', 'ws')
      };
    }