Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How to read a Token-2022 transfer hook before you move an NFT

2026年10月27日に「Dev.to」が公開したITニュース「How to read a Token-2022 transfer hook before you move an NFT」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

SolanaのToken-2022は「Transfer Hook」機能を導入した。これはNFT等のトークン移転時に特定のプログラムを実行し、移転を拒否できる。クリエイターロイヤリティ自動徴収に活用され、買い手やウォレットは移転前にルール確認が必要だ。これにより、クリエイターは作品がどこで取引されても収益を得られる。

ITニュース解説

NFT(代替不可能なトークン)の登場により、デジタルアートやコレクタブルの所有権をブロックチェーン上で証明できるようになり、クリエイターが作品を直接販売する機会が増えた。しかし、これまでのNFT市場では、作品が最初に販売された後、別のマーケットプレイスで二次流通(転売)された際に、元のクリエイターにロイヤリティ(印税や使用料)が自動的に支払われる保証が必ずしもなかったという課題が存在した。多くの場合、ロイヤリティの支払いは、利用するマーケットプレイスの裁量や善意に依存していたのである。

この状況を大きく変える可能性を秘めているのが、Solanaブロックチェーンで導入された「Token-2022」プログラムが提供する「Transfer Hook(転送フック)」という新しい機能である。Transfer Hookとは、NFTを含むトークンが、あるウォレットから別のウォレットへ転送されるたびに、あらかじめ設定された特定のプログラム(スマートコントラクト)を自動的に実行する仕組みのことだ。このプログラムは、トークンの転送を許可するかどうかを判断する権限を持つ。もしフックプログラムが転送を拒否すると判断した場合、そのトークンは誰が転送を試みても移動できなくなる。これにより、マーケットプレイスがどこであろうと、トークンの転送に特定のルールを強制的に適用することが可能になった。

Transfer Hookはいくつかの重要な要素で構成されている。まず、「TransferHook extension」は、トークンが発行されたMint(ミント、トークンの発行元アカウント)の中に組み込まれており、フックとして機能するプログラムのIDと、そのフックプログラムを変更できる権限を持つ者の情報を保持する。次に、「Hook program」は、ブロックチェーン上に独立して存在するプログラムであり、トークンが転送される際に実際に呼び出されて、転送の可否を判断するロジックを実行する。さらに、「Extra account list(追加アカウントリスト)」は、フックプログラムが正常に動作するために必要な追加のアカウント情報を、トークンの転送を試みるクライアント(ウォレットやマーケットプレイスなど)に伝える役割を持つ。そして、これらのフックを実行してトークンを転送するための命令がToken-2022の「TransferChecked」である。従来の「Transfer」命令ではフックが動作しないため、「TransferChecked」命令を使い、フックが必要とする追加アカウントを正しく指定することが必須となる。

トークンを安全に、そして意図した通りに扱う上で、そのトークンがTransfer Hookを持っているか、どのようなルールが設定されているかを知ることは非常に重要である。最初のステップは、対象のトークンがToken-2022プログラムによって発行されたものかを確認することだ。これは、トークンのMintアカウントの「所有者」を調べることで判断できる。もし所有者が従来のSPLトークンプログラムであれば、そのトークンにはTransfer Hookは存在しない。Token-2022トークンであることが確認できたら、次にMintに設定されているTransfer Hookの情報を読み取る。これにより、フックとしてどのプログラムが指定されているか、つまりどのようなルールが適用されるかがわかる。例えば、NFTのクリエイターロイヤリティを扱うオープンな標準であるWNS(Wen New Standard)では、特定のロイヤリティ分配プログラムがフックとして使われている。

さらに、フックの「programId(プログラムID)」だけでなく、「authority(権限)」も確認すべき重要な情報である。この権限が設定されている場合、将来的にフックのルールが変更される可能性があることを意味する。一方で、権限が設定されていなければ、そのフックは一度設定されたら変更されない固定のルールとなる。どちらが良い悪いというわけではなく、買い手やウォレット、マーケットプレイスといった利用者が、そのトークンが持つ潜在的なルール変更のリスクを知るために必要な情報である。

実際にTransfer Hookが設定されたトークンを転送する際には、通常の転送とは異なる特別な手順が必要となる。クライアントは、Token-2022プログラムが提供する「createTransferCheckedWithTransferHookInstruction」という関数を利用する。この関数は、フックプログラムが必要とする「Extra account list」をブロックチェーン上から自動的に取得し、それらの追加アカウントを転送トランザクションに含めてくれる。これにより、フックプログラムが適切に実行されるようになる。もしクライアントが手動で転送トランザクションを構築し、必要な追加アカウントの指定を忘れた場合、フックが正常に動作しないため、転送自体が失敗する。これは、フックがその役割を正しく果たしている証拠であり、バグではない。転送トランザクションがブロックチェーンに送信され、フックプログラムによって転送が拒否された場合、そのトランザクション全体が失敗し、トークンは移動しない。このように、Transfer Hookはトークンの転送ルールを強制的に適用する強力な手段となる。

このTransfer Hookの技術は、NFTのクリエイターロイヤリティ問題解決に留まらない、幅広い可能性を秘めている。クリエイターは、自分の作品がどのように使われるか、その作品が転売された際に誰に利益が還元されるかといったルールを、マーケットプレイスの善意に頼るのではなく、作品そのものに組み込むことができるようになった。購入者は、トークンを購入する前に、どのようなルールが適用されるのかを簡単に確認できるため、より安心して取引を行える。ウォレットやマーケットプレイスなどのサービス提供者も、これらのルールを機械的に読み取り、自動的に検証することで、誤った転送を防いだり、ユーザーに適切な情報を提供したりすることが可能になる。NFT以外にも、特定の条件を満たす所有者間でのみ転送できるチケットやライセンス、音楽や写真のロイヤリティ管理など、トークンの転送に何らかのルールを適用したいあらゆる場面に応用できる、非常に汎用性の高い仕組みである。

しかし、Transfer Hookは強力な仕組みである一方で、いくつかの留意点も存在する。フックプログラムは、そのコードに書かれた通りに動作するため、もしプログラム自体にバグや設計ミスがあれば、意図しない挙動や問題を引き起こす可能性がある。そのため、フックプログラムのソースコードを十分に確認し、専門家による監査が行われているかを確認することが重要である。また、Transfer Hookを利用する際には、通常のトークン転送よりも多くの計算リソース(ブロックチェーンの手数料)や追加のアカウントが必要となる場合がある。これにより、一部の古いツールやウォレットでは、Transfer Hookが設定されたトークンの転送に対応できない可能性もあるため、注意が必要だ。この技術はまだ新しい側面も多く、今後の発展と普及が期待される。

関連コンテンツ

関連IT用語

関連ITニュース