发行类型

Genesis 联合曲线创作者费

Last updated April 24, 2026

创作者费是 Genesis 联合曲线上的可选每次兑换费用,在每次买入和卖出时累积到配置的钱包。

本指南涵盖内容

  • 发行时配置创作者费钱包
  • 将费用重定向到特定钱包或 Agent PDA
  • 检查 bucket 中累积了多少费用
  • 在活跃曲线期间认领累积费用
  • 从 Raydium CPMM 池认领毕业后的费用

摘要

创作者费是 Genesis 联合曲线上的可选每次兑换费用,应用于每次买入和卖出的 SOL 侧。费用累积在 bucket 账户(creatorFeeAccrued)中而非立即转账——通过 Metaplex API(推荐)一次调用认领,或使用链上指令按 bucket 认领。

  • 配置 — 在曲线创建时的 launch 对象中设置 creatorFeeWallet;省略时默认为发行钱包
  • 累积creatorFeeAccrued 在每次兑换时增加;费用不按次转账
  • 推荐认领路径POST /v1/creator-rewards/claim(或 SDK 中的 claimCreatorRewards)聚合钱包的所有联合曲线和 Raydium bucket,并返回准备好签名的交易
  • 活跃曲线认领(手动)claimBondingCurveCreatorFeeV2 在曲线活跃时收取累积费用
  • 毕业后认领(手动) — 两步流程:collectRaydiumCpmmFeesWithCreatorFeeV2 从 Raydium 池收集 LP 费用到 Genesis bucket,然后 claimRaydiumCreatorFeeV2 将 bucket 余额转移到创作者钱包

关于创作者费如何与兑换定价和协议兑换费交互,请参阅运作原理——手续费结构

快速开始

本节介绍通过 Metaplex API(推荐)或覆盖活跃曲线和毕业后 Raydium 阶段的低级链上指令来配置和认领创作者费的最少步骤。

快速参考

下表汇总了每条费用指令的调用时机、所需账户及其对创作者费生命周期的影响。

指令使用时机必需账户输出 / 效果
createAndRegisterLaunch(设置 creatorFeeWallet曲线创建时创作者钱包、发行签名者在 bucket 上配置费用钱包
claimCreatorRewards(API / SDK)任何时候——推荐路径创作者费钱包(以及可选的 payer)返回一次调用即可认领所有符合条件 bucket 的已签名交易
fetchBondingCurveBucketV2(读取 creatorFeeAccrued活跃曲线期间任何时候Bucket PDA当前累积费用余额(lamports)
claimBondingCurveCreatorFeeV2活跃曲线——收取累积费用Genesis 账户、bucket PDA、base mint、创作者费钱包累积 SOL 转移到创作者钱包
collectRaydiumCpmmFeesWithCreatorFeeV2毕业后——收割 LP 费用Genesis 账户、Raydium 池 PDA、Raydium bucket PDALP 费用从 Raydium 池移至 Genesis bucket
claimRaydiumCreatorFeeV2毕业后——认领 bucket 余额Genesis 账户、Raydium bucket PDA、base/quote mint、创作者费钱包Bucket 余额转移到创作者钱包

跳转至: 发行时配置 · 重定向到钱包 · Agent PDA · 与首次购买组合 · 检查累积费用(曲线) · 通过 API 认领 · 无奖励情况 · 活跃曲线期间认领 · 检查 Raydium 费用 · 从 Raydium 收集 · 毕业后认领

  1. 调用 createAndRegisterLaunch 时在 launch 对象中设置 creatorFeeWallet
  2. 发行后读取 bucket.creatorFeeAccrued 监控累积费用
  3. 通过 API 或 SDK 调用 claimCreatorRewards,一次调用即可跨所有 bucket 认领
  4. 在活跃曲线期间的手动控制下,调用 claimBondingCurveCreatorFeeV2 收取累积费用
  5. 在毕业后手动认领时,调用 collectRaydiumCpmmFeesWithCreatorFeeV2 从 Raydium 池收集 LP 费用,然后调用 claimRaydiumCreatorFeeV2 将 bucket 余额转移到创作者钱包

前置条件

您需要 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});

创作者费钱包在曲线创建时设定,曲线上线后无法更改。

Agent 发行——自动 PDA 路由

代表 Metaplex Agent 发行时,创作者费自动路由到 Agent 的 PDA,无需手动设置 creatorFeeWallet。完整 Agent 发行流程——Core execute 封装和 setToken 关联——请参阅创建 Agent 代币

将创作者费与首次购买组合

可以同时配置创作者费钱包和首次购买。首次购买始终免费——不收取协议费或创作者费。之后所有兑换正常收取创作者费。

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// 从 bucket 扩展中读取配置的创作者费钱包
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 奖励。该端点返回钱包(或指定的 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 时使用——例如 agent PDA 或冷钱包。

SDK 返回反序列化的 Umi Transaction 以及构建它们时使用的区块哈希。始终使用返回的区块哈希确认每个交易——不要用新获取的区块哈希替换它,否则会出现确认竞争。完整的 HTTP schema 请参阅 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 路径是所有生产认领流程的推荐集成方式。下方的按 bucket 链上指令仍可用于高级场景——针对特定 bucket、完全在客户端构建交易,或在无法访问 Metaplex API 网络的情况下运行。

在活跃曲线期间认领创作者费

claimBondingCurveCreatorFeeV2 将所有累积的创作者费从 bucket 转移到配置的创作者费钱包。可在曲线活跃期间任何时间调用。

claim-creator-fees.ts
1import { claimBondingCurveCreatorFeeV2 } from '@metaplex-foundation/genesis';
2import { isSome } from '@metaplex-foundation/umi';
3
4// 认领前从 bucket 扩展读取创作者费钱包。
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 交易活动中累积。毕业后费用收取是一个两步流程:首先从 Raydium 池收集累积的 LP 交易费用到 Genesis RaydiumCpmmBucketV2 bucket,然后认领 bucket 余额到创作者钱包。

检查累积的 Raydium 创作者费

RaydiumCpmmBucketV2 账户暴露了类似于 BondingCurveBucketV2creatorFeeAccruedcreatorFeeClaimed 字段。使用 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 池收集到 bucket 中的费用。Raydium 池本身可能持有额外的未收集 LP 费用——在读取最终可认领余额之前,运行 collectRaydiumCpmmFeesWithCreatorFeeV2 将其移至 bucket。

步骤 1 — 从 Raydium CPMM 池收集费用

collectRaydiumCpmmFeesWithCreatorFeeV2 从 Raydium CPMM 池收集累积的 LP 交易费用,将其记入 RaydiumCpmmBucketV2 bucket 签名者的代币账户,并更新 creatorFeeAccrued。必须在认领之前运行此步骤——在从 Raydium 收集费用之前,没有可认领的内容。

使用 deriveRaydiumPDAsV2 从 base mint 和 bucket 地址计算所有必需的 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 bucket 签名者的代币账户,并在下次 bucket 获取时反映在 creatorFeeAccrued 中。

步骤 2 — 认领费用到创作者钱包

claimRaydiumCreatorFeeV2RaydiumCpmmBucketV2 bucket 中累积的余额转移到配置的创作者费钱包。在收集后运行,或在 bucket 持有来自先前收集的未认领余额时随时运行。

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)始终发送到配置的创作者费钱包,而非调用方。

收集与认领合并流程

将两个构建器链式组合在单个交易中完成收集和认领。如果池中没有未收集的费用且 bucket 余额为零,请跳过两条指令以避免无效交易。

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());

注意事项

以下注意事项涵盖费用时机、推荐的 API 认领路径、无需许可的链上认领、两步毕业后流程以及首次购买费用豁免。

  • 创作者费在每次兑换时累积到 bucket(creatorFeeAccrued),不会立即转账——需通过 API/SDK 或链上指令显式认领;creatorFeeClaimed 追踪迄今累积认领的总额
  • claimCreatorRewards(API/SDK)将钱包有资格获得的所有联合曲线和 Raydium bucket 聚合到一次调用中;当没有可认领内容时,返回 HTTP 400"No rewards available to claim",而不是空的交易数组
  • 链上认领指令(claimBondingCurveCreatorFeeV2collectRaydiumCpmmFeesWithCreatorFeeV2claimRaydiumCreatorFeeV2)均无需许可:任何钱包都可以触发,但 SOL 始终流向配置的创作者费钱包,而非调用方
  • 毕业后费用需要按顺序两个步骤:collectRaydiumCpmmFeesWithCreatorFeeV2(从 Raydium 池收集 → Genesis bucket),然后 claimRaydiumCreatorFeeV2(bucket → 创作者钱包);两者可合并到单个交易中,API 路径也会替您封装这两步
  • creatorFeeAccruedcreatorFeeClaimed 同时存在于 BondingCurveBucketV2(活跃曲线)和 RaydiumCpmmBucketV2(毕业后)上;分别使用 fetchBondingCurveBucketV2fetchRaydiumCpmmBucketV2
  • creatorFeeWallet 未设置时默认为发行钱包;曲线创建后无法更改
  • 首次购买机制仅对指定的初始购买豁免所有费用(协议费和创作者费);之后所有兑换正常收取创作者费
  • 创作者费应用于每次兑换的 SOL 侧,无论方向(买入或卖出);不与协议兑换费复利
  • 当前费率请参阅 Genesis 协议费用页面
  • 兑换侧上下文——读取 bucket 状态、计算报价和执行交易——请参阅联合曲线兑换集成

FAQ

未设置 creatorFeeWallet 时默认的创作者费钱包是什么?

默认的创作者费钱包是发行钱包——签署 createLaunch 调用的钱包。在 launch 对象中显式设置 creatorFeeWallet 可将费用重定向到任何其他地址。

创作者费是在每次兑换时转账的吗?

不是。创作者费在每次兑换时累积到 bucket(creatorFeeAccrued),不会立即转账。通过 API 或 SDK 调用 claimCreatorRewards 一次性跨所有 bucket 收集,或使用链上指令(活跃曲线期间使用 claimBondingCurveCreatorFeeV2;毕业后先使用 collectRaydiumCpmmFeesWithCreatorFeeV2,再使用 claimRaydiumCreatorFeeV2)进行更低级别的控制。

应该使用 API 还是链上认领指令?

日常认领请使用 API(claimCreatorRewards)——它将钱包有资格获得的所有联合曲线和 Raydium bucket 聚合到一次调用中,并返回准备好签名的交易。当您需要针对特定 bucket、自己构建交易或在无法访问 Metaplex API 网络的情况下运行时,请使用按 bucket 的链上指令(claimBondingCurveCreatorFeeV2collectRaydiumCpmmFeesWithCreatorFeeV2claimRaydiumCreatorFeeV2)。

没有可认领的奖励时会发生什么?

claimCreatorRewards 端点返回 HTTP 400{"error":{"message":"No rewards available to claim"}}。SDK 将其呈现为 GenesisApiError。将其视为非异常结果——检查 err.message(或 err.statusCode === 400)并进行分支处理,而非让错误向上传播。请参阅处理无奖励情况

可选的 payer 字段有什么用?

payer 承担返回的认领交易的交易费和租金。默认为被认领的钱包。当创作者费钱包不持有 SOL 时(例如 agent PDA 或冷钱包),将其设置为不同的地址。payer 必须签署返回的交易;创作者费收件人仍会收到认领的 SOL。

任何人都可以调用 claimBondingCurveCreatorFeeV2claimRaydiumCreatorFeeV2 吗?

是的。三条无需许可的费用指令横跨活跃曲线和毕业后两个阶段——collectRaydiumCpmmFeesWithCreatorFeeV2claimBondingCurveCreatorFeeV2(活跃曲线)以及 claimRaydiumCreatorFeeV2(毕业后)。任何钱包都可以触发,但 SOL 始终发送到配置的创作者费钱包,而非调用方。

collectRaydiumCpmmFeesWithCreatorFeeV2claimRaydiumCreatorFeeV2 有什么区别?

collectRaydiumCpmmFeesWithCreatorFeeV2 从 Raydium CPMM 池中拉取累积的 LP 交易费用到 Genesis RaydiumCpmmBucketV2 bucket——这会更新 bucket 上的 creatorFeeAccruedclaimRaydiumCreatorFeeV2 然后将该 bucket 余额转移到创作者费钱包。必须先运行收集再运行认领;没有收集,就没有 bucket 余额可认领。

为什么我的 Raydium bucket 上的 creatorFeeAccrued 在池活跃时为零?

RaydiumCpmmBucketV2 上的 creatorFeeAccrued 仅反映通过 collectRaydiumCpmmFeesWithCreatorFeeV2 从 Raydium 收集到 Genesis bucket 的费用。LP 交易费用首先在 Raydium 池状态内累积——直到运行收集指令,它们才会出现在 Genesis bucket 中。

首次购买需要支付创作者费吗?

不需要。配置首次购买时,协议兑换费和创作者费均对该一次性初始购买豁免。之后所有兑换正常支付创作者费。

如何检查已累积了多少创作者费?

活跃曲线期间,使用 fetchBondingCurveBucketV2BondingCurveBucketV2 读取 creatorFeeAccrued 字段。毕业后,使用 fetchRaydiumCpmmBucketV2RaydiumCpmmBucketV2 读取 creatorFeeAccrued。详见检查累积的创作者费检查累积的 Raydium 创作者费

发行后可以更改创作者费钱包吗?

不可以。创作者费钱包在曲线创建时设定,曲线上线后无法更改。