コンテンツへスキップ
0%

セミファンジブルトークン(SFT)とは?

執筆者 Pragat

2023年1月26日 公開読了時間 2 分

セミファンジブルトークン(SFT)はファンジブルトークン(FT)とノンファンジブルトークン(NFT)の特性を組み合わせたもので、Solanaブロックチェーンにおいては比較的新しいイノベーションです。SFTは現在ゲームやメタバースのアプリケーションで使用されており、将来的には他にも多くの用途があると見込まれています。

セミファンジブルトークンという概念は、もともとEthereum上のERC1155マルチトークン規格で生まれたもので、現在はSolana上でSFTとして存在しています。Solana上でSFTがどのように機能するかを理解するには、ロジックとデータをData AccountとProgram Accountに分けるブロックチェーンのアーキテクチャ、およびSolanaのToken Metadataプログラムについて理解する必要があります。

SFTはファンジブルトークンやノンファンジブルトークンとどう違うのか

セミファンジブルトークンは、そのライフサイクルの異なる時点でファンジブルトークンとノンファンジブルトークンの性質を示します。初期段階では、SFTはファンジブルトークンのように機能し、同一のトークンとの間で価値を失うことなく交換できます。一度使用されると、交換価値を失い、収集可能なノンファンジブルトークンの属性を獲得します。

NFTではなくSFTを使う主な利点は何か

SFTは特定の文脈においてNFTよりも好ましいとされます。これは、より効率的でコスト効果が高く、柔軟性があり、トランザクションのセキュリティも向上しているためです。

1. 可逆的なトランザクション

SFTをNFTより優先して使う上でおそらく最も重要な利点は、誤ったアドレスへのトークン取引が取り消し可能で返金できることです。

2. より効率的でコスト効果が高い

個別に転送する必要があるNFTとは異なり、SFTはバッチ転送をサポートしています。これにより、複数のSFTを1回のプログラム呼び出しで転送でき、時間の節約とトランザクションコストの大幅な削減が可能になります。

3. セキュリティの向上

SFTは、既存のNFT規格を改良することで、高度に安全な転送を可能にしています。

SFTは何に使われるのか

現在、SFTは主にゲームやメタバース環境で使用されており、オンチェーンのアクティビティをゲーム内アセットに紐付けることができます。ここでは2つの例を見てみましょう。同一NFTの多数のユニットの管理と、ゲーム内の実績の記録です。

1. GenopetsのSFT事例

GenopetsはSolanaブロックチェーン上のNFTゲームで、NFTとSFTの両方を活用しています。プレイヤーはユニークなペットをNFTとして購入でき、収集する豊富な資源(木材、水、クリスタル、金属など)はSFTとして利用できます。

SFTはNFTゲームにおいて好ましいとされます。プレイヤーが複数のアセット(例:水のクリスタル15個)を1回のトランザクションで売買できるためです。ファンジブルトークンは複数のアセットを1つのプログラム(すなわちスマートコントラクト)内に収めることができるため、その転送は個別に処理される標準的なNFTよりも輻輳が少なく、トランザクション手数料も低くなります。

2. ゲーム内実績の事例

SFTはゲームの履歴を記録する上でも有用です。例えば、ゲーム内の武器をSFTとして作成し、その武器が使用されるにつれてNFTの特性を獲得し、記録されたゲーム内履歴によって新たなユニークアイテムになります。

そのアイテムが時間の経過とともに持ち主を変える中で、新たな履歴が保存されていきます(例:その武器が使用された回数、他のプレイヤーを倒すために使われた回数など)。これはweb2のビデオゲームにおける従来の武器の特性と同様です。

SolanaでSFTはどのように機能するのか

Solana上のSFTは、ゲームやメタバース環境における特性を表現するためにトークンにメタデータが付加された、独自のタイプのアカウントとして動作します。

Solana上でのSFTの機能は、このブロックチェーン独自のアーキテクチャ、具体的にはロジックとデータをプログラムとデータアカウントという2つの異なる要素に分けている点、およびToken Metadataプログラムと関係しています。

Solanaにおけるプログラムとアカウントとは何か

ほとんどのブロックチェーンとは異なり、Solanaはロジックとデータをプログラムとアカウントという2つの異なる要素に分けています。Solidityのスマートコントラクトのように変数にデータを保存するのではなく、Solanaのプログラムはデータアカウントに保存された外部データとやり取りし、それを変更する能力を持っています。

この独自の構造により、Solanaのプログラムは複数のアカウントにアクセスしながら並列実行できるため、非常に高いパフォーマンスを発揮します。実行コードとデータアカウントの分離により、Solanaのプログラムは特定のデータに本質的に紐付けられていないため、よりモジュール性が高くなっています。

Solanaのアカウントは、特定のアドレスに保存されたバイト配列です。アカウントのアドレスは、暗号鍵ペアの公開鍵として定義できます。アカウントにサインインするには、プログラムはその鍵ペアの秘密鍵にもアクセスできる必要があります。一部のタイプのプログラムは、そのアカウント内のデータを変更する能力を持っています。

新規に作成されたアカウントは、通常、そのアカウントのオーナーとしてマークされたプログラムによって初期化されます。プログラムはアカウントに割り当てられるデータの構造を定義し、そのアカウントへの命令を提供する役割も担っています。

Solanaにおけるアカウントの種類には以下のものがあります:‍

  1. Mint Account - トークンのグローバルな情報を保存する
  2. Token Account - ユーザーのWallet AccountとMint Accountの関係を保存する
Solanaのアカウントタイプの図:Mint AccountsとToken Accounts
出典:Metaplex Documentation

プログラム派生アドレス(PDA)は、Solanaの他のアカウントとどう違うのか

PDAは、暗号鍵ペアの一部を構成するのではなく、そのアカウントを所有するプログラムの公開鍵からアルゴリズムによって派生したアカウントアドレスです。

PDAに配置されたアカウントは、そのアドレスが生成されるもととなった特定のプログラムによって制御されるように設計されています。Program Derived Addressesはプログラムの公開鍵からアルゴリズムによって生成されるため、2つの異なるプログラムが同じPDAを生成することは不可能です。

PDAには重要な用途がいくつかあります。例えば、プログラムがCross-Program Invocationsに署名できるようにすることや、決定論的に導出可能な複数のアカウントを1つのアドレス内に作成できるようにすることなどです。

SolanaにおけるToken Metadataプログラムとは何か

SolanaにおけるToken Metadataプログラムの目的は、トークンに追加のメタデータを付加できるようにすることです。というのも、Mint Accountが保存できるデータの量とタイプには限りがあるためです。

Token MetadataプログラムはMetaplexプロトコルの一部であり、これはもともとSolana上でのNFT作成を簡素化するために開発されました。しかし、このプログラムはSFTとも連携して動作します。

Mint Accountが保存するトークンに関するデータ属性は、現在の供給量や権限など、わずかなものに限られています。Mint Accountは、アプリやマーケットプレイスが使用する他のデータを保持することができません。この制限を克服するため、Token Metadataプログラムは、Mint Accountのアドレスから派生したPDAに配置されるMetadata Accountを提供します。Metadata Accountには多くの有用な属性が組み込まれており、通常のオンチェーントークンをデジタルアセットにすることができます。

Mint Accountアドレスから導出されたPDAにあるSolana Metadata Accountの図
Metadata Account

JSON規格とは何か

JSON規格は、オンチェーンで追加データを保存する際にかかる手数料を節約するために、オフチェーンで保存されるデータをトークンに追加する方法です。Metadata AccountのURI属性は、一定の規格に従ってトークンに関する有用な情報を保存するオフチェーンのJSONファイルにリンクしています。

JSONファイルが更新できないようにするには、Arweaveのような永続的なストレージソリューションを使って保存することができます。さらに、Metadata AccountのIs Mutable属性を使えば、URI属性やその他の属性が変更されるのを防ぐことができます。

オフチェーンのJSONオブジェクトにリンクするMetadata Account URIの図
オフチェーンJSONオブジェクト

Token MetadataプログラムはSolana上のSFTにとってどのような意味を持つのか

Token Metadataは、Solana上のSFTが武器のようなメタデータの多いオブジェクトとして、ゲームやメタバース環境で機能するようになる仕組みです。

SolanaにおけるSemi-fungible Tokenは、以下の2つの特性を持つMint Accountで構成されます。

  1. 供給量が0以上である(例:流通しているトークンが1つより多い)
  2. 小数点以下の桁を持たない(例:整数のみ)

Metadata Accountの追加により、Token Standard属性を通じてトークンのファンジビリティが管理されます。この属性はプログラムによって自動的に割り当てられ、手動で更新することはできません。さらに、FungibleAsset属性がSFTのトークン規格を表します。

SFT用のFungibleAssetトークン標準属性の図
SFT用のトークン標準

Metadata Accountには、例えばそのSFTを特定のゲーム内武器として特定するための他の重要な情報も含まれています。この情報には、JSON規格の下でURI属性を使ってオフチェーンで保存できるアニメーションやロゴが含まれます。

Field
Type
Description

name

string

アセットの名前。

symbol

string

アセットのシンボル。

description

string

アセットの説明。

image

string

アセットのロゴを指すURI。

animation_url

string

アセットのアニメーションを指すURI。

external_url

string

アセットを定義する外部URL(例:ゲームのメインサイト)を指すURI。

attributes

array

アセットの特性を定義する属性の配列。

trait_type

string

属性のタイプ。

value

string

その属性の値。

Solana SFTメタデータのJSON例
Solana SFTメタデータのJSON例

SFTはWeb3の未来にとってどのような意味を持つのか

SFTのハイブリッドな性質は、コスト効果が高く高機能な形で、さまざまな環境における複雑なデジタルアセットの表現方法として、トークンの新たな可能性を切り開いてきました。

ゲームやメタバースのユースケースがSFTの最も一般的な用途ではありますが、柔軟性の向上や、データをオフチェーンで保存することによるコスト削減の機会から、多くの注目を集めています。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。