> ## 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 trả về chứng chỉ khởi nguyên Alpenglow hoặc null nếu cụm vẫn chạy TowerBFT. Sử dụng phương thức này để kiểm tra xem cơ chế đồng thuận Alpenglow có đang hoạt động hay không.

<Note>
  Yêu cầu Agave v4.3 trở lên. Các phiên bản cũ hơn không nhận diện phương thức này và
  trả về `Method not found` (-32601).
</Note>

## Phát hiện quá trình chuyển đổi

Sử dụng phương thức này để kiểm tra xem một cụm có chạy cơ chế đồng thuận [Alpenglow](https://www.helius.dev/blog/alpenglow) hay không. Phản hồi có ba dạng:

* **Một đối tượng chứng chỉ.** Cụm đã chuyển đổi. `result.block.slot` là slot đầu tiên được tạo dưới Alpenglow.
* **`null`.** Nút chạy Agave v4.3 trở lên và cụm chưa chuyển đổi.
* **Lỗi `-32601`.** Nút sử dụng phiên bản cũ hơn v4.3. Chưa thể xác định cơ chế đồng thuận của cụm.

Hãy coi `-32601` là trạng thái chưa xác định thay vì "chưa chuyển đổi". Việc một nút không thể trả lời câu hỏi này không cho biết bất kỳ điều gì về cụm.

Chứng chỉ không thay đổi sau khi một cụm đã chuyển đổi. Hãy lưu chứng chỉ vào bộ nhớ đệm sau phản hồi thành công đầu tiên thay vì thăm dò liên tục.

## Đọc chứng chỉ

`block` xác định khối đã được chứng nhận. `slot` là số slot của khối đó. `blockId` là một mảng 32 byte, không phải chuỗi base-58 được sử dụng ở những nơi khác trong API RPC.

`signature` chứa chữ ký BLS tổng hợp của mọi trình xác thực đã ký chứng chỉ. `bitmap` ghi lại các trình xác thực đó, được lập chỉ mục theo thứ hạng stake. Để đọc bitmap, cần có cùng danh sách trình xác thực được sắp xếp theo stake mà cụm đã sử dụng.

`blockId` luôn có 32 byte và `signature` luôn có 192 byte; cả hai đều được hiển thị đầy đủ trong ví dụ. `bitmap` không có kích thước cố định: trường này chứa một bit cho mỗi trình xác thực, vì vậy kích thước tăng theo tập hợp trình xác thực, và ví dụ minh họa một bitmap ngắn.

Solana CLI trả về cùng dữ liệu với `solana alpenglow-genesis-info`.


## OpenAPI

````yaml vi/openapi/rpc-http/getAgGenesisCert.yaml POST /
openapi: 3.1.0
info:
  title: Solana RPC API
  version: 1.0.0
  description: >-
    API di chuyển cơ chế đồng thuận để truy xuất chứng chỉ khởi nguyên
    Alpenglow, tức chứng chỉ cho khối đầu tiên được tạo theo cơ chế đồng thuận
    Alpenglow, dùng để phát hiện liệu một cụm đã di chuyển khỏi TowerBFT hay
    chưa.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://mainnet.helius-rpc.com
    description: Điểm cuối RPC Mainnet
  - url: https://devnet.helius-rpc.com
    description: Điểm cuối RPC Devnet
security: []
paths:
  /:
    post:
      tags:
        - RPC
      summary: getAgGenesisCert
      description: >
        Truy xuất chứng chỉ khởi nguyên Alpenglow — chứng chỉ cho khối đầu tiên
        mà một cụm

        tạo ra theo cơ chế đồng thuận Alpenglow — hoặc `null` nếu cụm vẫn đang
        chạy TowerBFT.

        Đây là cách được hỗ trợ để phát hiện trong thời gian chạy liệu cơ chế
        đồng thuận Alpenglow có đang hoạt động hay không,

        thay vì suy luận từ phiên bản trình xác thực hoặc số slot. Chứng chỉ
        chứa

        khối đã được chứng nhận (slot và mã định danh khối dài 32 byte) cùng với
        chữ ký BLS tổng hợp của

        các trình xác thực đã ký chứng chỉ và một bitmap xác định những trình
        xác thực đã ký, được sắp xếp theo thứ hạng stake.

        Yêu cầu Agave v4.3 trở lên; các phiên bản cũ hơn không nhận dạng phương
        thức này và trả về

        `Method not found` (-32601) thay vì `null`.
      operationId: getAgGenesisCert
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  description: Phiên bản giao thức JSON-RPC.
                  enum:
                    - '2.0'
                  example: '2.0'
                  default: '2.0'
                id:
                  type: string
                  description: Mã định danh duy nhất cho yêu cầu.
                  example: '1'
                  default: '1'
                method:
                  type: string
                  description: Tên của phương thức RPC cần gọi.
                  enum:
                    - getAgGenesisCert
                  example: getAgGenesisCert
                  default: getAgGenesisCert
      responses:
        '200':
          description: >-
            Đã truy xuất thành công chứng chỉ khởi nguyên Alpenglow, hoặc `null`
            nếu cụm chưa di chuyển.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: Phiên bản giao thức JSON-RPC.
                    enum:
                      - '2.0'
                    example: '2.0'
                  id:
                    type: string
                    description: Mã định danh khớp với yêu cầu.
                    example: '1'
                  result:
                    type: object
                    nullable: true
                    description: >-
                      Chứng chỉ khởi nguyên Alpenglow, hoặc `null` khi cụm vẫn
                      đang chạy TowerBFT.
                    properties:
                      block:
                        type: object
                        description: Khối Alpenglow đầu tiên đã được chứng nhận.
                        properties:
                          slot:
                            type: integer
                            format: uint64
                            description: >-
                              Slot của khối đầu tiên được tạo theo cơ chế đồng
                              thuận Alpenglow.
                            example: 412300800
                          blockId:
                            type: array
                            description: >-
                              Mã định danh khối, ở dạng mảng byte. Luôn có độ
                              dài 32 byte.
                            minItems: 32
                            maxItems: 32
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
                      signature:
                        type: object
                        description: >-
                          Chữ ký tổng hợp của các trình xác thực cho khối đã
                          được chứng nhận.
                        properties:
                          signature:
                            type: array
                            description: >-
                              Chữ ký BLS tổng hợp của mọi trình xác thực đã ký
                              chứng chỉ, ở dạng mảng byte. Luôn có độ dài 192
                              byte.
                            minItems: 192
                            maxItems: 192
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
                          bitmap:
                            type: array
                            description: >-
                              Bitmap đánh dấu những trình xác thực đã ký, được
                              lập chỉ mục theo vị trí xếp hạng stake. Độ dài
                              thay đổi — mỗi trình xác thực tương ứng với một
                              bit, vì vậy bitmap sẽ tăng theo tập hợp trình xác
                              thực.
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
        '400':
          description: >-
            Yêu cầu không hợp lệ - Tham số yêu cầu không hợp lệ hoặc yêu cầu có
            định dạng sai.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Invalid params
        '401':
          description: Không được cấp quyền - Khóa API không hợp lệ hoặc bị thiếu.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32001
                  message: Unauthorized
                id: '1'
        '429':
          description: Quá nhiều yêu cầu - Đã vượt quá giới hạn tốc độ.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32005
                  message: Too many requests
                id: '1'
        '500':
          description: Lỗi máy chủ nội bộ - Đã xảy ra lỗi trên máy chủ.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32603
                  message: Internal error
                id: '1'
        '503':
          description: Dịch vụ không khả dụng - Dịch vụ tạm thời không khả dụng.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32002
                  message: Service unavailable
                id: '1'
        '504':
          description: Hết thời gian chờ cổng kết nối - Yêu cầu đã hết thời gian chờ.
          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: Phiên bản giao thức JSON-RPC.
          enum:
            - '2.0'
          example: '2.0'
        error:
          type: object
          properties:
            code:
              type: integer
              description: Mã lỗi.
              example: -32602
            message:
              type: string
              description: Thông báo lỗi.
            data:
              type: object
              description: Dữ liệu bổ sung về lỗi.
        id:
          type: string
          description: Mã định danh khớp với yêu cầu.
          example: '1'
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: >-
        Khóa API Helius của bạn. Bạn có thể nhận khóa miễn phí trong [bảng điều
        khiển](https://dashboard.helius.dev/api-keys).

````