---
title: "Metaplex의 Fusion 툴이란?"
description: "Metaplex의 Fusion에 대한 개요, 작동 방식, 사용 사례 소개"
---

# Metaplex의 Fusion 툴이란?

Solana 런치패드로서 [Metaplex](https://www.alchemy.com/dapps/metaplex)는 크리에이터가 NFT를 출시하고 확장할 수 있도록 돕고 있으며, Fusion 프로그램은 이러한 비전을 바탕으로 구축되고 확장됩니다. Fusion은 Solana 블록체인 상의 크리에이터를 위해 [NFT](https://www.alchemy.com/overviews/solana-nft-analytics-tools) 관련 기능을 더 확대하려는 Metaplex의 시도 중 하나입니다. 이 글에서는 Fusion 프로그램의 작동 방식과 설정 방법을 자세히 설명합니다.

## **Fusion이란?**

**Fusion은 Trifle 프로그램을 기반으로 구축된 NFT 조합 기능으로, NFT를 개별 구성 요소를 기준으로 재조립하거나 재배열할 수 있게 해줍니다. Trifle 프로그램은 Token metadata라는 [Metaplex](https://www.alchemy.com/overviews/metaplex)의 가장 많이 사용되는 프로그램 중 하나를 확장한 것입니다.** Trifle은 Token metadata에 유연성을 더하고, 복잡한 NFT 소유권 모델을 만들 수 있게 하며, 온체인 추적과 같은 기능을 NFT 프로젝트에 추가합니다.

### **조합 가능한 NFT란?**

**조합 가능한 NFT는 개별 NFT 구성 요소를 재배열하여 복잡한 모델을 만들 수 있게 하는 유연한 NFT입니다.**

조합성의 대표적인 예로 레고 브릭을 들 수 있습니다. 레고 브릭은 다른 레고 브릭과 연결될 수 있는 구조를 가지고 있으며, 이를 통해 복잡한 모델을 형성할 수 있습니다. 즉, 조합성이란 구성 요소들이 서로 상호 관계를 지원하거나 허용하여 재조립되거나 재배열됨으로써 더 복잡한 구조를 형성할 수 있는 능력을 말합니다. 조합 가능한 NFT는 Trifle 프로그램을 기반으로 만들어집니다.

### **Metaplex의 Fusion은 어떤 사용 사례가 있는가?**

**Metaplex의 Fusion은 게이밍, NFT, 탈중앙화 금융 등 여러 크립토 생태계에서 사용 사례를 가지고 있습니다.**

#### **1. 게이밍**

Fusion의 유연성과 조합성 기능은 현대 web3 게임의 자산 게임화에 적합합니다. 게임 내 자산은 실시간으로 조합되어 다른 토큰을 형성할 수 있습니다. 예를 들어, 게임 안에 별 2개가 있고 이 별 2개의 가치가 다이아몬드 1개와 같다면, 두 토큰을 조합하여 온체인에서 추적할 수 있습니다.

#### **2. NFT**

Fusion을 사용하면 호환되는 NFT 이미지들을 조합하여 새로운 이미지를 만들 수 있습니다. 예를 들어, 개별 NFT가 퍼즐 조각이거나 자동차의 부품일 수 있으며, 이들을 결합하여 완전히 새로운 NFT를 만들 수 있습니다.

#### **3. DeFi**

이제 NFT를 번들로 묶거나 조합하여 탈중앙화 거래소 플랫폼에서 판매할 수 있습니다.

## **Metaplex의 Fusion은 어떻게 작동하는가?**

**Fusion은 Token Metadata 프로그램의 확장으로 만들어진 NFT 조합 프로그램인 Trifle을 사용합니다.** Fusion 프로그램은 Solana 위에 구축된 NFT에 더 많은 기능을 부여하기 위해 만들어진 여러 Metaplex 프로그램들로 구성되어 있습니다. Fusion은 [앱](https://www.alchemy.com/dapps/top/defi-dapps)과 NFT 마켓플레이스를 강화하는 데 사용될 수 있으며, 크리에이터가 NFT 거래 및 소유권에 대한 규칙을 지정할 수 있도록 해줍니다.

## **Trifle 프로그램이란?**

**Metaplex의 Token Metadata 프로그램을 확장한 Trifle 프로그램은 Creator-Owned Accounts를 사용하여 NFT 조합성을 구현합니다. 이는 Token metadata 프로그램을 확장한 일종의 NFT Escrow 계정입니다.**

Escrow 계정에는 TOE(Token owned escrow)와 COE(Creator owned escrow) 두 가지 유형이 있습니다. Trifle 프로그램은 COE를 사용하며, [Program Derived Address(PDA)](https://www.alchemy.com/overviews/program-derived-address)를 NFT의 크리에이터로 지정합니다. 이를 통해 PDA는 크리에이터에게 부여되는 혜택과 기능, 그리고 온체인 추적과 같은 다른 기능들을 갖게 됩니다.

### **토큰 소유권 규칙이란?**

크리에이터가 설정할 수 있는 토큰 소유권 관련 규칙과 제약에는 세 가지 유형이 있습니다 — none, Metaplex certified collections, Token set. 다른 모든 제약 조건은 이 세 가지 주요 유형에 속합니다.

#### **1. None**

이는 아무런 요건이나 규칙이 필요하지 않을 때 설정하며, 모든 토큰의 전송을 허용합니다. 입장권 없이 행사에 손님을 들이는 것으로 생각하면 됩니다.

#### **2. Metaplex certified collections**

이는 토큰이 특정 컬렉션에 속해야 할 때 설정합니다.

#### **3. Token set**

이는 발행된 토큰이 세트 내 특정 토큰 하나와 일치해야 할 때 설정합니다.

## **Fusion과 함께 사용되는 Solana 계정에는 무엇이 있는가?**

Metaplex Fusion은 두 가지 계정을 사용합니다 — Token metadata 프로그램/컨트랙트를 확장한 escrow constraint model 계정, 그리고 Trifle 계정입니다.

### **Escrow constraint model 계정이란?**

**Escrow constraint model 계정은 Trifle 계정에 접근하기 위한 명령을 사용하기 전에 충족되어야 하는 요구 사항을 규정합니다.** Escrow 계정은 해시맵을 사용하여 데이터 구조를 구현하며, 해시 함수를 통해 키를 값에 매핑합니다.

escrow model 계정에서 키는 Constraint/slot 이름이고, 값은 constraint 유형(None/Collection/TokenSet 중 하나만 가능)과 Token limit(escrow 계정에 담을 수 있는 최대 토큰 수)입니다.

constraint model 계정의 독특한 특징은 유사한 사용 사례를 가진 NFT들을 동일한 escrow constraint model에 연결할 수 있다는 점입니다. 또한 constraint model은 Trifle 사용자가 각 명령에 대해 지불한 수수료를 저장하는 뱅크로 사용될 수도 있습니다.

### **Trifle 계정이란?**

**Trifle 계정은 온체인에서 COE 계정에 저장된 토큰을 관리하고 추적하며, 실행 시 Escrow constraint 계정과 연결됩니다.** Trifle 계정은 해시맵을 사용하여 이러한 토큰들을 관리합니다.

#### **Escrow constraint 및 Trifle 계정과 관련된 명령어:**

1. **Create Escrow Constraint Model Account** - escrow model 계정을 생성합니다
1. **Create Trifle Account** - Trifle 계정을 생성하는 데 사용됩니다
1. **Transfer In** - Trifle 계정이 관리하는 COE로 토큰을 전송하는 데 사용됩니다
1. **Transfer Out** - Trifle 계정이 관리하는 COE에서 토큰을 전송해 내보내는 데 사용됩니다

Transfer in 명령어는 전송될 토큰이 지정된 요구 사항을 충족하는지 constraint model을 통해 확인하며, transfer out 명령어는 전송되어 나갈 토큰이 지정된 요구 사항을 충족하는지 constraint model을 통해 확인합니다.

## **Metaplex Fusion 사용 방법**

프로그램 레벨에서 Fusion을 사용하는 것은 세 단계로 이루어집니다: parent NFT 생성, NFT의 schema 정의, Trifle 계정 설정입니다.

### **1단계: parent NFT 생성**

다음은 parent NFT를 생성하는 일반적인 코드 예제입니다.

**이 코드가 하는 일은 다음과 같습니다:**

#### **A. 새 KeyPair 객체 생성**

KeyPair 객체는 공개 키와 개인 키로 구성되며, 이를 nftMint 변수에 할당합니다. 이는 NFT의 mint(발행자)로 사용됩니다.

#### **B. findTriflePda 함수 호출**

다음으로, nftMint 객체의 공개 키와 updateAuthority 객체를 인수로 하여 findTriflePda 함수를 호출합니다. findTriflePda 함수는 해당 NFT의 Trifle 계정으로 사용될 프로그램 주소를 반환합니다.

#### **C. NFT의 create 메서드 호출**

다음 속성들을 가진 객체를 인수로 전달하여 Metaplex 객체의 NFTs 속성이 가진 create 메서드를 호출합니다:

- **URI** - NFT의 정적 URI로 사용될 문자열
- **name** - NFT의 이름을 나타내는 문자열
- **sellerFeeBasisPoints** - basis point 단위로 NFT의 seller fee를 나타내는 숫자
- **useNewMint** - NFT의 mint(발행자)로 사용될 nftMint 객체

**참고**: URI 문자열은 다음 항목들을 슬래시로 구분하여 연결해 구성됩니다:

- METAPLEX_BUCKET 상수
- TrifleAddress 배열의 첫 번째 요소
- 문자열 ".json"

create 메서드가 호출되고 나면, parent NFT를 나타내는 값을 반환합니다.

### **2단계: schema 정의**

schema는 데이터가 데이터베이스 안에서 어떻게 조직되는지를 나타내는 설계도입니다. Fusion에서 constraint model에는 **schema**라는 필드/슬롯이 있으며, 이는 NFT의 일부 속성이 어떻게 조직되는지를 결정합니다.

#### **각 schema 속성이 나타내는 것:**

- **type** - 어떤 유형의 schema인지를 나타냅니다
- **layers** - Trifle 계정 내의 다양한 슬롯을 나타냅니다
- **defaults** - Fusion의 메타데이터를 비교하고 결합할 때 사용할 기본 메타데이터를 보여줍니다

### **3단계: Trifle 계정 설정**

마지막 단계는 Trifle 계정을 설정하는 것이지만, [Metaplex 문서](https://docs.metaplex.com/programs/fusion/getting-started)에 따르면 Trifle 계정 설정을 위한 안내는 아직 제공되지 않고 있습니다.

## **오늘 Solana 개발을 시작하세요**

Metaplex의 Fusion은 Solana에서 조합 가능한 NFT를 만드는 데 사용됩니다. Solana 개발을 시작하려면, 지금 Alchemy에서 무료 [Solana RPC](https://www.alchemy.com/dapps/list-of/rpc-node-providers-on-solana) 노드 계정을 만들어 보세요!
