> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# getAgGenesisCert

> getAgGenesisCert retorna o certificado de gênese do Alpenglow ou null se o cluster ainda executar o TowerBFT. Use-o para verificar se o consenso Alpenglow está ativo.

<Note>
  Requer o Agave v4.3 ou posterior. Versões anteriores não reconhecem o método e
  retornam `Method not found` (-32601).
</Note>

## Como detectar a migração

Use este método para verificar se um cluster executa o consenso [Alpenglow](https://www.helius.dev/blog/alpenglow). A resposta pode ter três formas:

* **Um objeto de certificado.** O cluster migrou. `result.block.slot` é o primeiro slot produzido no Alpenglow.
* **`null`.** O nó executa o Agave v4.3 ou posterior, e o cluster não migrou.
* **Erro `-32601`.** O nó é anterior à v4.3. O consenso do cluster é desconhecido.

Trate `-32601` como desconhecido, e não como "não migrado". Um nó que não consegue responder à pergunta não fornece nenhuma informação sobre o cluster.

O certificado não muda depois que um cluster migra. Armazene-o em cache após a primeira resposta bem-sucedida, em vez de fazer consultas periódicas.

## Como interpretar o certificado

`block` identifica o bloco certificado. `slot` é o número do slot desse bloco. `blockId` é um array de 32 bytes, não a string em base 58 usada em outras partes da API RPC.

`signature` contém a assinatura BLS agregada de todos os validadores que assinaram o certificado. `bitmap` registra quais foram esses validadores, indexados pela classificação de stake. A leitura do bitmap requer a mesma lista de validadores ordenada por stake que o cluster usou.

`blockId` sempre tem 32 bytes, e `signature` sempre tem 192, ambos exibidos por inteiro no exemplo. `bitmap` não tem tamanho fixo: ele contém um bit por validador, portanto cresce com o conjunto de validadores, e o exemplo mostra um bitmap curto.

A CLI da Solana retorna os mesmos dados que `solana alpenglow-genesis-info`.


## OpenAPI

````yaml pt-BR/openapi/rpc-http/getAgGenesisCert.yaml POST /
openapi: 3.1.0
info:
  title: API RPC da Solana
  version: 1.0.0
  description: >-
    API de migração de consenso para recuperar o certificado de gênese do
    Alpenglow, o certificado referente ao primeiro bloco produzido sob o
    consenso Alpenglow, usado para detectar se um cluster migrou do TowerBFT.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://mainnet.helius-rpc.com
    description: Endpoint RPC da Mainnet
  - url: https://devnet.helius-rpc.com
    description: Endpoint RPC da Devnet
security: []
paths:
  /:
    post:
      tags:
        - RPC
      summary: getAgGenesisCert
      description: >
        Recupera o certificado de gênese do Alpenglow — o certificado referente
        ao primeiro bloco que um cluster

        produziu sob o consenso Alpenglow — ou `null` se o cluster ainda estiver
        executando o TowerBFT.

        Essa é a maneira compatível de detectar em tempo de execução se o
        consenso Alpenglow está ativo, em vez

        de inferir isso com base nas versões dos validadores ou nos números de
        slots. O certificado contém o

        bloco certificado (seu slot e ID de bloco de 32 bytes), junto com a
        assinatura BLS agregada dos

        validadores que o assinaram e um bitmap que identifica quais deles
        assinaram, ordenados pela classificação de stake.

        Requer o Agave v4.3 ou posterior; versões anteriores não reconhecem o
        método e retornam

        `Method not found` (-32601) em vez de `null`.
      operationId: getAgGenesisCert
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  description: A versão do protocolo JSON-RPC.
                  enum:
                    - '2.0'
                  example: '2.0'
                  default: '2.0'
                id:
                  type: string
                  description: Um identificador exclusivo para a solicitação.
                  example: '1'
                  default: '1'
                method:
                  type: string
                  description: O nome do método RPC a ser invocado.
                  enum:
                    - getAgGenesisCert
                  example: getAgGenesisCert
                  default: getAgGenesisCert
      responses:
        '200':
          description: >-
            O certificado de gênese do Alpenglow foi recuperado com sucesso, ou
            `null` se o cluster não tiver migrado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: A versão do protocolo JSON-RPC.
                    enum:
                      - '2.0'
                    example: '2.0'
                  id:
                    type: string
                    description: Identificador correspondente à solicitação.
                    example: '1'
                  result:
                    type: object
                    nullable: true
                    description: >-
                      O certificado de gênese do Alpenglow, ou `null` quando o
                      cluster ainda estiver executando o TowerBFT.
                    properties:
                      block:
                        type: object
                        description: O primeiro bloco certificado do Alpenglow.
                        properties:
                          slot:
                            type: integer
                            format: uint64
                            description: >-
                              O slot do primeiro bloco produzido sob o consenso
                              Alpenglow.
                            example: 412300800
                          blockId:
                            type: array
                            description: >-
                              O identificador do bloco, como uma matriz de
                              bytes. Sempre contém 32 bytes.
                            minItems: 32
                            maxItems: 32
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
                      signature:
                        type: object
                        description: >-
                          A assinatura agregada dos validadores referente ao
                          bloco certificado.
                        properties:
                          signature:
                            type: array
                            description: >-
                              A assinatura BLS agregada de todos os validadores
                              que assinaram o certificado, como uma matriz de
                              bytes. Sempre contém 192 bytes.
                            minItems: 192
                            maxItems: 192
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
                          bitmap:
                            type: array
                            description: >-
                              Bitmap que indica quais validadores assinaram,
                              indexado pela posição na classificação de stake. O
                              tamanho é variável — um bit por validador,
                              portanto aumenta de acordo com o conjunto de
                              validadores.
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
        '400':
          description: >-
            Solicitação inválida - Parâmetros de solicitação inválidos ou
            solicitação malformada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Invalid params
        '401':
          description: Não autorizado - Chave de API inválida ou ausente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32001
                  message: Unauthorized
                id: '1'
        '429':
          description: Muitas solicitações - Limite de taxa excedido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32005
                  message: Too many requests
                id: '1'
        '500':
          description: Erro interno do servidor - Ocorreu um erro no servidor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32603
                  message: Internal error
                id: '1'
        '503':
          description: Serviço indisponível - O serviço está temporariamente indisponível.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32002
                  message: Service unavailable
                id: '1'
        '504':
          description: >-
            Tempo limite do gateway - O tempo limite da solicitação foi
            excedido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32003
                  message: Gateway timeout
                id: '1'
      security:
        - ApiKeyQuery: []
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        jsonrpc:
          type: string
          description: A versão do protocolo JSON-RPC.
          enum:
            - '2.0'
          example: '2.0'
        error:
          type: object
          properties:
            code:
              type: integer
              description: O código do erro.
              example: -32602
            message:
              type: string
              description: A mensagem de erro.
            data:
              type: object
              description: Dados adicionais sobre o erro.
        id:
          type: string
          description: Identificador correspondente à solicitação.
          example: '1'
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: >-
        Sua chave de API da Helius. Você pode obter uma gratuitamente no
        [painel](https://dashboard.helius.dev/api-keys).

````