> ## 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.

# getTokenAccountsByOwnerV2

> getTokenAccountsByOwnerV2 là phiên bản nâng cao của getTokenAccountsByOwner, hỗ trợ phân trang bằng con trỏ và cập nhật changedSinceSlot cho các danh mục token Solana lớn.

## Tổng quan

`getTokenAccountsByOwnerV2` là phiên bản nâng cao của phương thức `getTokenAccountsByOwner` tiêu chuẩn, được thiết kế riêng để truy vấn hiệu quả các danh mục token và xử lý các ví nắm giữ lượng lớn token. Phương thức này bổ sung tính năng phân trang dựa trên con trỏ và khả năng cập nhật tăng dần.

<Info>
  **Các tính năng mới trong V2:**

  * **Phân trang dựa trên con trỏ**: Cấu hình giới hạn từ 1 đến 10.000 tài khoản token cho mỗi yêu cầu
  * **Cập nhật tăng dần**: Sử dụng `changedSinceSlot` để chỉ tìm nạp các tài khoản token mới được sửa đổi gần đây
  * **Khả năng mở rộng danh mục**: Xử lý hiệu quả các ví có hàng nghìn tài khoản token
  * **Khả năng tương thích ngược**: Hỗ trợ tất cả tham số và bộ lọc hiện có của `getTokenAccountsByOwner`
  * **`withContext` tùy chọn**: `true` thêm `slot` và `apiVersion` vào `result.context`; nếu bỏ qua hoặc đặt thành `false` thì chúng sẽ không được đưa vào
</Info>

<Warning>
  **Yêu cầu về bộ lọc**: Bạn phải cung cấp `mint` (token cụ thể) hoặc `programId` (chương trình SPL Token hoặc Token-2022) trong truy vấn. Không hỗ trợ truy vấn tất cả loại token của một chủ sở hữu mà không có bộ lọc.
</Warning>

## Lợi ích chính

<CardGroup cols={2}>
  <Card title="Large Portfolios" icon="wallet">
    Xử lý các ví có hàng nghìn tài khoản token mà không gặp lỗi hết thời gian chờ hoặc vấn đề về bộ nhớ
  </Card>

  <Card title="Real-time Tracking" icon="chart-line">
    Theo dõi các thay đổi của danh mục theo thời gian thực bằng `changedSinceSlot` để cập nhật tăng dần
  </Card>
</CardGroup>

## `withContext` (tùy chọn)

Giá trị Boolean trong đối tượng cấu hình (`params[2]`). Chỉ cấu trúc của `result` thay đổi, còn bộ lọc, giới hạn và cách phân trang không thay đổi. Nếu bỏ qua hoặc đặt thành `false`: `result.value` là **mảng** tài khoản token. Nếu đặt thành `true`: `result.context` cùng với `result.value` dưới dạng **đối tượng** (`accounts`, `paginationKey`). Nếu xử lý cả hai trường hợp, hãy phân nhánh theo `Array.isArray(result.value)`.

```json theme={"system"}
// Omitted or false
{ "jsonrpc": "2.0", "id": "1", "result": { "value": [], "paginationKey": null } }

// true
{ "jsonrpc": "2.0", "id": "1", "result": {
  "context": { "slot": 411895550, "apiVersion": "3.1.9" },
  "value": { "accounts": [], "paginationKey": null }
}}
```

## Các phương pháp hay nhất khi phân trang

<Warning>
  **Hành vi phân trang quan trọng**: Việc kết thúc phân trang chỉ được xác định khi **không có tài khoản token nào được trả về**. API có thể trả về ít tài khoản hơn giới hạn do áp dụng bộ lọc — luôn tiếp tục phân trang cho đến khi `paginationKey` là `null`.
</Warning>

### Truy vấn danh mục cơ bản

```typescript theme={"system"}
// Get all SPL Token accounts for a wallet
let allTokenAccounts = [];
let paginationKey = null;

do {
  const response = await fetch(`https://mainnet.helius-rpc.com/?api-key=${API_KEY}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: '1',
      method: 'getTokenAccountsByOwnerV2',
      params: [
        "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM", // wallet address
        { "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" },
        {
          encoding: 'jsonParsed',
          limit: 1000,
          ...(paginationKey && { paginationKey })
        }
      ]
    })
  });
  
  const data = await response.json();
  allTokenAccounts.push(...data.result.value);
  paginationKey = data.result.paginationKey;
} while (paginationKey);

console.log(`Total token accounts: ${allTokenAccounts.length}`);
```

### Cập nhật danh mục tăng dần

```typescript theme={"system"}
// Get only token accounts modified since a specific slot
const portfolioUpdates = await fetch(`https://mainnet.helius-rpc.com/?api-key=${API_KEY}`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: '1',
    method: 'getTokenAccountsByOwnerV2',
    params: [
      walletAddress,
      { "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" },
      {
        encoding: 'jsonParsed',
        limit: 1000,
        changedSinceSlot: lastUpdateSlot // Only get recent changes
      }
    ]
  })
});
```

## Hỗ trợ chương trình token

<Tip>
  **Hỗ trợ Token-2022**: Sử dụng `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` làm `programId` để truy vấn các tài khoản Token-2022 có phần mở rộng như phí chuyển, token sinh lãi và nhiều tính năng khác.
</Tip>

```typescript theme={"system"}
// Query Token-2022 accounts (supports token extensions)
const token2022Response = await fetch(`https://mainnet.helius-rpc.com/?api-key=${API_KEY}`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: '1',
    method: 'getTokenAccountsByOwnerV2',
    params: [
      walletAddress,
      { "programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, // Token-2022
      { encoding: 'jsonParsed', limit: 1000 }
    ]
  })
});
```

## Di chuyển từ getTokenAccountsByOwner

Việc di chuyển rất đơn giản — chỉ cần thêm các tham số phân trang vào truy vấn hiện có:

```diff theme={"system"}
{
  "jsonrpc": "2.0",
  "id": "1",
- "method": "getTokenAccountsByOwner",
+ "method": "getTokenAccountsByOwnerV2",
  "params": [
    "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
    { "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" },
    {
      "encoding": "jsonParsed",
+     "limit": 1000
    }
  ]
}
```

## Các phương thức liên quan

<CardGroup cols={2}>
  <Card title="getTokenAccountsByOwner" icon="wallet" href="/docs/vi/api-reference/rpc/http/gettokenaccountsbyowner">
    Phương thức gốc không có tính năng phân trang
  </Card>

  <Card title="getProgramAccountsV2" icon="code" href="/docs/vi/api-reference/rpc/http/getprogramaccountsv2">
    Phương thức V2 dành cho các truy vấn tài khoản chương trình
  </Card>
</CardGroup>

## Tham số yêu cầu

<ParamField body="address" type="string" required>
  Địa chỉ ví Solana (pubkey) của chủ sở hữu tài khoản cần truy vấn lượng token đang nắm giữ, ở dạng chuỗi được mã hóa base-58.
</ParamField>

<ParamField body="mint" type="string">
  Địa chỉ phát hành token Solana cụ thể để chỉ truy xuất các tài khoản của một token hoặc NFT nhất định.
</ParamField>

<ParamField body="programId" type="string">
  ID chương trình token Solana cụ thể (thường là chương trình SPL Token) đã tạo các tài khoản token.
</ParamField>

<ParamField body="commitment" type="string">
  Mức cam kết cho yêu cầu.

  * `confirmed`
  * `finalized`
  * `processed`
</ParamField>

<ParamField body="minContextSlot" type="number">
  Slot tối thiểu mà tại đó yêu cầu có thể được đánh giá.
</ParamField>

<ParamField body="withContext" type="boolean">
  Khi là `true`, trả về `result.context` (siêu dữ liệu ảnh chụp nhanh: `slot`, `apiVersion`) và lồng
  `accounts` cùng `paginationKey` bên trong `result.value` dưới dạng đối tượng. Khi là `false`
  hoặc bị bỏ qua, `result.value` là mảng tài khoản token của trang này, với `paginationKey`
  nằm trong `result`. Áp dụng cùng bộ lọc và giới hạn.
</ParamField>

<ParamField body="dataSlice" type="object">
  Yêu cầu một phần dữ liệu của tài khoản.
</ParamField>

<ParamField body="dataSlice.length" type="number">
  Số byte cần trả về.
</ParamField>

<ParamField body="dataSlice.offset" type="number">
  Độ lệch byte để bắt đầu đọc.
</ParamField>

<ParamField body="encoding" type="string">
  Định dạng mã hóa cho dữ liệu Tài khoản.

  * `base58`
  * `base64`
  * `base64+zstd`
  * `jsonParsed`
</ParamField>

<ParamField body="limit" type="number">
  Số tài khoản token tối đa trả về cho mỗi yêu cầu (1-10.000).
</ParamField>

<ParamField body="paginationKey" type="string">
  Con trỏ phân trang được mã hóa base-58 để tìm nạp các trang tiếp theo. Sử dụng paginationKey từ phản hồi trước đó.
</ParamField>

<ParamField body="changedSinceSlot" type="number">
  Chỉ trả về các tài khoản token đã được sửa đổi tại hoặc sau số slot này. Hữu ích cho việc cập nhật danh mục tăng dần.
</ParamField>


## OpenAPI

````yaml vi/openapi/rpc-http/getTokenAccountsByOwnerV2.yaml POST /
openapi: 3.1.0
info:
  title: Solana RPC API
  version: 1.0.0
  description: >-
    API khám phá tài khoản token Solana nâng cao với các tính năng bổ sung, bao
    gồm phân trang dựa trên con trỏ và hỗ trợ changedSinceSlot để truy xuất hiệu
    quả số dư token SPL, NFT và các tài sản token khác liên kết với bất kỳ địa
    chỉ ví nào. Hỗ trợ cập nhật gia tăng thông qua bộ lọc dựa trên slot.
  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: getTokenAccountsByOwnerV2
      description: >
        Phiên bản nâng cao của getTokenAccountsByOwner với các tính năng bổ
        sung, bao gồm phân trang dựa trên con trỏ 

        và hỗ trợ changedSinceSlot để truy xuất hiệu quả các tập hợp lớn tài
        khoản token SPL thuộc sở hữu của một 

        địa chỉ ví cụ thể. Cho phép truy vấn danh mục có khả năng mở rộng với
        kích thước trang có thể cấu hình lên đến 10.000 

        tài khoản cho mỗi yêu cầu. Tham số changedSinceSlot cho phép chỉ truy
        xuất các tài khoản token đã sửa đổi 

        kể từ một slot blockchain cụ thể, rất phù hợp để theo dõi danh mục theo
        thời gian thực và đồng bộ hóa số dư 

        ví. Thiết yếu cho ví, trình theo dõi danh mục, ứng dụng DeFi và mọi dịch
        vụ 

        cần dữ liệu toàn diện về tài sản token của người dùng có danh mục token
        lớn.


        Lưu ý: Việc kết thúc phân trang chỉ được xác định khi không có tài khoản
        token nào được trả về. API có thể trả về ít 

        tài khoản hơn giới hạn do bộ lọc — hãy tiếp tục phân trang cho đến khi
        paginationKey là null.


        **withContext**: Giá trị boolean tùy chọn trong đối tượng cấu hình (cùng
        với encoding, limit, v.v.). Khi 

        `withContext` là `true`, RPC trả về cấu trúc bao bọc chuẩn của Solana:
        `result.context` (siêu dữ liệu 

        ảnh chụp nhanh, bao gồm `slot` và thường là `apiVersion`) và
        `result.value` dưới dạng đối tượng chứa `accounts` 

        và `paginationKey`. Khi `withContext` là `false` hoặc bị bỏ qua, danh
        sách tài khoản là

        một mảng tại `result.value` (giống `getTokenAccountsByOwner` cổ điển),
        với `paginationKey`

        trong `result`. Bộ lọc, giới hạn và hành vi phân trang không thay đổi;
        chỉ cấu trúc JSON

        của `result` là khác nhau.
      operationId: getTokenAccountsByOwnerV2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  enum:
                    - '2.0'
                  description: Phiên bản giao thức JSON-RPC.
                  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
                  enum:
                    - getTokenAccountsByOwnerV2
                  description: Tên của phương thức RPC cần gọi.
                  example: getTokenAccountsByOwnerV2
                  default: getTokenAccountsByOwnerV2
                params:
                  type: array
                  description: >-
                    Các tham số để truy vấn những tài khoản token được phân
                    trang thuộc sở hữu của một khóa công khai cụ thể.
                  default:
                    - A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd
                    - programId: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                    - encoding: jsonParsed
                      limit: 1000
                  items:
                    oneOf:
                      - type: string
                        description: >-
                          Địa chỉ ví Solana (pubkey) của chủ sở hữu tài khoản
                          cần truy vấn tài sản token, dưới dạng chuỗi được mã
                          hóa base-58.
                        example: A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd
                      - type: object
                        description: >-
                          Cấu hình bộ lọc để thu hẹp các tài khoản token theo
                          địa chỉ mint hoặc ID chương trình.
                        properties:
                          mint:
                            type: string
                            description: >-
                              Địa chỉ mint token Solana cụ thể để chỉ truy xuất
                              các tài khoản của một token hoặc NFT nhất định.
                            example: 2cHr7QS3xfuSV8wdxo3ztuF4xbiarF6Nrgx3qpx3HzXR
                          programId:
                            type: string
                            description: >-
                              ID chương trình token Solana cụ thể (thường là
                              chương trình SPL Token) đã tạo các tài khoản
                              token.
                            example: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                      - type: object
                        description: >-
                          Đối tượng cấu hình nâng cao có hỗ trợ phân trang và
                          các trường tùy chọn.
                        properties:
                          commitment:
                            type: string
                            description: Mức cam kết cho yêu cầu.
                            enum:
                              - confirmed
                              - finalized
                              - processed
                            example: finalized
                          minContextSlot:
                            type: integer
                            description: >-
                              Slot tối thiểu mà tại đó yêu cầu có thể được đánh
                              giá.
                            example: 1000
                          withContext:
                            type: boolean
                            description: >
                              Khi là `true`, trả về `result.context` (siêu dữ
                              liệu ảnh chụp nhanh: `slot`, `apiVersion`) và lồng

                              `accounts` cùng `paginationKey` trong
                              `result.value` dưới dạng đối tượng. Khi là `false`

                              hoặc bị bỏ qua, `result.value` là mảng tài khoản
                              token của trang này, với `paginationKey`

                              trong `result`. Áp dụng cùng các bộ lọc và giới
                              hạn.
                            example: true
                          dataSlice:
                            type: object
                            description: Yêu cầu một phần dữ liệu của tài khoản.
                            properties:
                              length:
                                type: integer
                                description: Số byte cần trả về.
                                example: 10
                              offset:
                                type: integer
                                description: Độ lệch byte để bắt đầu đọc.
                                example: 0
                          encoding:
                            type: string
                            description: Định dạng mã hóa cho dữ liệu tài khoản.
                            enum:
                              - base58
                              - base64
                              - base64+zstd
                              - jsonParsed
                            example: jsonParsed
                          limit:
                            type: integer
                            description: >-
                              Số tài khoản token tối đa cần trả về cho mỗi yêu
                              cầu (1–10.000).
                            minimum: 1
                            maximum: 10000
                            example: 1000
                          paginationKey:
                            type: string
                            description: >-
                              Con trỏ phân trang được mã hóa base-58 để tìm nạp
                              các trang tiếp theo. Sử dụng paginationKey từ phản
                              hồi trước.
                            example: 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
                          changedSinceSlot:
                            type: integer
                            description: >-
                              Chỉ trả về các tài khoản token đã được sửa đổi tại
                              hoặc sau số slot này. Hữu ích cho việc cập nhật
                              danh mục gia tăng.
                            example: 12345678
      responses:
        '200':
          description: >-
            Đã truy xuất thành công các tài khoản token được phân trang theo chủ
            sở hữu.
          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:
                    oneOf:
                      - $ref: >-
                          #/components/schemas/TokenAccountsByOwnerV2ResultDirect
                        title: không có withContext
                      - type: object
                        title: có withContext
                        description: >-
                          Kết quả được bao bọc khi `withContext` là `true` trong
                          các tùy chọn yêu cầu.
                        required:
                          - context
                          - value
                        properties:
                          context:
                            type: object
                            description: >-
                              Siêu dữ liệu ảnh chụp nhanh cho phản hồi của nút
                              (tính nhất quán của slot, gỡ lỗi).
                            properties:
                              slot:
                                type: integer
                                description: Slot mà tại đó nút tạo phản hồi này.
                                example: 341197933
                              apiVersion:
                                type: string
                                description: Phiên bản RPC API khi có sẵn.
                                example: 2.0.15
                          value:
                            $ref: '#/components/schemas/TokenAccountsByOwnerV2Page'
              example:
                jsonrpc: '2.0'
                id: '1'
                result:
                  value:
                    - pubkey: BGocb4GEpbTFm8UFV2VsDSaBXHELPfAXrvd4vtt8QWrA
                      account:
                        lamports: 2039280
                        owner: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                        data:
                          program: spl-token
                          parsed:
                            info:
                              isNative: false
                              mint: 2cHr7QS3xfuSV8wdxo3ztuF4xbiarF6Nrgx3qpx3HzXR
                              owner: A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd
                              state: initialized
                              tokenAmount:
                                amount: '420000000000000'
                                decimals: 6
                                uiAmount: 420000000
                                uiAmountString: '420000000'
                          space: 165
                        executable: false
                        rentEpoch: 18446744073709552000
                        space: 165
                  paginationKey: 8WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
        '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 sai
            định dạng.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Tham số không hợp lệ
                id: '1'
        '401':
          description: Không được phép — 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: Không được phép
                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: Quá nhiều yêu cầu
                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: Lỗi nội bộ
                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: Dịch vụ không khả dụng
                id: '1'
        '504':
          description: Cổng kết nối hết thời gian chờ — 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: Cổng kết nối hết thời gian chờ
                id: '1'
      security:
        - ApiKeyQuery: []
components:
  schemas:
    TokenAccountsByOwnerV2ResultDirect:
      type: object
      description: >-
        Các tài khoản token được phân trang khi `withContext` là false hoặc bị
        bỏ qua. Khớp với cấu trúc quen thuộc, trong đó danh sách tài khoản là
        một mảng tại `result.value` (không được lồng trong `accounts`).
      properties:
        value:
          type: array
          description: Các tài khoản token của trang hiện tại.
          items:
            $ref: '#/components/schemas/TokenAccountByOwnerV2Entry'
        paginationKey:
          type: string
          description: >-
            Con trỏ phân trang cho trang tiếp theo. Chỉ là null khi không có tài
            khoản token nào được trả về (kết thúc phân trang). Lưu ý rằng số tài
            khoản trả về có thể ít hơn giới hạn do bộ lọc, nhưng điều này không
            có nghĩa là đã kết thúc phân trang.
          example: 8WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
          nullable: true
    TokenAccountsByOwnerV2Page:
      type: object
      description: >-
        Các tài khoản token được phân trang khi `withContext` là true. Chứa
        `accounts` và `paginationKey` trong `result.value`, cùng với
        `result.context`.
      properties:
        accounts:
          type: array
          description: Các tài khoản token của trang hiện tại.
          items:
            $ref: '#/components/schemas/TokenAccountByOwnerV2Entry'
        paginationKey:
          type: string
          description: >-
            Con trỏ phân trang cho trang tiếp theo. Chỉ là null khi không có tài
            khoản token nào được trả về (kết thúc phân trang). Lưu ý rằng số tài
            khoản trả về có thể ít hơn giới hạn do bộ lọc, nhưng điều này không
            có nghĩa là đã kết thúc phân trang.
          example: 8WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM
          nullable: true
    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'
    TokenAccountByOwnerV2Entry:
      type: object
      properties:
        pubkey:
          type: string
          description: Pubkey của tài khoản dưới dạng chuỗi được mã hóa base-58.
          example: BGocb4GEpbTFm8UFV2VsDSaBXHELPfAXrvd4vtt8QWrA
        account:
          type: object
          description: Chi tiết tài khoản token.
          properties:
            lamports:
              type: integer
              description: Số lamport được gán cho tài khoản.
              example: 2039280
            owner:
              type: string
              description: Pubkey của chương trình được gán cho tài khoản này.
              example: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
            data:
              type: object
              description: Dữ liệu trạng thái token liên kết với tài khoản.
              properties:
                program:
                  type: string
                  description: Tên chương trình.
                  example: spl-token
                parsed:
                  type: object
                  description: Dữ liệu token đã phân tích.
                  properties:
                    info:
                      type: object
                      description: Thông tin tài khoản token.
                      properties:
                        isNative:
                          type: boolean
                          description: Cho biết tài khoản có nắm giữ SOL gốc hay không.
                          example: false
                        mint:
                          type: string
                          description: Pubkey của mint token.
                          example: 2cHr7QS3xfuSV8wdxo3ztuF4xbiarF6Nrgx3qpx3HzXR
                        owner:
                          type: string
                          description: Pubkey của chủ sở hữu tài khoản.
                          example: A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd
                        state:
                          type: string
                          description: Trạng thái tài khoản token.
                          example: initialized
                        tokenAmount:
                          type: object
                          description: Chi tiết số lượng token.
                          properties:
                            amount:
                              type: string
                              description: Số dư thô chưa tính chữ số thập phân.
                              example: '420000000000000'
                            decimals:
                              type: integer
                              description: Số chữ số thập phân.
                              example: 6
                            uiAmount:
                              type: number
                              description: Số dư ở định dạng dễ đọc.
                              example: 420000000
                            uiAmountString:
                              type: string
                              description: Số dư dưới dạng chuỗi.
                              example: '420000000'
                space:
                  type: integer
                  description: Dung lượng được phân bổ cho tài khoản.
                  example: 165
            executable:
              type: boolean
              description: Cho biết tài khoản có chứa chương trình hay không.
              example: false
            rentEpoch:
              type: integer
              description: Epoch mà tại đó tài khoản sẽ phải trả phí thuê tiếp theo.
              example: 18446744073709552000
            space:
              type: integer
              description: Kích thước dữ liệu của tài khoản.
              example: 165
  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).

````