Solanaの関連トークンアカウント(ATA)とは?
Solanaウォレットには公開アドレスがありますが、多くのトークンは通常のSOL残高を保管するアカウントに直接保存されているわけではありません。トークンアカウントに記録されます。関連トークンアカウント、略してATAは、特定のトークンミントに対するウォレットの保有分について、アプリが使う標準のアドレスです。
この区別を理解すると、トークン購入時にストレージ預託金が必要になる理由や、残高をすべて売っても空のアカウントが残る理由がわかります。また、アカウント再作成にトークンシンボルだけでは不十分な理由も説明できます。
Solanaの関連トークンアカウントとは?
関連トークンアカウントは、ウォレットアドレス、トークンプログラム、ミントアドレスから導出される標準のトークンアカウントです。そのミントのトークンを、ウォレットのトークンアカウント権限者のために保存します。アドレスは予測できますが、作成には該当するオンチェーンストレージ準備金を賄うSOLが必要です。
Solanaのアカウント作成のドキュメントは、決定的に導出されるアドレスと、トークン所有者とプログラム所有者の違いを説明しています。Associated Token Programがアカウントを作成し、作成されたトークンアカウントは該当するToken Programの管理下に置かれます。
ウォレット、ミント、ATAはどう違いますか?
トークン保有を確認するときは、三つの項目を分けて扱ってください。
| アカウントまたはアドレス | 確認できること |
|---|---|
| ウォレットアドレス | この保有分をどのウォレットが管理しているか |
| ミントアドレス | 正確にはどのトークンか |
| トークンアカウントアドレス | この所有者の、そのミントの数量がどこに記録されているか |
ATAは、標準の導出方法で選ばれる特定のトークンアカウントです。ウォレットはほかのトークンアカウントを管理することもあります。したがって「トークンごとに一つのアカウント」という簡単な説明は入門には便利ですが、実際の資産一覧を調べる際には不十分です。
例として、無関係なミントがどちらもCATというシンボルを使っている場合を考えましょう。シンボルが同じでも別のトークンです。ミントアドレスが異なるため、関連アカウントも異なります。閉鎖、送金、再作成するアカウントを選ぶ際は、必ずミントを照合してください。
ATAを作成するとSOLが拘束されるのはなぜですか?
アカウントはオンチェーンストレージを消費するため、作成時に最低限のlamport残高が必要です。レント免除アカウントでは、その残高は毎日引かれる利用料ではなくストレージ預託金として機能します。確認時にはトークン数量とlamport残高を別々の値として扱います。
従来のトークンアカウントには一般的な基本レイアウトがありますが、Token-2022の拡張機能ではさらに容量が必要になることがあります。ネットワークのレント設定も変わり得ます。したがって、古いチュートリアルの金額は、今後のすべてのATAの恒久的な見積もりでも、既存アカウントから戻る正確な金額の予測でもありません。
アプリの現在のトランザクションプレビューを使ってください。開発者は過去の金額を固定値で埋め込まず、必要なアカウントサイズを求めて最新の準備金を問い合わせるべきです。レント免除のRPCメソッドは、データ長を入力として受け取ります。
アカウント作成の費用はだれが払いますか?
トランザクションが作成費用の支払者を指定します。自分の場合も、送信者の場合も、受取アカウントを準備するアプリの場合もあります。トークンを受け取ったからといって、元の預託金を自分のウォレットが支払ったとは限りません。
この区別は返還額の確認でも重要です。解放されるlamportsの宛先は、アカウントの権限に基づく閉鎖操作で決まります。作成時に最初に資金を出した人へ、領収書に基づき自動返金されるものではありません。
通常のウォレット整理では、受取アドレスとウォレットの予想変化を確認します。元の購入トランザクションだけから判断しないでください。回収可能額とその行き先を決めるのは、現在のアカウント残高と実際の閉鎖命令です。
売却後も空のATAが開いたままなのはなぜですか?
トークンの移動とアカウントの閉鎖は別の操作です。数量が移動した後も、アカウントは今後の受取用に残る場合があります。あるアプリが閉鎖するかどうかは、そのアプリが構築するトランザクション次第です。
このため、売却が完了していても空のアカウントが残ることがあります。残高ゼロのアカウントにトークンのポジションは残っていませんが、lamportsはストレージに割り当てられたままの場合があります。読み取り専用の資産一覧の確認で、何も破壊せずにこうしたアカウントを見つけられます。
トークン残高ゼロと、丸められたドル表示を混同しないでください。少量の残高や価格フィードのないトークンも、保有トークンです。バーンと閉鎖の違いでは、それにより承認する操作が変わる理由を説明しています。
トークンをバーンせずにATAのレントを回収できますか?
空で閉鎖条件を満たすアカウントなら、残高のバーンなしで閉鎖できます。Sol Incineratorの非破壊的な回収フローでは、署名前に候補と現在の回収額を確認できます。
維持したい対応アカウントでは、権限に基づく余剰分の引き出しで、トークンデータを変えずに現在の準備金を超えるlamportsを回収できる場合があります。これは閉鎖で残りの残高を回収する方法とは別です。開いたまま維持するために必要な準備金は引き出せません。
保有を維持したい場合は、アカウントを閉鎖せずに余剰SOLを回収するを確認してください。トークン保有は、そのミントやメタデータに関係するすべてのアカウントからSOLを引き出す権限を与えるものではありません。
同じトークンを再び受け取るとどうなりますか?
閉鎖したアカウントは再作成が必要になる場合があります。関連アドレスは同じ入力から導出されますが、アカウントの存在とストレージ資金は改めて準備しなければなりません。送金や請求時に受取アカウントを準備するアプリもあれば、事前準備が前提のものもあります。
そのアカウントが明確に必要なときは、対応ミント用のReopen Token Accountツールを使ってください。ミントとウォレットを確認してから作成費用を確認します。再作成しても、バーンしたトークンや送金済みのトークンは戻りません。
操作前にATAを確認するには?
ウォレットアドレス、ミント、トークンプログラム、トークン数量、アカウント状態、lamport残高を記録します。次に、維持する、対応する余剰分を回収する、空のアカウントを閉鎖する、という目的をわかりやすい言葉で明確にしてください。
この小さな整理で、同じシンボルの別ミントを選ぶ、NFTのストレージ全体を一つのATAだと思う、アセットに関連するSOLはすべて保有者が引き出せると考える、といった誤りを防げます。実際に管理しているアカウントに合う操作を選びましょう。
関連記事
よくある質問
Solanaの関連トークンアカウントとは何ですか?
関連トークンアカウントは、ウォレット、トークンプログラム、トークンミントから導出される標準のトークンアカウントアドレスです。そのミントの数量をトークンアカウント所有者のために記録します。ウォレットアドレスやミントアカウントとは別であり、作成にはオンチェーンストレージ用の資金が必要です。
ATAのレントはSolanaの定期料金ですか?
いいえ。レント免除のATAは、定期的な料金を請求するのではなく、返還可能なストレージ残高を保持します。必要な最低額はアカウントサイズとネットワーク設定によって決まります。対象アカウントの閉鎖で残りのlamportsが解放される一方、権限に基づく余剰分の引き出しでは、必要準備金を超える対応可能な残高だけを回収できます。
Solanaのトークンごとに別のATAが必要ですか?
ATAはウォレット、トークンプログラム、ミントの組み合わせに固有です。そのためミントが異なれば関連アドレスも異なります。ウォレットは関連付けによらないトークンアカウントを管理することもあり、圧縮NFTは別のストレージモデルを使います。表示されるアセットすべてに標準ATAのレント預託金があるとは考えないでください。
