Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
OnFinality Learn
集成与开发阅读约 11 分钟

Create Tokens Fun:Launchpad 代币创建技术指南

了解在 fun 风格 launchpad 上创建代币时链上实际发生的过程,如何验证结果,以及如何构建可复现的发布工作流。

TL;DR

在 fun 风格 launchpad 上创建代币,本质上是一个前端工作流,封装了少量链上指令:创建 mint、附加元数据,通常还包括初始流动性或联合曲线头寸。launchpad 界面隐藏了交易构建过程,因此有用的技术技能是理解交易实际做了什么,以及如何独立验证。本文解释其机制,演示使用你自己的 RPC 端点进行可复现验证和发布的流程,并涵盖那些导致发布在界面上看似成功但链上失败的故障模式。它还将有文档记录的 launchpad 行为与建议以及你应该针对自己的基础设施自行运行的测量区分开来。

在 fun 风格 launchpad 上创建代币实际做了什么

当用户在 pump.fun 风格的 launchpad 上点击创建按钮时,浏览器会构建一笔由用户钱包签名的交易。该交易通常执行三个逻辑步骤:创建一个具有固定供应量和精度的小数位的新代币 mint;直接或通过元数据程序附加元数据(名称、符号、图片 URI);并在 launchpad 自己的程序中注册该代币,使其能在联合曲线或初始流动性池上交易。

重要的区别在于,launchpad 是协调者,而不是代币身份的托管者。mint 权限、冻结权限和元数据更新权限由交易中的指令设置。一些 launchpad 会立即撤销 mint 权限,从而固定供应量;另一些则将其保留给程序。在签名前阅读交易,是了解你所使用的特定 launchpad 适用哪种模型的唯一可靠方式。

本页将“create tokens fun”视为一个技术工作流问题:交易包含什么、如何验证,以及如何复现或监控。它不推荐特定的 launchpad,也不声称任何特定平台的费用表或功能集,因为这些会频繁变化,应从平台本身读取。

  • Mint 创建:供应量、精度和权限分配在创建时固定。
  • 元数据:在 launchpad 流程中,名称、符号和图片 URI 通常在创建后不可变。
  • 注册:launchpad 程序记录该代币,使其能在曲线或池上交易。
  • 权限模型:mint 或冻结权限是否被撤销,决定了之后供应量如何变化。

发布前的先决条件和假设

你需要目标链上资金充足的钱包、可靠的 RPC 端点,以及一种在签名前检查交易的方式。对于基于 Solana 的 launchpad,你通常会在浏览器中使用钱包适配器,并使用 JSON-RPC 端点进行验证。对于基于 EVM 的 launchpad,等价物是钱包加上支持 eth_getTransactionReceipt 和 eth_call 的 RPC 端点。

本指南的假设:你控制签署创建交易的钱包,你可以访问可直接查询的 RPC 端点,并且你能够阅读原始交易数据。如果你只想要托管端点而不是运行自己的节点,OnFinality API 服务和专用节点选项是相关的起点;具体端点选择是一个单独的决定,由 RPC Assistant 涵盖。

  • 一个拥有足够原生 gas 代币的钱包,用于创建交易和任何初始购买。
  • 一个你控制或信任的 RPC_URL,而非共享公共端点,用于验证查询。
  • 一个区块浏览器或本地解码器,用于检查已签名交易。
  • 在签名前,书面记录预期的供应量、精度和权限策略。

心智模型:将发布交易视为状态转换

将发布视为单一原子状态转换。交易之前,mint 账户不存在。确认之后,mint 以特定供应量和权限集存在,元数据已附加,launchpad 程序已记录该代币。如果交易中的任何指令失败,整个转换会回滚,这就是为什么在界面上“看起来完成”但没有确认签名的发布实际上并未完成。

联合曲线模型在 mint 之上增加了第二个状态机。曲线持有报价资产的储备和新代币的储备,价格是这些储备的函数。创建会初始化曲线;后续的买入和卖出会移动储备。当曲线达到毕业阈值时,流动性会迁移到外部池。这些步骤中的每一步都是单独的交易,因此“已创建”和“已毕业”是应分别验证的不同状态。

  • 已创建:mint 存在,元数据已附加,launchpad 注册已确认。
  • 可交易:联合曲线已用储备初始化。
  • 已毕业:流动性已迁移到外部池(如果 launchpad 使用该模型)。
  • 已撤销:mint 或冻结权限已移除(如果 launchpad 的策略如此)。

使用 curl 验证发布交易

最快的独立检查是按签名获取交易并检查其指令和账户键。将 SIGNATURE 替换为钱包返回的签名,将 RPC_URL 替换为你的端点。响应会显示交易是否成功以及调用了哪些程序。

  • 在信任结果之前,检查 meta.err 是否为 null。
  • 检查 transaction.message.accountKeys 中的新 mint 地址。
  • 在调用的指令中查找代币程序和元数据程序。
  • 确认 launchpad 程序 ID 与你使用的平台匹配。
curl -s RPC_URL -X POST -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getTransaction",
  "params": [
    "SIGNATURE",
    {"encoding": "jsonParsed", "maxSupportedTransactionVersion": 0}
  ]
}'

创建后读取 mint 状态

获得 mint 地址后,查询其解析状态以确认供应量、精度和权限。这一步能发现最常见的意外:launchpad 保留了活跃的 mint 权限,或者设置了你未预料到的冻结权限。以下 Python 片段仅使用标准库和你的 RPC_URL。

  • mintAuthority 为 null 表示供应量固定,无法增发。
  • freezeAuthority 非 null 表示账户可被该密钥冻结。
  • 精度应与你的意图匹配;meme 风格代币通常使用 6 或 9。
  • 将返回的供应量与你在界面上预期的值进行比较。
import json, urllib.request

RPC_URL = "RPC_URL"
MINT = "MINT_ADDRESS"

payload = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getAccountInfo",
    "params": [MINT, {"encoding": "jsonParsed"}]
}
req = urllib.request.Request(
    RPC_URL,
    data=json.dumps(payload).encode(),
    headers={"Content-Type": "application/json"},
)
with urllib.request.urlopen(req) as resp:
    data = json.load(resp)

info = data["result"]["value"]["data"]["parsed"]["info"]
print("supply:", info["supply"])
print("decimals:", info["decimals"])
print("mintAuthority:", info.get("mintAuthority"))
print("freezeAuthority:", info.get("freezeAuthority"))

发布可靠性的可复现测量流程

发布可靠性主要取决于你的 RPC 端点在负载下落地和确认交易的能力。与其相信轶事性说法,不如针对你自己的端点运行一个小型受控测试并记录结果。以下流程设计为可重复,以便你比较端点或一天中的不同时间。

流程:(1) 准备一组固定的 N 笔测试交易,例如小额转账或 devnet mint 创建;(2) 按顺序提交它们,并记录从发送到确认状态的时间;(3) 至少重复运行三次,记录中位数和失败次数;(4) 记录每次运行的端点、区域和时间。不要发布单次运行的数字,也不要在未注明差异的情况下比较不同时间的运行。

  • 记录:端点、区域、时间戳、N、中位确认时间、失败次数。
  • 在各次运行中使用相同的交易形态,以确保比较公平。
  • 将任何有失败的运行视为一个数据点,而不是要丢弃的基准。
  • 在得出任何结论之前,在端点或网络变更后重新运行。

你自己的运行结果表模板

使用类似下表的表格记录你自己的测量结果。单元格故意留空,因为值取决于你的端点、区域和网络条件;用真实观察填充它们才是重点。完成的表格比关于速度的泛泛之谈有用得多。

  • | 运行 | 端点 | 区域 | N | 中位确认(毫秒) | 失败 | 备注 |
  • | 1 | RPC_URL | REGION | 20 | | | |
  • | 2 | RPC_URL | REGION | 20 | | | |
  • | 3 | RPC_URL | REGION | 20 | | | |

排查失败或看起来不对的发布

大多数发布问题分为几类:交易从未确认、已确认但 mint 状态不符合预期,或者代币已创建但不可交易。每一类都有不同的诊断路径,顺序很重要,因为后面的症状可能由更早的失败引起。

如果交易未确认,先检查签名状态,再检查 blockhash 过期。如果已确认但 mint 状态错误,重新读取解析账户并与交易指令比较。如果代币不可交易,检查是否包含 launchpad 注册指令以及联合曲线是否已初始化。

  • 未找到签名:交易可能已被丢弃;使用新的 blockhash 重新提交。
  • 已确认但回滚:检查 meta.err 和失败的指令索引。
  • Mint 存在但元数据缺失:元数据指令可能被省略或静默失败。
  • 已创建但不可交易:缺少 launchpad 注册或曲线初始化步骤。
  • 意外的权限:launchpad 策略与你假设的不同;下次签名前阅读交易。

局限性、权衡以及 launchpad 隐藏的内容

Launchpad 优化创建速度,这意味着它们隐藏了对代币长期行为重要的决策。元数据通常不可变,权限策略由程序固定,联合曲线参数不可由用户配置。对于 memecoin 发布来说,这是一个合理的权衡,但对于需要可升级元数据或受控供应量的代币来说则是不佳的选择。

还存在基础设施权衡。Launchpad 的前端可能使用它自己的 RPC 端点,而你无法控制。如果你想独立验证或监控发布,你需要自己的端点以及自己的轮询或订阅逻辑。自己运行这些工作更多,但能给你一致的视图,不依赖于 launchpad 的界面。

  • 不可变元数据很方便,但限制了发布后的更正。
  • 程序固定的权限策略可能不符合你预期的代币经济学。
  • 联合曲线参数通常不可由创建者调整。
  • 独立验证需要你自己的 RPC 访问和监控。

后续步骤:监控与基础设施

代币创建后,有用的下一步是监控:观察 mint 账户、联合曲线储备和毕业状态。对于 Solana,账户变更的 websocket 订阅比轮询更高效,但使用有界间隔的轮询更易于操作和理解。根据你需要多快做出反应来选择。

在基础设施方面,在确定提供商之前,请查看网络指南和端点选项。Solana devnet 指南是排练完整发布和验证流程而无需花费真实资金的好地方,RPC 定价页面可帮助你估算监控将产生的查询量成本。如果你需要高频监控的一致性能,专用节点是相关选项。

  • 在主网发布前,在 devnet 上排练完整流程。
  • 在 websocket 订阅和有界轮询之间为监控做出选择。
  • 在选择计划之前,根据轮询间隔估算查询量。
  • 保留每笔发布交易签名的记录,以便后续验证。

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始