---
title: "MetaplexのFusionツールとは?"
description: "Metaplex製Fusionの概要、仕組み、ユースケースを解説"
---

# MetaplexのFusionツールとは?

Solanaのローンチパッドである[Metaplex](https://www.alchemy.com/dapps/metaplex)は、クリエイターがNFTをローンチ・拡大するのを支援しており、そのFusionプログラムはこのビジョンをさらに発展させるものです。FusionはMetaplexがSolanaブロックチェーン上のクリエイター向けに[NFT](https://www.alchemy.com/overviews/solana-nft-analytics-tools)まわりの機能を拡充する取り組みの一つです。この記事では、Fusionプログラムの仕組みとそのセットアップ方法について詳しく解説します。

## **Fusionとは何か？**

**Fusionは、Trifleプログラムを基盤とするNFT合成機能であり、個々のコンポーネントに基づいてNFTを再構成・再配置できるようにするものです。TrifleプログラムはMetaplexの中でも最もよく使われているプログラムの一つである[Token metadata](https://www.alchemy.com/overviews/metaplex)を拡張したものです。** Token metadataに対して、Trifleは柔軟性、複雑な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はTrifleを使用しています。TrifleはToken Metadataプログラムの拡張として構築されたNFT合成プログラムです。** Fusionプログラムは複数のMetaplexプログラムから構成されており、Solana上に構築されたNFTにさらなる機能をもたらすために作られています。Fusionは[アプリ](https://www.alchemy.com/dapps/top/defi-dapps)やNFTマーケットプレイスを強化するために使用でき、クリエイターがNFTの取引や所有権に関するルールを指定できるようにもします。

## **Trifleプログラムとは何か？**

**MetaplexのToken Metadataプログラムの拡張であるTrifleプログラムは、Creator-Owned Accountsを利用してNFTの合成性を実現しています。これはToken metadataプログラムを拡張したNFTエスクローアカウントの一種です。**

エスクローアカウントには2種類あり、TOE（Token owned escrow）とCOE（Creator owned escrow）です。TrifleプログラムはCOEを使用し、[Program Derived Address (PDA)](https://www.alchemy.com/overviews/program-derived-address)をNFTの作成者として指定することで、PDAに作成者に与えられる特典や機能、およびオンチェーン追跡などの他の機能を付与します。

### **トークン所有権ルールとは何か？**

これは、クリエイターが設定できるトークン所有に関するルールと制約の3種類のことで、none、Metaplex certified collections、Token setがあります。他のすべての制約は、これら3つの主要なタイプに含まれます。

#### **1. None**

これは要件やルールが不要な場合に設定され、あらゆるトークンの転送を許可します。ゲートパスなしでイベントにゲストを入場させるようなものと考えてください。

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

これはトークンが特定のコレクションに属することが求められる場合に設定されます。

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

これはミントされたトークンがセット内のいずれか1つのトークンと一致することが求められる場合に設定されます。

## **Fusionで使用されるSolanaアカウントとは何か？**

Metaplex Fusionは2つのアカウント（Token metadataプログラム/コントラクトの拡張であるescrow constraint model accountとTrifle account）を使用します。

### **escrow constraint model accountとは何か？**

**escrow constraint model accountは、Trifle accountにアクセスするための命令を使用する前に満たす必要のある要件を規定します。** Escrowアカウントはハッシュマップを使用してそのデータ構造を実装しており、キーをハッシュ関数に通すことで値にマッピングしています。

escrow model accountでは、キーはConstraint/slot名であり、値はconstraint type（None/Collection/TokenSetのいずれか）とToken limit（エスクローアカウント内のトークンの最大数）です。

constraint model accountの特徴的な機能として、類似したユースケースを持つNFTを同じescrow constraint modelに接続できることが挙げられます。さらに、constraint modelはTrifleユーザーが各命令に対して支払う手数料を保管する銀行としても使用できます。

### **trifle accountとは何か？**

**Trifle accountは、オンチェーン上でCOEアカウントに保管されているトークンを管理・追跡し、実行時にEscrow constraint accountとリンクされます。** Trifle accountはハッシュマップを使用してこれらのトークンを管理します。

#### **escrow constraintおよびtrifle accountに関連する命令：**

1. **Create Escrow Constraint Model Account** - escrow model accountを作成する
1. **Create Trifle Account** - Trifle accountを作成するために使用する
1. **Transfer In** - Trifle accountが管理するCOEにトークンを転送するために使用する
1. **Transfer Out** - Trifle accountが管理するCOEからトークンを転送するために使用する

transfer in命令は、転送されようとしているトークンが指定された要件を満たしているかをconstraint modelに照らして検証し、transfer out命令は、転送されようとしているトークンが指定された要件を満たしているかをconstraint modelに照らして検証します。

## **Metaplex Fusionの使い方**

プログラムレベルでは、Fusionの使用は3つのステップから成ります。親NFTの作成、NFTのスキーマの定義、そしてTrifle accountのセットアップです。

### **ステップ1：親NFTを作成する**

以下は、親NFTを作成する典型的なコード例です。

**このコードが行っていること：**

#### **A. 新しいKeyPairオブジェクトを生成する**

KeyPairオブジェクトは公開鍵と秘密鍵から構成されており、これをnftMint変数に割り当てます。これはNFTのmint（発行者）として使用されます。

#### **B. findTriflePda関数を呼び出す**

次に、nftMintオブジェクトの公開鍵とupdateAuthorityオブジェクトを引数としてfindTriflePda関数を呼び出します。findTriflePda関数はプログラムアドレスを返し、これがそのNFTのTrifle accountとして使用されます。

#### **C. NFTのcreateメソッドを呼び出す**

Metaplexオブジェクトのnftsプロパティのcreateメソッドを呼び出し、以下のプロパティを持つオブジェクトを引数として渡します：

- **URI** - NFTの静的URIとして使用される文字列
- **name** - NFTの名前を表す文字列
- **sellerFeeBasisPoints** - NFTの販売手数料をベーシスポイントで表す数値
- **useNewMint** - NFTのmint（発行者）として使用されるnftMintオブジェクト

**注意**：URI文字列は、以下の項目をスラッシュで区切って連結することで構成されます：

- METAPLEX_BUCKET定数
- TrifleAddress配列の最初の要素
- 文字列".json"

createメソッドが呼び出されると、親NFTを表す値が返されます。

### **ステップ2：スキーマを定義する**

スキーマとは、データベース内でデータがどのように整理されているかを示す設計図です。Fusionでは、constraint modelに**schema**というフィールド/スロットがあり、これがNFTの一部の属性の整理方法を決定します。

#### **各スキーマ属性が表すもの：**

- **type** - スキーマの種類を表す
- **layers** - Trifle account内の異なるスロットを表す
- **defaults** - Fusionのメタデータを比較・結合する際に使用するデフォルトのメタデータを示す

### **ステップ3：trifle accountをセットアップする**

最後のステップはTrifle accountをセットアップすることですが、[Metaplexのドキュメント](https://docs.metaplex.com/programs/fusion/getting-started)によると、Trifle accountのセットアップ手順はまだ公開されていません。

## **今すぐSolana開発を始めよう**

Metaplex FusionはSolana上で合成可能なNFTを作成するために使用されます。Solana開発を始めるには、今すぐAlchemyで無料の[Solana RPC](https://www.alchemy.com/dapps/list-of/rpc-node-providers-on-solana)ノードアカウントにサインアップしましょう！
