リンクコミュニティのサトシ・ナカモトより転載

一括転送は、特にトークンをエアドロップしたり、複数のアドレスにトークンを送信したりする場合に、Solana エコシステムで一般的な操作です。このチュートリアルでは、アカウント モデルの紹介、バッチ転送のコストなどを含め、Solana ネットワーク上でバッチ転送を実行する方法を説明します。

ソラナアカウントモデル

Solana には 3 種類のアカウントがあります。

  • データアカウント、データを保存するために使用されます

  • プログラム アカウント。実行可能プログラムを保存するために使用されます。

  • ネイティブ アカウントとは、「システム」、「ステーク」、「投票」など、Solana 上のネイティブ プログラムを指します。

データ アカウントは 2 つのカテゴリに分類されます。

  • システム内のすべてのアカウント

  • プログラム派生アカウント (PDA)

私たちが通常使用するウォレットアドレスは、システム内のすべてのアカウントに属しており、私たちは独自の秘密鍵で署名することができ、署名が正しいかどうかをシステムが検証します。資金の送金や通話契約など。

solana トークンのアカウント間の関係

イーサリアムシリーズでは、トークンの発行はスマートコントラクトを直接展開することであり、コントラクトに対応するアドレスがトークンアドレスとなります。しかしソラナは違います。

下の図は、solana トークンに対応する 3 つのアカウントを示しています。

で:

トークンプログラム:splトークンによって正式に展開されるプログラムアカウントおよび実行可能プログラムです。

mint アカウント: トークン プログラムを通じてユーザーが作成したトークン アカウントであり、トークン生成アドレスです。このアカウントには、トークンの供給、生成および凍結のアクセス許可のアドレスなど、トークンの基本情報が保存されます。トークンの 10 進数。

トークン アカウント: ユーザーのトークン アカウントを指します。各トークン所有者は特定のトークン アカウントを持ち、所有者の特定のトークンの残高と関連情報が記録されます。たとえば、Alice が USDT トークンと Slerf トークンの両方を所有している場合、彼女はそれぞれ 2 つのトークン アカウントを持ち、そのうちの 1 つは USDT の残高を記録し、もう 1 つは Slerf の残高を記録します。アカウントは、ユーザー アドレスとトークン アカウントをリンクすることによって作成されます。

実際、トークンをアドレスに送信すると、プログラムはまずユーザーのアドレスにあるトークンのトークン アカウントを計算し、残高データの変更をトークン アカウントに記録します。

ソラナアカウントレンタル

solana 経済モデルでは、トークン アカウントを確立するには、チェーンに一定のレンタル料を支払う必要があります。また、ユーザーは自分のアドレスでトークン アカウントを閉鎖して、レンタル料を回収することもできます。トークン資産が存在することに注意する必要があります。 0、そうでない場合は資産を失います。

Solana アドレスが特定のトークンを受け入れる場合、トークン情報、残高、その他の情報を保存するために、アドレスの下にトークン アカウントが作成される必要があります。受信者がトークン アカウントを持っていない場合、送信者は受信者のトークン アカウントを作成できます。

Solana のレンタルストレージ料金は 1 バイトあたり 0.00000348 SOL です。ウォレットのデータサイズは 586 バイトで、レンタル料金は約 0.002 SOL です。

一括転送のコスト

上記のアカウント モデルを理解することで、トークン転送トランザクションにかかる費用と、その費用がどこに費やされるかを知ることができます。

Slerf トークンを 10 個のアドレスに転送し、10 個のアドレスがトークンを受け入れなかった場合、コストは 0.02 ソルに転送のオンチェーン料金が加算されます。

これら 10 個のアドレスが以前に Slerf を受け入れた場合、転送コストは無視できるほどのオンチェーン料金にすぎません。


一括で送金する方法

プログラミングに慣れている場合は、Solana が公式に提供する SDK を使用できます。詳細な使用手順とサンプル コードについては、Solana の公式ドキュメントを参照してください。

以下は、プログラミングを行わずにバッチ転送を実行するツールの使用方法の詳細な紹介です。SlerfTools は、ネットワーク全体で最も安く、高速で便利な Solana ワンクリック ツールボックスです。コインの発行、オープンブック マーケット ID の作成、Raydium の流動性の作成をサポートします。 、流動性の削除、バッチトランザクションなど。

1. まず、SlerfTools のバッチ転送ページを開きます。

2. ウォレットをリンクした後、トークンアドレスと支払いアドレスリストを入力し、ファイルをアップロードすることでも支払いアドレスリストを完成させることができます。

3. 「次へ」をクリックすると、次の確認インターフェースが表示されます。

4. [トランザクションの送信] をクリックすると、転送が成功します。

5. 転送が成功すると、2 つの成功したトランザクション ハッシュが表示され、クリックしてブロック ブラウザーに表示できます。

オンチェーンのコストを節約し、オンチェーンの速度を上げるために、SlerfTools は転送の各バッチを 1 つのトランザクションに要約することに注意してください。
Solana はノード間のデータ送信の高速化を目的としているため、各トランザクションは 1232 バイトに制限され、そのサイズは ipv6 の 1 MTU 送信単位に制限されます。したがって、各バッチの転送数を制限する必要があります。

複数のテストを通じて、トランザクションあたりの転送数の最適な値は次のとおりであると結論付けました。新しいアドレス (つまり、以前にこのトークンを受信したことのないアドレス) の場合、古いアドレスの場合、各バッチ転送には最大 9 つの受信アドレスが含まれます。 (つまり、以前にこのトークンを受信したアドレス)、各バッチ転送には最大 19 個の受信アドレスを含めることができます。これらの推奨金額を超えて送金を試みると、失敗する可能性があります。

前者が少ない理由は、記事で述べたように、トークンの転送を受信するときに、このトークンを受信したことのないアドレスがトークン アカウントを作成する必要があり、これがトランザクション サイズの一部を占めます。