ブロックチェーン/レベル VIII · ミームコインの時代/8.2 Solana/レッスン 1
SPLトークンとアカウント
すべての残高がキーとなっている台帳
用意するものSolanaのブロックエクスプローラー(SolscanまたはSolana Explorer)複数のトークンを保有しているウォレットのアドレス供給状況と権限状態を記録するノート
問い
- トークンを保有するために、なぜ別のアカウントを作成し、資金を供給する必要があるのでしょうか?
- 2つのウォレットが同じミントのトークンを保有していても、互いの残高が相手の状態更新に干渉しないのは、どのような仕組みによるのでしょうか?
- 「ミント権限」の鍵を紛失した場合と、鍵が漏えい・侵害された場合とでは、供給量にどのような違いが生じるのでしょうか?
探究
- Solanaでは、システム内のあらゆるオブジェクトがアカウントです。アカウントは、ランポート(ネイティブ通貨SOLの単位)の残高、任意のデータ、そしてそのデータをどのように変更できるかを決めるオーナープログラムを保持します。1 SOLは10億ランポートに相当します。コントラクトが自らのストレージを持つEthereumとは異なり、Solanaのプログラムは状態を一切保持せず、渡されたアカウントに対して処理を行います。
- この分離によって、極めて高い並列性が実現します。1万人のユーザーが同時にトークンを送金しても、各ユーザーが操作するのは異なるメモリアドレス、つまりそれぞれ個別のトークンアカウントです。これらのアカウントは変更可能な状態を共有しないため、ネットワークは競合なく同時に処理できます。一方、人気の取引プールのように1つの共有アカウントに処理が集中する場合は、依然として順番待ちが発生します。Solanaがアカウント単位で混雑に価格をつけているのはこのためです(後のレッスンで扱います)。
- トークンはSPL Tokenプログラムによって管理されます。「Mint」アカウントはトークンのアイデンティティ、すなわち総供給量、小数点以下の精度、そして2つの重要な権限を定義します。「ミント権限」は新しいトークンを発行して供給量を増やすことができます。「フリーズ権限」は特定のユーザーアカウントをロックし、送受信をできなくすることができます。これらの権限は任意であり、多くのプロジェクトでは両方を取り消しています。ミント権限を取り消すと供給量が固定され、フリーズ権限を取り消すと誰もホルダーをフリーズできなくなります。
- 各ウォレットは、トークンごとに別々の「トークンアカウント」で保有します。ほとんどのユーザーにとって、これは公開鍵とミントのアドレスから確定的に導出される「Associated Token Account(ATA)」です。この導出方式により、ATAのアドレスは予測可能になります。誰が何を保有しているかがわかれば、チェーンに問い合わせなくてもその保管先を計算できます。アカウントは「レント免除(rent-exempt)」となるだけの十分なランポートを保持する必要があります。これは一度きりのデポジットで、アカウントを閉じると返還されます。
- Token-2022は、標準的なSPLトークンにはないオプション機能でこのモデルを拡張します。送金手数料に対応しており、各送金額の一定割合を、設定された上限まで受取人のトークンアカウント内に留保し、指定された権限者が回収できるようにします。また、スワップや送金の際にカスタムロジックを実行する「トランスファーフック(transfer hooks)」も利用できます。これらの拡張は複雑さを増しますが、これまで外部のミドルウェアなしにはオンチェーンで実現できなかったロイヤリティやコンプライアンスチェックの仕組みを提供します。
- トークンのプロパティを確認するには、SolscanやSolana ExplorerなどのSolanaエクスプローラーを開きます。任意のミントアドレスを検索します。インターフェースには、総供給量、小数点以下の桁数、そしてミント権限がまだ有効か(つまり新しいトークンを作成できるか)、それとも取り消されているかが表示されます。フリーズ権限が有効な場合、その保持者は任意のウォレットのトークンアカウントをフリーズすることができます。これらの情報を確認することで、1つの単位も移動する前に、トークンの設計に内在する中央集権化のリスクを把握することができます。
重要な事実
- すべてのSolanaアカウントは、ランポート(1 SOL=1,000,000,000ランポート)、データ、オーナープログラムを保持しています。
- SPL TokenのMintアカウントは、供給量、小数点以下の桁数、ミント権限、フリーズ権限を定義します。
- Associated Token Accountは、ウォレットアドレスとミントアドレスから確定的に導出されます。
- アカウントが閉じられずにネットワーク上に存続するには、レント免除に必要な残高を維持しなければなりません。
- Token-2022は、標準的なSPLトークンにはない送金手数料やフックといったオプションの拡張機能を導入しています。
- Solana上のプログラムはステートを保持せず、引数として渡されたアカウント内のデータを変更するだけです。
演習 九・六・三・一
9集める最近のアクティビティから、トークンのミントを9つ挙げてください。それぞれについて、decimals(小数点以下の桁数)、ミント権限が有効か取り消し済みか、フリーズ権限が存在するかを記録してください。
6まとめる9つを権限構造に基づいて6つに分類してください:フリーズ権限のない固定供給、可変供給、アカウントのフリーズが可能、送金手数料が有効、フックが有効、その他の構成。
3絞り込む6つのグループを、発行者がホルダーの資産をどこまでコントロールできるか、そして将来の供給インフレという観点から、3つの異なるリスクプロファイルにまとめてください。
1結晶化する「放棄された(renounced)」ミント権限は柔軟性を失うにもかかわらず、なぜ長期ホルダーにとって有効なミント権限より安全だと考えられるのかを、1文で説明してください。
事実確認
日付、数字、主張は、下記に記載された公表資料と照合して確認しました。