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

# Solana 자산 검색: NFT, 토큰 및 압축 자산 찾기

> searchAssets 엔드포인트를 사용하여 Solana에서 NFT, 압축 자산 및 대체 가능한 토큰을 고급 필터링, 정렬 및 페이지 매김과 함께 발견하십시오.

## 개요

`searchAssets`는 DAS API에서 가장 유연한 읽기 방법입니다. 소유자, 컬렉션 그룹화, 토큰 유형 및 속성의 조합과 일치하는 자산을 단일 페이지 매김 호출로 반환합니다. 여러 개의 자산이나 단순한 소유자 목록 이상이 필요할 때 사용하십시오.

`tokenType`는 선택 사항입니다. 생략하면, `searchAssets`는 정규 및 압축된 NFT만 반환하며 대체 가능한 토큰은 포함되지 않습니다. 대체 가능한 토큰을 포함하려면 `tokenType`를 설정하십시오 (예: `"fungible"` 또는 `"all"`). 허용되는 값은 `fungible`, `nonFungible`, `regularNft`, `compressedNft` 및 `all`입니다.

## 사용 시기

다음과 같은 경우 `searchAssets`를 사용하십시오:

* 지갑의 자산을 대체 가능한 토큰이나 NFT로만 필터링할 때
* 특정 컬렉션 내에서 지갑이 소유하는 자산을 나열할 때
* 대량의 압축 NFT를 발견할 때
* 커서 페이지 매김을 사용하여 대규모 결과 세트에서 무한 스크롤을 빌드할 때
* MPL Core 자산을 에이전트 상태나 서명자별로 필터링할 때

단일 자산의 경우 [`getAsset`](/docs/ko/api-reference/das/getasset)를 사용하십시오; 단순한 지갑 나열의 경우 [`getAssetsByOwner`](/docs/ko/api-reference/das/getassetsbyowner)를 사용하십시오.

<Card title="API 참고 자료" horizontal icon="code" href="/docs/ko/api-reference/das/searchassets">
  searchAssets에 대한 자세한 문서를 보십시오
</Card>

## 빠른 시작

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

async function searchAssets(params) {
  const body = {
    jsonrpc: "2.0",
    id: "search-assets-example",
    method: "searchAssets",
    params,
  };
  const res = await fetch(url, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(body),
  });
  if (!res.ok) {
    throw new Error(`${res.status} ${res.statusText}`);
  }
  const { result } = await res.json();
  return result;
}

// Example: fetch first 50 compressed NFTs in a wallet
searchAssets({
  ownerAddress: "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
  tokenType: "compressedNft",
  limit: 50,
}).then(console.log);
```

## tokenType 선택

`tokenType`는 선택 사항이며 **응답에 표시되는 자산의 종류**를 지정합니다. 생략하면, `searchAssets`는 정규 및 압축된 NFT만 반환합니다 — 대체 가능한 토큰을 포함하려면 `tokenType`를 설정하십시오.

<ParamField body="tokenType" type="string">
  허용되는 값: `fungible`, `nonFungible`, `regularNft`, `compressedNft`, `all`. 생략 시 기본값은 정규 및 압축된 NFT입니다.
</ParamField>

| tokenType       | 얻을 수 있는 것            | 일반적인 사용 사례    |
| --------------- | -------------------- | ------------- |
| `fungible`      | SPL 및 Token-2022 토큰만 | 지갑 잔액, 토큰 게이팅 |
| `nonFungible`   | 모든 NFT(압축 및 정규)      | 포트폴리오 개요      |
| `regularNft`    | 레거시 및 pNFT(비압축)      | 마켓플레이스 목록     |
| `compressedNft` | cNFTs만               | 초저가 대량 발행     |
| `all`           | 모든 것(토큰 및 NFT)       | 포괄적 검색        |

## 페이지 매김 및 정렬

Solana 지갑은 수천 개의 자산을 소유할 수 있으므로 효율적인 페이징이 중요합니다:

* **페이지 / 제한** — 클래식 페이지 매김 (`page`는 **1**에서 시작). 정적 뷰에 적합합니다.
* **커서** — 이전 응답의 `before` 또는 `after` 값을 전달하여 빠른 무한 스크롤링을 수행합니다.

```json5 sortBy theme={"system"}
"sortBy": {
  "sortBy": "created",      // created | recent_action | updated | none
  "sortDirection": "desc"   // asc | desc
}
```

전체 페이지/제한 및 커서 전략, 병렬 키셋 쿼리 포함에 대한 자세한 내용은 [페이지 매김 가이드](/docs/ko/das/pagination)를 참조하세요.

## 디스플레이 옵션

이 플래그는 **메타데이터를 추가**하며 반환되는 자산을 변경하지 않습니다.

| 플래그                      | 효과                      |
| ------------------------ | ----------------------- |
| `showNativeBalance`      | 지갑의 SOL 잔액을 포함합니다       |
| `showCollectionMetadata` | 컬렉션 수준의 JSON 데이터를 추가합니다 |
| `showGrandTotal`         | 총 일치 수를 반환합니다 (느림)      |

```json5 options theme={"system"}
"options": {
  "showNativeBalance": true,
  "showCollectionMetadata": true,
  "showGrandTotal": true
}
```

## MPL 코어 에이전트, 자산 서명자 및 MIP-11 그룹

MPL 코어 자산은 **에이전트 신원** 및 **자산 서명자** 메타데이터를 노출할 수 있으며, 자산이나 컬렉션은 그룹 멤버십을 설명하는 **`groups` 플러그인**(MIP-11)을 포함할 수 있습니다. 동일한 선택적 필드는 모든 자산 반환 DAS 메서드(`getAsset`, `getAssetBatch`, `getAssetsByOwner`, `getAssetsByGroup`, `getAssetsByCreator`, `getAssetsByAuthority` 및 `searchAssets`의 각 항목)에 나타납니다.

에이전트 상태나 주소별로 필터링하려면 `searchAssets`를 사용하십시오:

| 매개변수          | 유형      | 목적                      |
| ------------- | ------- | ----------------------- |
| `isAgent`     | boolean | 에이전트 신원을 가진 자산만         |
| `agentToken`  | string  | 에이전트 토큰 민트와 일치 (base58) |
| `assetSigner` | string  | 자산 서명자 PDA와 일치 (base58) |

`interface`를 `MplCoreAsset`, `MplCoreCollection` 또는 `MplCoreGroup`로 설정하여 MPL Core–특정 검색을 수행할 수도 있습니다.

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "searchAssets",
  "params": {
    "ownerAddress": "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
    "tokenType": "all",
    "isAgent": true,
    "page": 1,
    "limit": 10
  }
}
```

응답 필드 `is_agent`, `agent_token` 및 `asset_signer`는 **적용되지 않을 때 생략**됩니다 (예를 들어, `is_agent`는 false일 경우 생략됩니다). 전체 스키마는 [searchAssets API 참조](/docs/ko/api-reference/das/searchassets)를 참조하십시오.

## 예제

첫 번째 예제는 전체 `fetch` 래퍼를 보여줍니다. 나머지 예제는 동일한 패턴을 따르며 축소되어 있습니다 — 요청 본문을 보려면 확장하십시오.

### 지갑의 모든 대체 가능한 토큰 검색

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

const searchAssets = async () => {
  const response = await fetch(url, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: 'my-id',
      method: 'searchAssets',
      params: {
        ownerAddress: '86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY',
        tokenType: 'fungible',
      },
    }),
  });
  const { result } = await response.json();
  console.log("Search Assets: ", result);
};
searchAssets();
```

<Accordion title="네이티브 밸런스 및 토큰 정보로 대체 가능한 토큰 검색">
  ```typescript theme={"system"}
  const url = `https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`

  const searchAssetsTokenInfo = async () => {
      const response = await fetch(url, {
          method: 'POST',
          headers: {
              'Content-Type': 'application/json',
          },
          body: JSON.stringify({
              jsonrpc: '2.0',
              id: 'my-id',
              method: 'searchAssets',
              params: {
                  ownerAddress: '86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY',
                  tokenType: 'fungible',
                  options: {
                      showNativeBalance: true,
                  },
              },
          }),
      });

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

      result.items.forEach(item => {
        console.log(item.token_info);
      });

      console.log("Native Balance: ", result.nativeBalance);
  };

  searchAssetsTokenInfo();
  ```
</Accordion>

<Accordion title="vibhu.sol 소유의 Drip NFT 검색">
  ```typescript theme={"system"}
  const url = `https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`

  const searchAssetsDrip = async () => {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        jsonrpc: '2.0',
        id: 'my-id',
        method: 'searchAssets',
        params: {
          ownerAddress: 'BAVjpySHMMGDpq3whU7qaqCCRE8ksCeGwxa53Qv2i8jS',
          grouping: ["collection", "DRiP2Pn2K6fuMLKQmt5rZWyHiUZ6WK3GChEySUpHSS4x"],
          page: 1,
          limit: 1000
        },
      }),
    });
    const { result } = await response.json();
    console.log("Drip Haus Assets: ", result);
  };
  searchAssetsDrip();
  ```
</Accordion>

<Accordion title="지갑의 압축 자산 검색">
  ```typescript theme={"system"}
  const url = `https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY`

  const searchAssetsCompressed = async () => {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        jsonrpc: '2.0',
        id: 'my-id',
        method: 'searchAssets',
        params: {
          ownerAddress: '2k5AXX4guW9XwRQ1AKCpAuUqgWDpQpwFfpVFh3hnm2Ha',
          compressed: true,
        },
      }),
    });
    const { result } = await response.json();
    console.log("Search Assets: ", result);
  };
  searchAssetsCompressed();
  ```
</Accordion>

## 다음 단계

<CardGroup cols={3}>
  <Card title="페이지 매김" icon="list" href="/docs/ko/das/pagination">
    대규모 결과 세트를 위한 페이지 기반 및 키셋 페이지 매김.
  </Card>

  <Card title="대체 가능한 토큰 확장" icon="coins" href="/docs/ko/das/fungible-token-extension">
    결과에 나타나는 tokenType, 잔액 및 가격.
  </Card>

  <Card title="searchAssets 참조" icon="code" href="/docs/ko/api-reference/das/searchassets">
    전체 요청 및 응답 스키마.
  </Card>
</CardGroup>
