一般

請求可能なSPLトークンエアドロップの作成

Last updated January 6, 2025

概要

Gumdropは、請求可能なエアドロップの作成を可能にするSolanaプログラムです。トークンをウォレットに直接送信する直接エアドロップとは異なり、Gumdropはユーザーが能動的に自分の配当を請求しなければならない請求メカニズムを作成します。このアプローチにはいくつかの利点があります:

  • 実際に請求するユーザーにのみトークンを転送し、請求者がトランザクションのコストを負担することでコストを削減
  • さまざまな方法を通じてユーザーアイデンティティの検証を可能にする
  • 配布方法(ウォレット、メール、SMS、Discord)の柔軟性を提供
  • 未請求トークンの回収機能付きの時間制限請求を可能にする

このガイドでは、Gumdropを使用して請求可能なSPLトークンエアドロップを作成する方法を説明します。

仕組み

  1. Gumdropを作成する際、配布リストからマークル木が生成されます
  2. マークルルートは、Gumdropプログラムの一部としてオンチェーンに保存されます
  3. 各受信者は、木における自分の位置から派生した固有のマークル証明を取得します
  4. 請求時に、証明がオンチェーンルートと照合され、以下を確認します:
    • 請求者が元の配布リストに含まれている
    • 正しい数のトークンを請求している
    • 以前に請求していない

前提条件

  • Node.js 14
  • Solana CLIツールのインストール
  • SPLトークンとSolanaブロックチェーンの基本的な知識
  • トランザクション手数料用の資金があるウォレット

必要なツール

Gumdrop CLIをインストールします:

git clone https://github.com/metaplex-foundation/gumdrop
yarn install

SPLトークンの作成

まず、配布されるSPLトークンを作成します。私たちのガイドに従うか、sol-tools.ioなどのツールを使用できます。

トークン数量

配布リスト全体をカバーするのに十分なトークンと、テスト用のバッファを必ず作成してください。

配布方法

ユーザーに証明を配布するために、Gumdropは複数の配布方法をサポートしています。ウォレットベースの配布は以下の理由で推奨されています:

  • より高い信頼性
  • 簡単な実装
  • 外部サービスへの依存がない
  • 直接的なウォレット検証

ウォレット配布の場合、以下のいずれかが必要です:

  • 既存のDiscord Botの一つを使用して、必要な証明データを含む請求URLをユーザーに送信する。 または:
  1. ウォレットアドレスでインデックス付けされた請求データをデータベースに保存する
  2. ユーザーがウォレットを接続した際に請求データを取得するフロントエンドを作成する
  3. 請求データを使用してオンチェーン請求トランザクションを実行する

その他の配布方法は:

  • AWS SESを通じたメール
  • AWS SNSを通じたSMS
  • Discord APIを通じたDiscord

配布リストの設定

SPLトークンの作成後、配布リストを作成する必要があります。このリストは、誰がトークンを請求でき、その数量を定義します。このデータは以下のために使用されます:

  1. 各受信者に固有の請求証明を生成する
  2. ルートが検証のためにオンチェーンに保存されるマークル木を作成する
  3. リストに記載された受信者のみが正確な配当を請求できるようにする

配布リストを含むJSONファイルを作成します:

[
{
"handle": "8SoWVrwJ6vPa3rcdNBkhznR54yJ6iQqPSmgcXVGnwtEu",
"amount": 10000000
},
{
"handle": "GjwcWFQYzemBtpUoN5fMAP2FZviTtMRWCmrppGuTthJS",
"amount": 5000000
}
]

トークン数量

数量は小数点以下なしで指定する必要があります。例えば、6桁の小数点を持つミントの10トークンをドロップしたい場合、10000000(10 * 10^6)を指定します。

handleは以下のいずれかになります:

  • 直接配布のためのウォレットアドレス 推奨
  • AWS SES配布のためのメールアドレス
  • AWS SNS配布のための電話番号
  • Discord配布のためのDiscordユーザーID

Gumdropの作成

事前にダウンロード・インストールしたGumdrop CLIを使用してエアドロップを作成します。コマンドは次のようになります:

ts-node gumdrop-cli.ts create \
-e devnet \
--keypair <KEYPAIR_PATH> \
--distribution-list <PATH_TO_JSON> \
--claim-integration transfer \
--transfer-mint <TOKEN_MINT> \
--distribution-method <METHOD>

Gumdropキーペア

CLIはキーペアを含む.logフォルダを作成します。Gumdropアカウントを閉じて未請求トークンを回収する際に必要になるので保存してください。

請求インターフェースのホスティング

ユーザーは自分のトークンを請求するためのフロントエンドインターフェースが必要です。以下のいずれかを選択できます:

  1. https://gumdrop.metaplex.comでホストされているバージョンを使用する

  2. 独自のインターフェースをホストする 推奨。Gumdropフロントエンドを出発点として使用し、ニーズに合わせてカスタマイズすることをお勧めします。例えば、接続されたウォレットに基づいてユーザーの請求データを自動的に入力することで、ユーザーエクスペリエンスを大幅に向上させることができます。

起動前に:

  1. 小さな配布リストでdevnetでテストする
  2. 請求URLと証明が正しく動作することを確認する
  3. 閉鎖プロセスをテストする

Gumdropの閉鎖

エアドロップ期間終了後、未請求トークンを回収します:

ts-node gumdrop-cli.ts close \
-e devnet \
--base <GUMDROP_KEYPAIR> \
--keypair <AUTHORITY_KEYPAIR> \
--claim-integration transfer \
--transfer-mint <TOKEN_MINT>

結論

Gumdropは、請求ベースメカニズムを通じてSPLトークンを配布する強力で柔軟な方法を提供します。このアプローチは従来のエアドロップに対していくつかの利点を提供します:

  • コスト効率: トランザクションコストは配布者ではなく請求者によって支払われる
  • 制御された配布: 検証された受信者のみが配当されたトークンを請求できる
  • 回収可能性: エアドロップ期間後に未請求トークンを回収できる
  • 柔軟性: ユーザーが好むチャネルを通じてユーザーに到達する複数の配布方法

Gumdropを実装する際は:

  1. 最も信頼性の高いエクスペリエンスのためにウォレットベースの配布を選択する
  2. メインネットデプロイ前にdevnetで徹底的にテストする
  3. より良いユーザーエクスペリエンスのためにカスタムフロントエンドの構築を検討する
  4. 後で閉鎖できるようにGumdropキーペアを保存する

このガイドに従うことで、ユーザーにスムーズな請求エクスペリエンスを提供しながら、制御を維持できる安全で効率的なトークン配布システムを作成できます。

サポートが必要ですか?