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

# Как получить SPL-токены Solana: полное руководство по API

> Получайте и запрашивайте данные SPL-токенов Solana с помощью Helius: балансы, токен-аккаунты, объем предложения, держатели и расширение взаимозаменяемых токенов, с примерами кода.

## Обзор

В этом руководстве рассматривается чтение данных взаимозаменяемых токенов в Solana: балансы аккаунтов, токен-аккаунты по владельцу или минту, общий объем предложения, крупнейшие держатели и расширение взаимозаменяемых токенов DAS. Helius предоставляет как стандартные RPC-методы Solana для токенов, так и методы DAS, которые добавляют метаданные и цены в USD.

Информацию об NFT, сжатых NFT, редакциях и доказательствах см. в [руководстве по получению активов](/docs/ru/das/get-nfts). Эта страница посвящена взаимозаменяемым токенам (SPL и Token-2022).

## Когда это использовать

Используйте методы на этой странице, когда вам нужно:

* Получить баланс отдельного токен-аккаунта
* Вывести список всех токен-аккаунтов кошелька
* Найти все аккаунты, содержащие токен определенного минта
* Проверить общий объем предложения токена или найти его крупнейших держателей
* Получить метаданные токена и цену в USD вместе с балансами

## Баланс токен-аккаунта

Получите баланс определенного токен-аккаунта с помощью стандартного RPC:

```typescript theme={"system"}
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: '1',
    method: 'getTokenAccountBalance',
    params: [
      '3emsAVdmGKERbHjmGfQ6oZ1e35dkf5iYcS6U4CPKFVaa'
    ]
  })
});
const data = await response.json();
console.log(data);
```

<Card title="API Reference" horizontal icon="code" href="/docs/ru/api-reference/rpc/http/gettokenaccountbalance">
  getTokenAccountBalance
</Card>

## Токен-аккаунты по владельцу

Получите список всех токен-аккаунтов, принадлежащих кошельку:

```typescript theme={"system"}
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: '1',
    method: 'getTokenAccountsByOwner',
    params: [
      '86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY',
      {
        programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
      },
      {
        encoding: 'jsonParsed'
      }
    ]
  })
});
const data = await response.json();
console.log(data);
```

<Card title="API Reference" horizontal icon="code" href="/docs/ru/api-reference/rpc/http/gettokenaccountsbyowner">
  getTokenAccountsByOwner
</Card>

## Токен-аккаунты по минту

Получите список всех аккаунтов, содержащих определенный токен:

```typescript theme={"system"}
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: '1',
    method: 'getTokenAccountsByOwner',
    params: [
      'CEXq1uy9y15PL2Wb4vDQwQfcJakBGjaAjeuR2nKLj8dk',
      {
        mint: "8wXtPeU6557ETkp9WHFY1n1EcU6NxDvbAggHGsMYiHsB"
      },
      {
        encoding: 'jsonParsed'
      }
    ]
  })
});
const data = await response.json();
console.log(data);
```

<Card title="API Reference" horizontal icon="code" href="/docs/ru/api-reference/rpc/http/gettokenaccountsbyowner">
  getTokenAccountsByOwner
</Card>

Чтобы найти все аккаунты, содержащие токен определенного минта, среди всех владельцев, а не только одного, используйте описанный ниже метод DAS `getTokenAccounts`.

## Объем предложения токена

Проверьте общий объем предложения токена:

```typescript theme={"system"}
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: '1',
    method: 'getTokenSupply',
    params: [
      'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
    ]
  })
});
const data = await response.json();
console.log(data);
```

<Card title="API Reference" horizontal icon="code" href="/docs/ru/api-reference/rpc/http/gettokensupply">
  getTokenSupply
</Card>

## Крупнейшие держатели токена

Определите крупнейшие аккаунты, содержащие токен:

```typescript theme={"system"}
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: '1',
    method: 'getTokenLargestAccounts',
    params: [
      'he1iusmfkpAdwvxLNGV8Y1iSbj4rUy6yMhEA3fotn9A'
    ]
  })
});
const data = await response.json();
console.log(data);
```

<Card title="API Reference" horizontal icon="code" href="/docs/ru/api-reference/rpc/http/gettokenlargestaccounts">
  getTokenLargestAccounts
</Card>

Возвращает до 20 крупнейших аккаунтов для минта:

```json theme={"system"}
{
  "context": { "slot": 0 },
  "value": [
    { "address": "...", "amount": "1000000000000", "decimals": 9, "uiAmount": 1000.0, "uiAmountString": "1000" }
  ]
}
```

## Токен-аккаунты через DAS API

Метод DAS `getTokenAccounts` возвращает токен-аккаунты по минту или владельцу вместе с балансами за один запрос с пагинацией. В отличие от `getTokenAccountsByOwner`, можно выполнить запрос только по `mint`, чтобы получить список всех аккаунтов, содержащих токен, среди всех владельцев.

```typescript theme={"system"}
const url = `https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`;

const getTokenAccounts = async (params) => {
  const response = await fetch(url, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      jsonrpc: "2.0",
      id: "my-request-id",
      method: "getTokenAccounts",
      params: params,
    }),
  });

  const { result } = await response.json();
  return result;
};

// Example: Get all accounts holding a specific token
getTokenAccounts({
  mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC
  page: 1,
  limit: 100
});
```

<Card title="API Reference" horizontal icon="code" href="/docs/ru/api-reference/das/gettokenaccounts">
  getTokenAccounts
</Card>

Результаты разбиты на страницы; каждая запись содержит аккаунт, минт, владельца и баланс:

```json theme={"system"}
{
  "total": 100,
  "limit": 100,
  "page": 1,
  "token_accounts": [
    { "address": "...", "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "owner": "...", "amount": 12345678 }
  ]
}
```

## Метаданные и цена токена через DAS API

Чтобы получить метаданные токена и цену в USD, вызовите метод DAS `getAsset` с включенным параметром `showFungible`. Цены проверенных токенов возвращаются в поле `token_info.price_info`.

<Note>
  Данные о ценах из `getAsset` кешируются на срок до 600 секунд, поэтому они могут быть устаревшими на величину до 10 минут.
</Note>

```typescript theme={"system"}
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: '1',
    method: 'getAsset',
    params: {
      id: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', // Bonk
      options: {
        showFungible: true
      }
    }
  })
});
const { result } = await response.json();
console.log(result.token_info.price_info);
```

<Card title="API Reference" horizontal icon="code" href="/docs/ru/api-reference/das/getasset">
  getAsset
</Card>

Ответ возвращает объем предложения, количество десятичных знаков и цену в поле `token_info`:

```json theme={"system"}
{
  "token_info": {
    "symbol": "Bonk",
    "supply": 8881594973561640000,
    "decimals": 5,
    "token_program": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
    "price_info": {
      "price_per_token": 0.0000192271,
      "currency": "USDC"
    }
  }
}
```

### Расчет рыночной капитализации

Умножьте цену на объем предложения с учетом десятичных знаков:

```typescript theme={"system"}
const { price_per_token } = result.token_info.price_info;
const { supply, decimals } = result.token_info;
const marketCap = (supply / Math.pow(10, decimals)) * price_per_token;
```

Чтобы за один запрос получить список всех взаимозаменяемых токенов в кошельке вместе с балансами и ценами, используйте `getAssetsByOwner` или `searchAssets` с `tokenType: "fungible"`. В документации по [расширению взаимозаменяемых токенов](/docs/ru/das/fungible-token-extension) описано, как `tokenType`, балансы, расширения Token-2022 и данные о ценах представлены в ответе.

## Рекомендации

* Используйте пагинацию для методов, возвращающих большие наборы результатов. См. [руководство по пагинации](/docs/ru/das/pagination).
* Отдавайте предпочтение методам DAS (`getAsset`, `getAssetsByOwner`, `getTokenAccounts`), когда вам нужны метаданные или цены в USD; используйте стандартные RPC-методы для необработанных балансов и объемов предложения в блокчейне.
* Корректно обрабатывайте ошибки с помощью блоков try/catch и повторных попыток.
* При необходимости кешируйте ответы, чтобы сократить количество вызовов API.

## Следующие шаги

<CardGroup cols={3}>
  <Card title="Fungible Token Extension" icon="coins" href="/docs/ru/das/fungible-token-extension">
    Как DAS возвращает взаимозаменяемые токены, расширения Token-2022 и цены.
  </Card>

  <Card title="Get Assets (NFTs)" icon="image" href="/docs/ru/das/get-nfts">
    Получайте NFT, сжатые NFT, редакции и доказательства.
  </Card>

  <Card title="DAS API reference" icon="code" href="/docs/ru/api-reference/das">
    Полные схемы для каждого метода DAS.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.