> ## 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 は Alpenglow ジェネシス証明書を返します。クラスターがまだ TowerBFT で稼働している場合は null を返します。Alpenglow コンセンサスが有効かどうかを確認するために使用します。

<Note>
  Agave v4.3 以降が必要です。それより前のバージョンではこのメソッドが認識されず、
  `Method not found` (-32601) が返されます。
</Note>

## 移行の検出

クラスターが [Alpenglow](https://www.helius.dev/blog/alpenglow) コンセンサスで稼働しているかどうかを確認するには、このメソッドを使用します。レスポンスには次の 3 つの形式があります。

* **証明書オブジェクト。** クラスターは移行済みです。`result.block.slot` は Alpenglow で生成された最初のスロットです。
* **`null`。** ノードは Agave v4.3 以降で稼働していますが、クラスターは移行していません。
* **エラー `-32601`。** ノードは v4.3 より前のバージョンです。クラスターのコンセンサスは不明です。

`-32601` は「未移行」ではなく、不明として扱ってください。この問い合わせに回答できないノードからは、クラスターについて何も判断できません。

クラスターが移行すると、証明書は変更されません。ポーリングするのではなく、最初にレスポンスを正常に受信した後でキャッシュしてください。

## 証明書の読み取り

`block` は、証明されたブロックを識別します。`slot` はそのスロット番号です。`blockId` は 32 バイトの配列であり、RPC API の他の箇所で使用される base-58 文字列ではありません。

`signature` には、証明書に署名したすべてのバリデーターの集約 BLS 署名が格納されます。`bitmap` には、それらのバリデーターがステーク順位をインデックスとして記録されます。このビットマップを読み取るには、クラスターが使用したものと同じ、ステーク順のバリデーターリストが必要です。

`blockId` は常に 32 バイト、`signature` は常に 192 バイトであり、例ではどちらも完全な長さで示されています。`bitmap` のサイズは固定されていません。バリデーターごとに 1 ビットを保持するため、バリデーターセットに応じて増加します。例では短いものを示しています。

Solana CLI は `solana alpenglow-genesis-info` と同じデータを返します。


## OpenAPI

````yaml ja/openapi/rpc-http/getAgGenesisCert.yaml POST /
openapi: 3.1.0
info:
  title: Solana RPC API
  version: 1.0.0
  description: >-
    Alpenglowジェネシス証明書（Alpenglowコンセンサスで生成された最初のブロックに対する証明書）を取得するためのコンセンサス移行APIです。クラスターがTowerBFTから移行したかどうかを検出するために使用します。
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://mainnet.helius-rpc.com
    description: Mainnet RPCエンドポイント
  - url: https://devnet.helius-rpc.com
    description: Devnet RPCエンドポイント
security: []
paths:
  /:
    post:
      tags:
        - RPC
      summary: getAgGenesisCert
      description: >
        Alpenglowジェネシス証明書（クラスターがAlpenglowコンセンサスで生成した最初のブロックに対する証明書）を取得します。クラスターがまだTowerBFTで稼働している場合は`null`を返します。

        バリデーターのバージョンやスロット番号から推測するのではなく、実行時にAlpenglowコンセンサスが有効かどうかを検出するためにサポートされている方法です。この証明書には、

        証明済みブロック（そのスロットと32バイトのブロックID）、それに署名したバリデーターの集約BLS署名、

        および署名したバリデーターをステーク順位順に識別するビットマップが含まれます。

        Agave v4.3以降が必要です。それより前のバージョンではこのメソッドが認識されず、`null`ではなく

        `Method not found` (-32601)が返されます。
      operationId: getAgGenesisCert
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  description: JSON-RPCプロトコルのバージョンです。
                  enum:
                    - '2.0'
                  example: '2.0'
                  default: '2.0'
                id:
                  type: string
                  description: リクエストの一意な識別子です。
                  example: '1'
                  default: '1'
                method:
                  type: string
                  description: 呼び出すRPCメソッドの名前です。
                  enum:
                    - getAgGenesisCert
                  example: getAgGenesisCert
                  default: getAgGenesisCert
      responses:
        '200':
          description: Alpenglowジェネシス証明書を正常に取得しました。クラスターが移行していない場合は`null`です。
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: JSON-RPCプロトコルのバージョンです。
                    enum:
                      - '2.0'
                    example: '2.0'
                  id:
                    type: string
                    description: リクエストと一致する識別子です。
                    example: '1'
                  result:
                    type: object
                    nullable: true
                    description: Alpenglowジェネシス証明書です。クラスターがまだTowerBFTで稼働している場合は`null`です。
                    properties:
                      block:
                        type: object
                        description: 証明された最初のAlpenglowブロックです。
                        properties:
                          slot:
                            type: integer
                            format: uint64
                            description: Alpenglowコンセンサスで生成された最初のブロックのスロットです。
                            example: 412300800
                          blockId:
                            type: array
                            description: バイト配列として表されるブロック識別子です。常に32バイトです。
                            minItems: 32
                            maxItems: 32
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
                      signature:
                        type: object
                        description: 証明済みブロックに対するバリデーターの集約署名です。
                        properties:
                          signature:
                            type: array
                            description: >-
                              証明書に署名したすべてのバリデーターの集約BLS署名をバイト配列で表したものです。常に192バイトです。
                            minItems: 192
                            maxItems: 192
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
                          bitmap:
                            type: array
                            description: >-
                              署名したバリデーターを示すビットマップで、ステーク順位に基づく位置でインデックス付けされています。長さは可変です。バリデーターごとに1ビットを使用するため、バリデーターセットに応じて増加します。
                            items:
                              type: integer
                              minimum: 0
                              maximum: 255
        '400':
          description: 不正なリクエスト - リクエストパラメーターが無効であるか、リクエストの形式が正しくありません。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Invalid params
        '401':
          description: 認証されていません - APIキーが無効であるか、指定されていません。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32001
                  message: Unauthorized
                id: '1'
        '429':
          description: リクエストが多すぎます - レート制限を超過しました。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32005
                  message: Too many requests
                id: '1'
        '500':
          description: 内部サーバーエラー - サーバーでエラーが発生しました。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32603
                  message: Internal error
                id: '1'
        '503':
          description: サービスを利用できません - サービスは一時的に利用できません。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32002
                  message: Service unavailable
                id: '1'
        '504':
          description: ゲートウェイタイムアウト - リクエストがタイムアウトしました。
          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: JSON-RPCプロトコルのバージョンです。
          enum:
            - '2.0'
          example: '2.0'
        error:
          type: object
          properties:
            code:
              type: integer
              description: エラーコードです。
              example: -32602
            message:
              type: string
              description: エラーメッセージです。
            data:
              type: object
              description: エラーに関する追加データです。
        id:
          type: string
          description: リクエストと一致する識別子です。
          example: '1'
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: >-
        Helius
        APIキーです。[ダッシュボード](https://dashboard.helius.dev/api-keys)で無料で取得できます。

````