> ## 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 얻기: 자산, 컬렉션 및 증명

> Helius DAS API를 사용하여 Solana NFT, 압축된 NFT, 에디션 및 증명을 가져오고 쿼리합니다. 코드 예제와 모범 사례를 포함한 완벽한 가이드.

## 개요

이 가이드는 Helius Digital Asset Standard (DAS) API를 사용하여 NFT 및 디지털 수집품을 읽는 방법을 다룹니다: 단일 자산 가져오기, 지갑의 NFT 나열, 컬렉션이나 창작자별로 쿼리하기, 압축된 NFT 및 머클 증명 다루기, 에디션 나열, 거래 기록 읽기.

대체 가능한 토큰 — 잔액, 공급, 보유자 및 가격 — 의 경우 [SPL 토큰 가이드 가져오기](/docs/ko/das/get-tokens)를 참조하세요. NFTs와 토큰 모두에 적용되는 동일한 `getAsset` 및 `getAssetsByOwner` 메서드지만, 이 페이지는 NFT 및 수집품 워크플로에 중점을 둡니다.

## 언제 이것을 사용해야 하는가

다음과 같은 경우에 이 페이지의 메서드를 사용하세요:

* 단일 NFT의 메타데이터, 이미지, 속성 표시하기
* 포트폴리오나 갤러리를 위해 지갑이 소유한 모든 NFT 나열하기
* 컬렉션 및 창작자 쿼리로 마켓플레이스나 탐색기 구동하기
* 압축된 NFT 검증 또는 전송하기 (머클 증명이 필요함)
* NFT의 온체인 거래 내역 표시하기
* 마스터 NFT에서 인쇄된 에디션 나열하기

## NFT 메서드

단일 NFT의 경우 `getAsset` 또는 지갑의 컬렉션을 위한 `getAssetsByOwner`로 시작하세요. 각 카드는 전체 API 참조로 연결됩니다.

<CardGroup cols={2}>
  <Card title="getAsset" icon="image" href="/docs/ko/api-reference/das/getasset">
    ID로 하나의 NFT에 대한 전체 데이터.
  </Card>

  <Card title="getAssetsByOwner" icon="wallet" href="/docs/ko/api-reference/das/getassetsbyowner">
    지갑에 보유된 모든 NFT.
  </Card>

  <Card title="searchAssets" icon="magnifying-glass" href="/docs/ko/das/search">
    컬렉션, 창작자, 속성 등으로 필터링 — 자산 검색 가이드 참조.
  </Card>

  <Card title="getAssetsByCreator" icon="user" href="/docs/ko/api-reference/das/getassetsbycreator">
    창작자가 민팅한 모든 자산.
  </Card>

  <Card title="getAssetsByGroup" icon="layer-group" href="/docs/ko/api-reference/das/getassetsbygroup">
    컬렉션 내 모든 자산.
  </Card>

  <Card title="getSignaturesForAsset" icon="clock-rotate-left" href="/docs/ko/api-reference/das/getsignaturesforasset">
    자산의 거래 내역.
  </Card>

  <Card title="getNftEditions" icon="copy" href="/docs/ko/api-reference/das/getnfteditions">
    마스터 NFT에서 인쇄된 에디션.
  </Card>

  <Card title="getAssetProof" icon="shield-check" href="/docs/ko/api-reference/das/getassetproof">
    압축된 NFT에 대한 머클 증명.
  </Card>
</CardGroup>

### 단일 NFT 가져오기

ID로 하나의 NFT에 대한 전체 메타데이터, 소유권, 컬렉션 데이터 가져오기:

```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: 'F9Lw3ki3hJ7PF9HQXsBzoY8GyE6sPoEZZdXJBsTTD2rk' },
  }),
});

const { result } = await response.json();
console.log(result.content.metadata.name, result.ownership.owner);
```

### 더 많은 NFT 쿼리

<AccordionGroup>
  <Accordion title="지갑의 NFT 나열하기 — getAssetsByOwner">
    ```typescript theme={"system"}
    const getNFTsByOwner = async (ownerAddress) => {
      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: 'getAssetsByOwner',
          params: { ownerAddress, page: 1, limit: 10 },
        }),
      });

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

    getNFTsByOwner('86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY');
    ```
  </Accordion>

  <Accordion title="창작자로 — getAssetsByCreator">
    ```typescript theme={"system"}
    const getAssetsByCreator = async (creatorAddress) => {
      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: 'getAssetsByCreator',
          params: { creatorAddress, page: 1, limit: 100 },
        }),
      });

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

    getAssetsByCreator('9uBX3ASjxWvNBAD1xjbVaKA74mWGZys3RGSF7DdeDD3F');
    ```
  </Accordion>

  <Accordion title="컬렉션으로 — getAssetsByGroup">
    ```typescript theme={"system"}
    const getAssetsByCollection = async (collectionAddress) => {
      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: 'getAssetsByGroup',
          params: { groupKey: 'collection', groupValue: collectionAddress, page: 1, limit: 100 },
        }),
      });

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

    getAssetsByCollection('J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w');
    ```
  </Accordion>

  <Accordion title="거래 내역 — getSignaturesForAsset">
    ```typescript theme={"system"}
    const getNFTTransactionHistory = async (mintAddress) => {
      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: 'getSignaturesForAsset',
          params: { id: mintAddress, page: 1, limit: 100 },
        }),
      });

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

    getNFTTransactionHistory('FNt6A9Mfnqbwc1tY7uwAguKQ1JcpBrxmhczDgbdJy5AC');
    ```
  </Accordion>
</AccordionGroup>

## 압축된 NFT

상태 압축된 NFT (cNFT)는 일반 NFT와 동일한 메서드로 **읽습니다** — `getAsset`, `getAssetsByOwner`, Inline\_CODE\_PLACEHOLDER\_94299cfb393fe424\_END는 모두 반환합니다. 압축에 특정한 두 가지는 다음과 같습니다:

* **머클 증명** — 전송 및 소각과 같은 온체인 작업은 `getAssetProof`로부터의 증명이 필요합니다.
* **기록** — cNFT의 거래 기록을 위해 `getSignaturesForAsset` (위에 표시됨)를 사용하세요.

<Accordion title="머클 증명 가져오기 — getAssetProof">
  ```typescript theme={"system"}
  const getProof = async (id) => {
    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: 'getAssetProof',
        params: { id },
      }),
    });

    const { result } = await response.json();
    return result; // { root, proof, node_index, leaf, tree_id }
  };

  getProof('Bu1DEKeawy7txbnCEJE4BU3BKLXaNAKCYcHR4XhndGss');
  ```
</Accordion>

## 모범 사례

* 큰 결과 세트를 반환하는 메서드에는 [pagination](/docs/ko/das/pagination)을 사용하세요.
* try/catch로 오류를 처리하고 지수 백오프를 사용하여 일시적인 오류를 재시도하세요.
* API 호출을 줄이기 위해 적절한 경우 응답을 캐시하세요.
* 여러 ID가 있을 경우 많은 개별 `getAsset` 호출 대신 `getAssetBatch`를 사용하세요.

## 다음 단계

<CardGroup cols={3}>
  <Card title="SPL 토큰 가져오기" icon="coins" href="/docs/ko/das/get-tokens">
    대체 가능한 토큰 잔액, 공급, 보유자 및 가격.
  </Card>

  <Card title="자산 검색" icon="magnifying-glass" href="/docs/ko/das/search">
    컬렉션, 창작자, 속성으로 NFT 필터링하기.
  </Card>

  <Card title="DAS API FAQ" icon="book" href="/docs/ko/faqs/das-api">
    자산, 가격 데이터 및 사용에 관한 일반 질문.
  </Card>
</CardGroup>
