기능

Asset 소각

Last updated January 31, 2026

이 가이드는 Metaplex Core SDK를 사용하여 Solana에서 Core Asset을 소각하는 방법을 보여줍니다. Asset을 영구적으로 파괴하고 렌트 보증금의 대부분을 회수합니다.

학습 내용

  • Asset을 소각하고 렌트 회수
  • Collection 내 Asset의 소각 처리
  • Burn Delegate 권한 이해
  • 소각 후 계정에 무슨 일이 일어나는지 알기

요약

Core Asset을 소각하여 영구적으로 파괴하고 렌트를 회수합니다. 소유자(또는 Burn Delegate)만 Asset을 소각할 수 있습니다.

  • burn(umi, { asset })을 호출하여 Asset 파괴
  • 대부분의 렌트(~0.0028 SOL)가 지불자에게 반환됨
  • 소액(~0.0009 SOL)이 계정 재사용 방지를 위해 남음
  • 소각은 영구적이며 되돌릴 수 없음

범위 외

Token Metadata 소각(mpl-token-metadata 사용), 압축 NFT 소각(Bubblegum 사용), Collection 소각(Collection은 자체 소각 프로세스가 있음).

빠른 시작

바로가기: Asset 소각 · Collection 내 소각

  1. 설치: npm install @metaplex-foundation/mpl-core @metaplex-foundation/umi
  2. Asset을 가져와서 소유권 확인
  3. 소유자로서 burn(umi, { asset }) 호출
  4. 렌트가 자동으로 지갑에 반환됨

전제 조건

  • Asset을 소유한(또는 Burn Delegate인) 서명자로 구성된 Umi
  • 소각할 Asset의 Asset 주소
  • Collection 주소 (Asset이 Collection 내에 있는 경우) Asset은 burn 명령어를 사용하여 소각할 수 있습니다. 이렇게 하면 렌트 면제 수수료가 소유자에게 반환됩니다. 계정이 다시 열리는 것을 방지하기 위해 매우 소액의 SOL(0.00089784)만 계정에 남습니다.

코드 예제

SDK를 사용하여 Core asset을 소각하는 방법입니다. 이 스니펫은 당신이 자산의 소유자라고 가정합니다.

1import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
2import { burn } from '@metaplex-foundation/mpl-core'
3import { mplCore } from '@metaplex-foundation/mpl-core'
4import { publicKey } from '@metaplex-foundation/umi'
5
6const umi = createUmi('https://api.devnet.solana.com').use(mplCore())
7const assetAddress = publicKey('AssetAddressHere...')
8
9// Permanently destroy/burn an NFT asset
10const result = await burn(umi, {
11 asset: assetAddress,
12}).sendAndConfirm(umi)
13
14console.log('Asset burned successfully')

Collection에 속한 Asset 소각

컬렉션의 일부인 Core asset을 소각하기 위한 SDK 사용 방법입니다. 이 스니펫은 당신이 자산의 소유자라고 가정합니다.

Collection에 속한 Asset 소각

import { publicKey } from '@metaplex-foundation/umi'
import {
burn,
fetchAsset,
collectionAddress,
fetchCollection,
} from '@metaplex-foundation/mpl-core'
const assetId = publicKey('11111111111111111111111111111111')
const asset = await fetchAsset(umi, assetId)
const collectionId = collectionAddress(asset)
let collection = undefined
if (collectionId) {
collection = await fetchCollection(umi, collectionId)
}
await burn(umi, {
asset,
collection,
}).sendAndConfirm(umi)

일반적인 오류

Authority mismatch

Asset의 소유자나 Burn Delegate가 아닙니다. 소유권을 확인하세요:

const asset = await fetchAsset(umi, assetAddress)
console.log(asset.owner) // 서명자와 일치해야 함

Asset is frozen

Asset에 Freeze Delegate 플러그인이 있고 현재 동결되어 있습니다. 소각하기 전에 동결 권한자가 해제해야 합니다.

Missing collection parameter

Collection 내 Asset의 경우 collection 주소를 전달해야 합니다. 먼저 Asset을 가져와서 컬렉션을 확인하세요:

const asset = await fetchAsset(umi, assetAddress)
const collectionId = collectionAddress(asset)

참고사항

  • 소각은 영구적이며 되돌릴 수 없음 - Asset을 복구할 수 없음
  • 렌트는 소유자에게 반환됨 (금액은 자산 크기와 플러그인에 따라 다름)
  • 남은 SOL은 계정 주소의 재사용을 방지함
  • Burn Delegate는 소유자를 대신하여 소각 가능 (Burn Delegate 플러그인을 통해)
  • 동결된 Asset은 소각 전에 해제해야 함

빠른 참조

소각 파라미터

파라미터필수설명
assetAsset 주소 또는 가져온 객체
collection컬렉션 내인 경우Collection 주소
authority아니요기본값은 서명자 (위임자용)

누가 소각할 수 있나요?

권한소각 가능?
Asset 소유자
Burn Delegate
Transfer Delegate아니요
Update Authority아니요

렌트 회수

항목금액
지불자에게 반환기본 + 플러그인 스토리지 렌트
계정에 남음~0.0009 SOL

FAQ

계정에 남아있는 ~0.0009 SOL을 회수할 수 있나요?

아니요. 이 소액은 계정을 "소각됨"으로 표시하고 해당 주소가 새 Asset에 재사용되는 것을 방지하기 위해 의도적으로 남겨집니다.

소각 후 Asset의 메타데이터는 어떻게 되나요?

온체인 계정이 지워집니다(0으로 초기화). 오프체인 메타데이터는 원래 URI를 통해 접근 가능하지만, 이를 연결하는 온체인 기록은 없습니다.

Burn Delegate가 소유자의 승인 없이 소각할 수 있나요?

예. 소유자가 플러그인을 통해 Burn Delegate를 할당하면 위임자는 언제든지 Asset을 소각할 수 있습니다. 소유자는 신뢰할 수 있는 주소만 Burn Delegate로 할당해야 합니다.

소각이 Collection의 카운트에 영향을 미치나요?

예. Asset이 소각되면 Collection의 currentSize가 감소합니다. numMinted 카운터는 변경되지 않습니다 (지금까지 민팅된 총 수를 추적함).

여러 Asset을 한 번에 소각할 수 있나요?

단일 명령어로는 불가능합니다. 하나의 트랜잭션에 여러 소각 명령어를 배치할 수 있습니다 (트랜잭션 크기 제한 내에서).

용어집

용어정의
소각Asset을 영구적으로 파괴하고 렌트를 회수
Burn Delegate소유자를 대신하여 소각할 권한이 있는 계정
렌트Solana에서 계정을 유지하기 위해 예치하는 SOL
동결소각과 전송이 차단되는 Asset 상태
CollectionAsset이 속할 수 있는 그룹 계정