> ## 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 mengembalikan sertifikat genesis Alpenglow, atau null jika klaster masih menjalankan TowerBFT. Gunakan metode ini untuk memeriksa apakah konsensus Alpenglow aktif.

<Note>
  Memerlukan Agave v4.3 atau yang lebih baru. Versi sebelumnya tidak mengenali metode ini dan
  mengembalikan `Method not found` (-32601).
</Note>

## Mendeteksi migrasi

Gunakan metode ini untuk memeriksa apakah suatu klaster menjalankan konsensus [Alpenglow](https://www.helius.dev/blog/alpenglow). Respons memiliki tiga bentuk:

* **Objek sertifikat.** Klaster telah bermigrasi. `result.block.slot` adalah slot pertama yang dihasilkan di bawah Alpenglow.
* **`null`.** Node menjalankan Agave v4.3 atau yang lebih baru, dan klaster belum bermigrasi.
* **Galat `-32601`.** Node menggunakan versi sebelum v4.3. Konsensus klaster tidak diketahui.

Perlakukan `-32601` sebagai tidak diketahui, bukan sebagai "belum bermigrasi". Node yang tidak dapat menjawab pertanyaan ini tidak memberikan informasi apa pun tentang klaster.

Sertifikat tidak berubah setelah klaster bermigrasi. Simpan sertifikat dalam cache setelah respons pertama yang berhasil, alih-alih melakukan polling.

## Membaca sertifikat

`block` mengidentifikasi blok yang disertifikasi. `slot` adalah nomor slot blok tersebut. `blockId` adalah array 32 byte, bukan string base-58 yang digunakan di bagian lain API RPC.

`signature` berisi tanda tangan BLS agregat dari setiap validator yang menandatangani sertifikat. `bitmap` mencatat validator tersebut, yang diindeks berdasarkan peringkat stake. Untuk membaca bitmap, diperlukan daftar validator dengan urutan stake yang sama dengan yang digunakan klaster.

`blockId` selalu berukuran 32 byte dan `signature` selalu 192 byte; keduanya ditampilkan dengan panjang penuh dalam contoh. `bitmap` tidak memiliki ukuran tetap: nilainya memuat satu bit per validator sehingga bertambah panjang seiring bertambahnya set validator, dan contoh menampilkan nilai yang pendek.

Solana CLI mengembalikan data yang sama seperti `solana alpenglow-genesis-info`.


## OpenAPI

````yaml id/openapi/rpc-http/getAgGenesisCert.yaml POST /
openapi: 3.1.0
info:
  title: API RPC Solana
  version: 1.0.0
  description: >-
    API migrasi konsensus untuk mengambil sertifikat genesis Alpenglow, yaitu
    sertifikat untuk blok pertama yang dihasilkan di bawah konsensus Alpenglow,
    yang digunakan untuk mendeteksi apakah suatu klaster telah bermigrasi dari
    TowerBFT.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://mainnet.helius-rpc.com
    description: Titik akhir RPC Mainnet
  - url: https://devnet.helius-rpc.com
    description: Titik akhir RPC Devnet
security: []
paths:
  /:
    post:
      tags:
        - RPC
      summary: getAgGenesisCert
      description: >
        Mengambil sertifikat genesis Alpenglow—sertifikat untuk blok pertama
        yang dihasilkan klaster

        di bawah konsensus Alpenglow—atau `null` jika klaster masih menjalankan
        TowerBFT.

        Ini adalah cara yang didukung untuk mendeteksi saat runtime apakah
        konsensus Alpenglow aktif,

        alih-alih menyimpulkannya dari versi validator atau nomor slot.
        Sertifikat ini memuat

        blok tersertifikasi (slot dan ID blok 32 byte) beserta tanda tangan BLS
        agregat dari

        validator yang menandatanganinya dan bitmap yang mengidentifikasi
        validator tersebut, yang diurutkan berdasarkan peringkat stake.

        Memerlukan Agave v4.3 atau versi yang lebih baru; versi sebelumnya tidak
        mengenali metode ini dan mengembalikan

        `Method not found` (-32601), bukan `null`.
      operationId: getAgGenesisCert
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  description: Versi protokol JSON-RPC.
                  enum:
                    - '2.0'
                  example: '2.0'
                  default: '2.0'
                id:
                  type: string
                  description: Pengidentifikasi unik untuk permintaan.
                  example: '1'
                  default: '1'
                method:
                  type: string
                  description: Nama metode RPC yang akan dipanggil.
                  enum:
                    - getAgGenesisCert
                  example: getAgGenesisCert
                  default: getAgGenesisCert
      responses:
        '200':
          description: >-
            Sertifikat genesis Alpenglow berhasil diambil, atau `null` jika
            klaster belum bermigrasi.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: Versi protokol JSON-RPC.
                    enum:
                      - '2.0'
                    example: '2.0'
                  id:
                    type: string
                    description: Pengidentifikasi yang cocok dengan permintaan.
                    example: '1'
                  result:
                    type: object
                    nullable: true
                    description: >-
                      Sertifikat genesis Alpenglow, atau `null` jika klaster
                      masih menjalankan TowerBFT.
                    properties:
                      block:
                        type: object
                        description: Blok Alpenglow pertama yang tersertifikasi.
                        properties:
                          slot:
                            type: integer
                            format: uint64
                            description: >-
                              Slot blok pertama yang dihasilkan di bawah
                              konsensus Alpenglow.
                            example: 412300800
                          blockId:
                            type: array
                            description: >-
                              Pengidentifikasi blok dalam bentuk array byte.
                              Selalu 32 byte.
                            minItems: 32
                            maxItems: 32
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
                      signature:
                        type: object
                        description: >-
                          Tanda tangan validator agregat untuk blok
                          tersertifikasi.
                        properties:
                          signature:
                            type: array
                            description: >-
                              Tanda tangan BLS agregat dari setiap validator
                              yang menandatangani sertifikat, dalam bentuk array
                              byte. Selalu 192 byte.
                            minItems: 192
                            maxItems: 192
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
                          bitmap:
                            type: array
                            description: >-
                              Bitmap yang menandai validator mana yang
                              menandatangani, diindeks berdasarkan posisi dalam
                              peringkat stake. Panjangnya bervariasi—satu bit
                              per validator, sehingga ukurannya bertambah sesuai
                              dengan jumlah validator.
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
        '400':
          description: >-
            Permintaan Buruk - Parameter permintaan tidak valid atau format
            permintaan salah.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Invalid params
        '401':
          description: Tidak Diotorisasi - Kunci API tidak valid atau tidak disertakan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32001
                  message: Unauthorized
                id: '1'
        '429':
          description: Terlalu Banyak Permintaan - Batas laju terlampaui.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32005
                  message: Too many requests
                id: '1'
        '500':
          description: Kesalahan Server Internal - Terjadi kesalahan pada server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32603
                  message: Internal error
                id: '1'
        '503':
          description: Layanan Tidak Tersedia - Layanan untuk sementara tidak tersedia.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32002
                  message: Service unavailable
                id: '1'
        '504':
          description: Waktu Tunggu Gateway Habis - Waktu tunggu permintaan telah habis.
          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: Versi protokol JSON-RPC.
          enum:
            - '2.0'
          example: '2.0'
        error:
          type: object
          properties:
            code:
              type: integer
              description: Kode kesalahan.
              example: -32602
            message:
              type: string
              description: Pesan kesalahan.
            data:
              type: object
              description: Data tambahan tentang kesalahan tersebut.
        id:
          type: string
          description: Pengidentifikasi yang cocok dengan permintaan.
          example: '1'
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: >-
        Kunci API Helius Anda. Anda dapat memperolehnya secara gratis di
        [dasbor](https://dashboard.helius.dev/api-keys).

````