ローンチタイプ

Genesis ボンディングカーブのクリエイター手数料

Last updated April 24, 2026

クリエイター手数料はGenesis ボンディングカーブのオプションのスワップごとの手数料で、毎回の購入と売却で設定されたウォレットに蓄積されます。

学習内容

  • ローンチ時にクリエイター手数料ウォレットを設定する
  • 手数料を特定のウォレットまたはエージェントPDAにリダイレクトする
  • バケットに蓄積した金額を確認する
  • アクティブなカーブ中に蓄積した手数料を請求する
  • Raydium CPMMプールからグラデュエーション後の手数料を請求する

Summary

クリエイター手数料は、Genesis ボンディングカーブのオプションのスワップごとの手数料で、毎回の購入と売却のSOL側に適用されます。手数料はすぐには転送されず、バケットアカウント(creatorFeeAccrued)に蓄積されます — Metaplex API(推奨)で1回の呼び出しで請求するか、オンチェーン命令でバケットごとに請求します。

  • 設定 — カーブ作成時に launch オブジェクトに creatorFeeWallet を設定する。省略するとデフォルトでローンチウォレットになる
  • 蓄積creatorFeeAccrued はスワップごとに増加する。手数料はスワップごとに転送されない
  • 推奨される請求パスPOST /v1/creator-rewards/claim(またはSDKの claimCreatorRewards)はウォレットのすべてのボンディングカーブとRaydiumバケットを集約し、署名準備済みのトランザクションを返す
  • アクティブカーブ中の請求(手動)claimBondingCurveCreatorFeeV2 でカーブがライブ中に蓄積した手数料を回収する
  • グラデュエーション後の請求(手動) — 2ステップ: collectRaydiumCpmmFeesWithCreatorFeeV2 でRaydiumプールからLP手数料をGenesisバケットに収集し、その後 claimRaydiumCreatorFeeV2 でバケット残高をクリエイターウォレットに転送する

スワップ価格設定とプロトコルスワップ手数料とのクリエイター手数料の相互作用については、動作理論 — 手数料構造を参照してください。

クイックスタート

このセクションでは、Metaplex API(推奨)または、アクティブカーブとグラデュエーション後のRaydiumフェーズをカバーする低レベルのオンチェーン命令でクリエイター手数料を設定および請求するための最小限の手順を説明します。

クイックリファレンス

この表は、各手数料インストラクションを呼び出すタイミング、必要なアカウント、およびクリエイター手数料ライフサイクルへの影響をまとめたものです。

インストラクション使用タイミング必要なアカウント出力 / 効果
createAndRegisterLaunchcreatorFeeWallet 設定)カーブ作成時クリエイターウォレット、ローンチ署名者バケットに手数料ウォレットが設定される
claimCreatorRewards(API / SDK)いつでも — 推奨パスクリエイター手数料ウォレット(オプションのpayer)1回の呼び出しで対象のすべてのバケットを請求する署名済みトランザクション
fetchBondingCurveBucketV2creatorFeeAccrued 読み取り)アクティブカーブ中いつでもバケットPDA現在の蓄積手数料残高(lamports)
claimBondingCurveCreatorFeeV2アクティブカーブ — 蓄積手数料の回収Genesisアカウント、バケットPDA、ベースミント、クリエイター手数料ウォレット蓄積SOLがクリエイターウォレットに転送
collectRaydiumCpmmFeesWithCreatorFeeV2グラデュエーション後 — LP手数料のハーベストGenesisアカウント、RaydiumプールPDA、RaydiumバケットPDALP手数料がRaydiumプールからGenesisバケットに移動
claimRaydiumCreatorFeeV2グラデュエーション後 — バケット残高の請求Genesisアカウント、RaydiumバケットPDA、ベース/クォートミント、クリエイター手数料ウォレットバケット残高がクリエイターウォレットに転送

ジャンプ: ローンチ時の設定 · ウォレットへのリダイレクト · エージェントPDA · ファーストバイとの組み合わせ · 蓄積確認(カーブ) · API経由で請求 · 報酬なしのケース · カーブ中の請求 · Raydium手数料の確認 · Raydiumからの収集 · グラデュエーション後の請求

  1. createAndRegisterLaunch を呼び出すときに launch オブジェクトに creatorFeeWallet を設定する
  2. ローンチ後、bucket.creatorFeeAccrued を監視して蓄積手数料を追跡する
  3. APIまたはSDK経由で claimCreatorRewards を呼び出して、すべてのバケットからまとめて1回の呼び出しで請求する
  4. アクティブカーブ期間中の手動制御には、claimBondingCurveCreatorFeeV2 を呼び出して蓄積手数料を回収する
  5. グラデュエーション後の手動請求には、collectRaydiumCpmmFeesWithCreatorFeeV2 を呼び出してRaydiumプールからLP手数料を収集し、その後 claimRaydiumCreatorFeeV2 でバケット残高をクリエイターウォレットに転送する

前提条件

Genesis SDK、設定済みのUmiインスタンス、および入金済みのSolanaウォレットが必要です。

ローンチ時のクリエイター手数料の設定

クリエイター手数料は createAndRegisterLaunch(または createLaunch)に渡す launch オブジェクトで設定します。creatorFeeWallet フィールドはオプションです — 省略した場合、デフォルトでローンチウォレットがすべての手数料を受け取ります。完全なローンチフローについてはMetaplex APIを通じたボンディングカーブのローンチを参照してください。

クリエイター手数料を特定のウォレットにリダイレクトする

creatorFeeWallet を設定して、蓄積された手数料をローンチウォレット以外の任意のウォレットアドレスに向けます。

launch-with-creator-fee.ts
1import { createAndRegisterLaunch } from '@metaplex-foundation/genesis/api';
2
3const result = await createAndRegisterLaunch(umi, {}, {
4 wallet: umi.identity.publicKey,
5 launchType: 'bondingCurve',
6 token: {
7 name: 'My Token',
8 symbol: 'MTK',
9 image: 'https://gateway.irys.xyz/your-image-id',
10 },
11 launch: {
12 creatorFeeWallet: 'FeeRecipientWalletAddress...',
13 },
14});

クリエイター手数料ウォレットはカーブ作成時に設定され、カーブがライブになった後は変更できません。

エージェントローンチ — 自動PDAルーティング

Metaplexエージェントのためにローンチする場合、クリエイター手数料は creatorFeeWallet を手動設定せずにエージェントのPDAに自動的にルーティングされます。Coreエグゼキュートラッピングと setToken 関連付けを含む完全なエージェントローンチフローについては、エージェントトークンの作成を参照してください。

クリエイター手数料とファーストバイの組み合わせ

クリエイター手数料ウォレットとファーストバイを一緒に設定できます。ファーストバイは常に手数料無料です — その初回購入にはプロトコル手数料もクリエイター手数料もかかりません。その後のすべてのスワップは通常のクリエイター手数料を支払います。

launch-with-fee-and-first-buy.ts
launch: {
creatorFeeWallet: 'FeeRecipientWalletAddress...',
firstBuyAmount: 0.5, // 0.5 SOL、最初の購入者に手数料無料
},

蓄積したクリエイター手数料の確認

BondingCurveBucketV2 アカウントの creatorFeeAccrued フィールドは、最後の請求以降に蓄積した合計SOLを追跡します。fetchBondingCurveBucketV2 を使用して読み取ります:

check-creator-fees.ts
1import {
2 findBondingCurveBucketV2Pda,
3 fetchBondingCurveBucketV2,
4} from '@metaplex-foundation/genesis';
5import { isSome, publicKey } from '@metaplex-foundation/umi';
6
7const genesisAccount = publicKey('YOUR_GENESIS_ACCOUNT_PUBKEY');
8const baseMint = publicKey('TOKEN_MINT_PUBKEY');
9
10const [bucketPda] = findBondingCurveBucketV2Pda(umi, {
11 genesisAccount,
12 bucketIndex: 0,
13});
14
15const bucket = await fetchBondingCurveBucketV2(umi, bucketPda);
16console.log('Creator fees accrued (lamports):', bucket.creatorFeeAccrued);
17console.log('Creator fees claimed to date (lamports):', bucket.creatorFeeClaimed);
18
19// バケット拡張機能から設定されたクリエイター手数料ウォレットを読み取る
20const creatorFeeExt = bucket.extensions.creatorFee;
21const creatorFeeWallet = isSome(creatorFeeExt) ? creatorFeeExt.value.wallet : null;
22console.log('Creator fee wallet:', creatorFeeWallet?.toString() ?? 'none configured');

Metaplex API経由で請求(推奨)

POST /v1/creator-rewards/claim は、ウォレットが対象とするすべての未請求のボンディングカーブとRaydium報酬を1回の呼び出しで請求します。エンドポイントは、ウォレット(または指定された payer)が署名して送信するbase64エンコードされたSolanaトランザクションを返します。JavaScript SDKは同じ呼び出しを @metaplex-foundation/genesisclaimCreatorRewards として公開します。

1import { claimCreatorRewards } from '@metaplex-foundation/genesis'
2import { base58 } from '@metaplex-foundation/umi/serializers'
3import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
4import { keypairIdentity } from '@metaplex-foundation/umi'
5
6const umi = createUmi('https://api.mainnet-beta.solana.com')
7const keypair = umi.eddsa.createKeypairFromSecretKey(mySecretKeyBytes)
8umi.use(keypairIdentity(keypair))
9
10const result = await claimCreatorRewards(umi, {}, {
11 wallet: umi.identity.publicKey,
12 network: 'solana-mainnet',
13 // payer is optional — defaults to `wallet` on the server.
14 // Set it to have a different wallet cover rent and transaction fees.
15 // payer: umi.identity.publicKey,
16})
17
18for (const tx of result.transactions) {
19 const signed = await umi.identity.signTransaction(tx)
20 const signature = await umi.rpc.sendTransaction(signed, {
21 preflightCommitment: 'confirmed',
22 })
23 await umi.rpc.confirmTransaction(signature, {
24 strategy: { type: 'blockhash', ...result.blockhash },
25 commitment: 'confirmed',
26 })
27 console.log('Claimed:', base58.deserialize(signature)[0])
28}
29
30// Claimed: 5uGGYEMmjP2HpyFCvLPNpVDSQEBtUE3LR6ZQFqhJxQSh5FbKacSyN8nQmAJowuFs6BTCdwzoFyyJz8Y2hQx8kPxo
31// Claimed: 3TAroVovEap1ZEAJYq3WiDZoMK3GU3soCdrhvZJNg6b9EANqvWrVcDGNffm7mD8wvtpR7ynWQBcbrmz8AK6nrhfy
フィールド必須備考
walletPublicKey | stringはい請求するクリエイター手数料ウォレット。
networkSvmNetworkいいえ'solana-mainnet'(デフォルト)または 'solana-devnet'
payerPublicKey | stringいいえ返されたトランザクションの手数料とレントを負担するウォレット。デフォルトは wallet。クリエイター手数料ウォレットがSOLを保持していない場合(例:エージェントPDAやコールドウォレット)に使用します。

SDKは、デシリアライズされたUmi Transaction と、それらが構築されたブロックハッシュを返します。常に返されたブロックハッシュに対して各トランザクションを確認してください — 新たに取得したものに置き換えないでください。確認競合が発生します。完全なHTTPスキーマはClaim Creator Rewards (API)を参照してください。

報酬なしのケースの処理

ウォレットに請求するものがない場合、エンドポイントはHTTP 400{ "error": { "message": "No rewards available to claim" } } を返します — 空の transactions 配列を含む成功レスポンスは返されません。SDKはこれを GenesisApiError として表面化するため、呼び出し元はエラーをキャッチして err.message(または err.statusCode === 400)で分岐する必要があります。エラーをそのまま伝播させてはいけません。

1import {
2 claimCreatorRewards,
3 isGenesisApiError,
4 isGenesisApiNetworkError,
5} from '@metaplex-foundation/genesis'
6
7// Assumes umi is configured with a keypair identity.
8
9try {
10 const result = await claimCreatorRewards(umi, {}, {
11 wallet: umi.identity.publicKey,
12 network: 'solana-mainnet',
13 })
14 console.log(`Claimable transactions: ${result.transactions.length}`)
15} catch (err) {
16 if (isGenesisApiError(err)) {
17 // The API returns HTTP 400 with
18 // { "error": { "message": "No rewards available to claim" } }
19 // when the wallet has no unclaimed creator rewards. Match on the message
20 // (or statusCode === 400) to handle this as a success case rather than a
21 // failure.
22 if (err.message === 'No rewards available to claim') {
23 console.log('Nothing to claim right now.')
24 } else {
25 console.error('API error:', err.statusCode, err.message)
26 }
27 } else if (isGenesisApiNetworkError(err)) {
28 console.error('Network error:', err.cause.message)
29 } else {
30 throw err
31 }
32}
33
34// Nothing to claim right now.

上記のAPIパスは、すべての本番請求フローで推奨される統合です。下記のバケットごとのオンチェーン命令は、特定のバケットを対象とする、トランザクションを完全にクライアントサイドで構築する、Metaplex APIへのネットワークアクセスなしで実行するなど、高度なケースで引き続き利用できます。

アクティブなカーブ中のクリエイター手数料の請求

claimBondingCurveCreatorFeeV2 は、蓄積したすべてのクリエイター手数料をバケットから設定されたクリエイター手数料ウォレットに転送します。カーブがアクティブな間はいつでも呼び出せます。

claim-creator-fees.ts
1import { claimBondingCurveCreatorFeeV2 } from '@metaplex-foundation/genesis';
2import { isSome } from '@metaplex-foundation/umi';
3
4// 請求前にバケット拡張機能からクリエイター手数料ウォレットを読み取る。
5const creatorFeeExt = bucket.extensions.creatorFee;
6if (!isSome(creatorFeeExt)) throw new Error('No creator fee configured on this bucket');
7const creatorFeeWallet = creatorFeeExt.value.wallet;
8
9const result = await claimBondingCurveCreatorFeeV2(umi, {
10 genesisAccount,
11 bucket: bucketPda,
12 baseMint,
13 creatorFeeWallet,
14}).sendAndConfirm(umi);
15
16console.log('Creator fees claimed:', result.signature);

claimBondingCurveCreatorFeeV2 はパーミッションレスです — どのウォレットでも呼び出せますが、SOLは常に設定されたクリエイター手数料ウォレットに送られ、呼び出し元には送られません。

グラデュエーション後のクリエイター手数料の請求

ボンディングカーブがグラデュエーションした後、流動性はRaydium CPMMプールに移行し、クリエイター手数料はLPの取引活動から引き続き蓄積されます。グラデュエーション後の手数料回収は2ステップのプロセスです:まずRaydiumプールから蓄積されたLP取引手数料をGenesisの RaydiumCpmmBucketV2 バケットに収集し、次にバケット残高をクリエイターウォレットに請求します。

蓄積したRaydiumクリエイター手数料の確認

RaydiumCpmmBucketV2 アカウントは BondingCurveBucketV2 と同様の creatorFeeAccruedcreatorFeeClaimed フィールドを公開します。findRaydiumCpmmBucketV2PdafetchRaydiumCpmmBucketV2 を使用してデリブおよびフェッチします。

check-raydium-fees.ts
1import {
2 findRaydiumCpmmBucketV2Pda,
3 fetchRaydiumCpmmBucketV2,
4} from '@metaplex-foundation/genesis';
5import { isSome, publicKey } from '@metaplex-foundation/umi';
6
7const genesisAccount = publicKey('YOUR_GENESIS_ACCOUNT_PUBKEY');
8
9const [raydiumBucketPda] = findRaydiumCpmmBucketV2Pda(umi, {
10 genesisAccount,
11 bucketIndex: 0,
12});
13
14const raydiumBucket = await fetchRaydiumCpmmBucketV2(umi, raydiumBucketPda);
15const claimable = raydiumBucket.creatorFeeAccrued - raydiumBucket.creatorFeeClaimed;
16console.log('Claimable Raydium creator fees (lamports):', claimable);
17
18const creatorFeeExt = raydiumBucket.extensions.creatorFee;
19const creatorFeeWallet = isSome(creatorFeeExt) ? creatorFeeExt.value.wallet : null;
20console.log('Creator fee wallet:', creatorFeeWallet?.toString() ?? 'none configured');

raydiumBucket.creatorFeeAccrued はRaydiumプールからバケットに既に収集された手数料のみを反映します。Raydiumプール自体に未収集のLP手数料がある場合があります — 最終的な請求可能残高を読み取る前に collectRaydiumCpmmFeesWithCreatorFeeV2 を実行してバケットに移動してください。

ステップ1 — Raydium CPMMプールからの手数料収集

collectRaydiumCpmmFeesWithCreatorFeeV2 はRaydium CPMMプールから蓄積されたLP取引手数料を収集し、RaydiumCpmmBucketV2 バケット署名者のトークンアカウントにクレジットし、creatorFeeAccrued を更新します。請求前にこのステップを実行する必要があります — Raydiumから手数料が収集されるまで、請求するものはありません。

deriveRaydiumPDAsV2 を使用して、ベースミントとバケットアドレスから必要なすべてのRaydiumプールアカウントを計算します。creatorFee: true を渡してクリエイター手数料AMMコンフィグを選択します。

collect-raydium-fees.ts
1import {
2 collectRaydiumCpmmFeesWithCreatorFeeV2,
3 deriveRaydiumPDAsV2,
4 findRaydiumCpmmBucketV2Pda,
5} from '@metaplex-foundation/genesis';
6import { publicKey } from '@metaplex-foundation/umi';
7
8const baseMint = publicKey('TOKEN_MINT_PUBKEY');
9const quoteMint = publicKey('So11111111111111111111111111111111111111112'); // wSOL
10
11const [raydiumBucketPda] = findRaydiumCpmmBucketV2Pda(umi, {
12 genesisAccount,
13 bucketIndex: 0,
14});
15
16const pdas = deriveRaydiumPDAsV2(umi, baseMint, raydiumBucketPda, {
17 quoteMint,
18 env: 'mainnet', // or 'devnet'
19 creatorFee: true,
20});
21
22await collectRaydiumCpmmFeesWithCreatorFeeV2(umi, {
23 baseMint,
24 quoteMint,
25 genesisAccount,
26 poolState: pdas.poolState,
27 raydiumCpmmBucket: raydiumBucketPda,
28 ammConfig: pdas.ammConfig,
29 poolAuthority: pdas.poolAuthority,
30 baseVault: pdas.baseVault,
31 quoteVault: pdas.quoteVault,
32 raydiumProgram: pdas.raydiumProgram,
33}).sendAndConfirm(umi);
34
35console.log('Raydium LP fees collected into Genesis bucket');

collectRaydiumCpmmFeesWithCreatorFeeV2 はパーミッションレスです — どのウォレットでも呼び出せます。収集された手数料はGenesisバケット署名者のトークンアカウントに流れ、次回のバケットフェッチで creatorFeeAccrued に反映されます。

ステップ2 — クリエイターウォレットへの手数料請求

claimRaydiumCreatorFeeV2RaydiumCpmmBucketV2 バケットに蓄積された残高を設定されたクリエイター手数料ウォレットに転送します。収集後に実行するか、前回の収集からバケットに未請求残高がある場合はいつでも実行します。

claim-raydium-creator-fees.ts
1import {
2 claimRaydiumCreatorFeeV2,
3 fetchRaydiumCpmmBucketV2,
4 findRaydiumCpmmBucketV2Pda,
5} from '@metaplex-foundation/genesis';
6import { isSome, publicKey } from '@metaplex-foundation/umi';
7
8const [raydiumBucketPda] = findRaydiumCpmmBucketV2Pda(umi, {
9 genesisAccount,
10 bucketIndex: 0,
11});
12
13// 収集後に再フェッチして更新されたcreatorFeeAccruedを取得する。
14const raydiumBucket = await fetchRaydiumCpmmBucketV2(umi, raydiumBucketPda);
15
16const creatorFeeExt = raydiumBucket.extensions.creatorFee;
17if (!isSome(creatorFeeExt)) throw new Error('No creator fee configured on this Raydium bucket');
18const creatorFeeWallet = creatorFeeExt.value.wallet;
19
20await claimRaydiumCreatorFeeV2(umi, {
21 genesisAccount: raydiumBucket.bucket.genesis,
22 bucket: raydiumBucketPda,
23 baseMint: raydiumBucket.bucket.baseMint,
24 quoteMint: raydiumBucket.bucket.quoteMint,
25 creatorFeeWallet,
26}).sendAndConfirm(umi);
27
28console.log('Raydium creator fees claimed to:', creatorFeeWallet.toString());

claimRaydiumCreatorFeeV2 はパーミッションレスです — どのウォレットでも請求をトリガーできますが、SOL(wSOLとして)は常に設定されたクリエイター手数料ウォレットに送られ、呼び出し元には送られません。

収集と請求の統合フロー

2つのビルダーをチェーンして1つのトランザクションで収集と請求を行います。プールに未収集手数料がなくバケット残高もゼロの場合、無操作トランザクションを避けるため両方のインストラクションをスキップします。

collect-and-claim-raydium.ts
1import {
2 collectRaydiumCpmmFeesWithCreatorFeeV2,
3 claimRaydiumCreatorFeeV2,
4 deriveRaydiumPDAsV2,
5 fetchRaydiumCpmmBucketV2,
6 findRaydiumCpmmBucketV2Pda,
7} from '@metaplex-foundation/genesis';
8import { isSome, publicKey, transactionBuilder } from '@metaplex-foundation/umi';
9
10const baseMint = publicKey('TOKEN_MINT_PUBKEY');
11const quoteMint = publicKey('So11111111111111111111111111111111111111112');
12const genesisAccount = publicKey('YOUR_GENESIS_ACCOUNT_PUBKEY');
13
14const [raydiumBucketPda] = findRaydiumCpmmBucketV2Pda(umi, {
15 genesisAccount,
16 bucketIndex: 0,
17});
18
19const raydiumBucket = await fetchRaydiumCpmmBucketV2(umi, raydiumBucketPda);
20
21const creatorFeeExt = raydiumBucket.extensions.creatorFee;
22if (!isSome(creatorFeeExt)) throw new Error('No creator fee configured');
23const creatorFeeWallet = creatorFeeExt.value.wallet;
24
25const pdas = deriveRaydiumPDAsV2(umi, baseMint, raydiumBucketPda, {
26 quoteMint,
27 env: 'mainnet', // or 'devnet'
28 creatorFee: true,
29});
30
31await transactionBuilder()
32 .add(collectRaydiumCpmmFeesWithCreatorFeeV2(umi, {
33 baseMint,
34 quoteMint,
35 genesisAccount,
36 poolState: pdas.poolState,
37 raydiumCpmmBucket: raydiumBucketPda,
38 ammConfig: pdas.ammConfig,
39 poolAuthority: pdas.poolAuthority,
40 baseVault: pdas.baseVault,
41 quoteVault: pdas.quoteVault,
42 raydiumProgram: pdas.raydiumProgram,
43 }))
44 .add(claimRaydiumCreatorFeeV2(umi, {
45 genesisAccount,
46 bucket: raydiumBucketPda,
47 baseMint,
48 quoteMint,
49 creatorFeeWallet,
50 }))
51 .sendAndConfirm(umi);
52
53console.log('Raydium creator fees collected and claimed to:', creatorFeeWallet.toString());

Notes

以下の注意事項は、手数料のタイミング、推奨されるAPI請求パス、パーミッションレスなオンチェーン請求、2ステップのグラデュエーション後フロー、およびファーストバイの手数料免除について説明します。

  • クリエイター手数料は各スワップでバケット(creatorFeeAccrued)に蓄積されますが、すぐには転送されません — API/SDKまたはオンチェーンインストラクションで明示的に請求する必要があります。creatorFeeClaimed は累計の請求済み合計を追跡します
  • claimCreatorRewards(API/SDK)は、ウォレットの対象となるすべてのボンディングカーブとRaydiumバケットを1回の呼び出しに集約します。請求するものがない場合、空のトランザクション配列ではなくHTTP 400"No rewards available to claim" を返します
  • オンチェーン請求インストラクション(claimBondingCurveCreatorFeeV2collectRaydiumCpmmFeesWithCreatorFeeV2claimRaydiumCreatorFeeV2)はパーミッションレスです。どのウォレットでもトリガーできますが、SOLは常に設定されたクリエイター手数料ウォレットに送られ、呼び出し元には送られません
  • グラデュエーション後の手数料には順序通り2つのステップが必要です:collectRaydiumCpmmFeesWithCreatorFeeV2(Raydiumプール → Genesisバケットへの収集)、次に claimRaydiumCreatorFeeV2(バケット → クリエイターウォレット)。両方を1つのトランザクションにまとめることができ、APIパスは両方をまとめて処理します
  • creatorFeeAccruedcreatorFeeClaimedBondingCurveBucketV2(アクティブカーブ)と RaydiumCpmmBucketV2(グラデュエーション後)の両方に存在します。それぞれ fetchBondingCurveBucketV2fetchRaydiumCpmmBucketV2 を使用します
  • creatorFeeWallet は設定されていない場合デフォルトでローンチウォレットになります。カーブ作成後は変更できません
  • ファーストバイの仕組みは、指定された初回購入のみすべての手数料(プロトコルとクリエイター)を免除します。その後のすべてのスワップは通常のクリエイター手数料を支払います
  • クリエイター手数料は方向(購入または売却)に関わらずすべてのスワップのSOL側に適用されます。プロトコルスワップ手数料とは複合しません
  • 現在の手数料率についてはGenesis プロトコル手数料ページを参照してください
  • バケット状態の読み取り、見積もりの計算、取引の実行についてはボンディングカーブスワップ統合を参照してください

FAQ

creatorFeeWallet が設定されていない場合、デフォルトのクリエイター手数料ウォレットは何ですか?

デフォルトのクリエイター手数料ウォレットはローンチウォレット — createLaunch 呼び出しに署名したウォレットです。launch オブジェクトに creatorFeeWallet を明示的に設定して、手数料を他のアドレスにリダイレクトします。

クリエイター手数料はスワップごとに転送されますか?

いいえ。クリエイター手数料は各スワップでバケット(creatorFeeAccrued)に蓄積されますが、すぐには転送されません。APIまたはSDK経由で claimCreatorRewards を呼び出してすべてのバケットを1回で回収するか、より低レベルの制御のためにオンチェーン命令(アクティブなカーブ中は claimBondingCurveCreatorFeeV2、グラデュエーション後は collectRaydiumCpmmFeesWithCreatorFeeV2 の後に claimRaydiumCreatorFeeV2)を使用します。

APIとオンチェーン請求命令のどちらを使用すべきですか?

通常の請求にはAPI(claimCreatorRewards)を使用します — ウォレットが対象とするすべてのボンディングカーブとRaydiumバケットを1回の呼び出しに集約し、署名準備済みのトランザクションを返します。特定のバケットを対象にする、トランザクションを自分で構築する、Metaplex APIへのネットワークアクセスなしで実行する場合は、バケットごとのオンチェーン命令(claimBondingCurveCreatorFeeV2collectRaydiumCpmmFeesWithCreatorFeeV2claimRaydiumCreatorFeeV2)を使用します。

請求できる報酬がない場合はどうなりますか?

claimCreatorRewards エンドポイントはHTTP 400{"error":{"message":"No rewards available to claim"}} を返します。SDKはこれを GenesisApiError として表面化します。これを例外的な結果ではなく — err.message(または err.statusCode === 400)をチェックしてエラーを伝播させずに分岐します。報酬なしのケースの処理を参照してください。

オプションの payer フィールドは何のためですか?

payer は返された請求トランザクションのトランザクション手数料とレントを負担します。請求対象のウォレットがデフォルトです。クリエイター手数料ウォレットがSOLを保持していない場合(例 — エージェントPDAやコールドウォレット)に別のアドレスに設定します。payer は返されたトランザクションに署名する必要がありますが、クリエイター手数料の受取人は引き続き請求されたSOLを受け取ります。

誰でも claimBondingCurveCreatorFeeV2claimRaydiumCreatorFeeV2 を呼び出せますか?

はい。3つのパーミッションレスな手数料インストラクションはアクティブカーブとグラデュエーション後の両方のフェーズにまたがります — collectRaydiumCpmmFeesWithCreatorFeeV2claimBondingCurveCreatorFeeV2(アクティブカーブ)、および claimRaydiumCreatorFeeV2(グラデュエーション後)。どのウォレットでもトリガーできますが、SOLは常に設定されたクリエイター手数料ウォレットに送られ、呼び出し元には送られません。

collectRaydiumCpmmFeesWithCreatorFeeV2claimRaydiumCreatorFeeV2 の違いは何ですか?

collectRaydiumCpmmFeesWithCreatorFeeV2 はRaydium CPMMプールから蓄積されたLP取引手数料をGenesisの RaydiumCpmmBucketV2 バケットに収集します — これによりバケットの creatorFeeAccrued が更新されます。claimRaydiumCreatorFeeV2 はそのバケット残高をクリエイター手数料ウォレットに転送します。収集を請求の前に実行する必要があります — 収集なしでは、請求するバケット残高がありません。

Raydiumバケットの creatorFeeAccrued がプールがアクティブなのにゼロなのはなぜですか?

RaydiumCpmmBucketV2creatorFeeAccrued は、collectRaydiumCpmmFeesWithCreatorFeeV2 を通じてRaydiumからGenesisバケットに収集された手数料のみを反映します。LP取引手数料はまずRaydiumプールステート内に蓄積されます — 収集インストラクションを実行するまでGenesisバケットには表示されません。

ファーストバイはクリエイター手数料を支払いますか?

いいえ。ファーストバイが設定されている場合、プロトコルスワップ手数料とクリエイター手数料の両方が、その1回の初回購入に対して免除されます。その後のすべてのスワップは通常のクリエイター手数料を支払います。

蓄積したクリエイター手数料を確認するにはどうすればよいですか?

アクティブカーブ中は fetchBondingCurveBucketV2 を使用して BondingCurveBucketV2 から creatorFeeAccrued フィールドを読み取ります。グラデュエーション後は fetchRaydiumCpmmBucketV2 を使用して RaydiumCpmmBucketV2 から creatorFeeAccrued を読み取ります。蓄積したクリエイター手数料の確認および蓄積したRaydiumクリエイター手数料の確認を参照してください。

ローンチ後にクリエイター手数料ウォレットを変更できますか?

いいえ。クリエイター手数料ウォレットはカーブ作成時に設定され、カーブがライブになった後は変更できません。