简介
MPL-3643 快速入门
Last updated September 28, 2026
本页介绍在 MPL-3643 上构建之前需要准备什么、应选择哪条路径,以及发行代币、投资者入驻和执行合规转账的流程形态。
MPL-3643 已在 Solana 主网上以抢先体验方式运行 — 申请 alpha 访问权限开始构建。
审计状态
MPL-3643 尚未经过审计。未与 Metaplex 协调前,请勿托管真实资产。
摘要
在 MPL-3643 上构建,意味着将 Token-2022 铸币与 Token ACL、四个 MPL-3643 程序以及一个 KYC 提供商组合起来。操作顺序很重要,因为其中一步是不可逆的。
选择路径
三类用户会基于 MPL-3643 进行构建,他们首先需要的东西各不相同。
无论选择哪条路径,有一个事实决定了其他一切:每个 MPL-3643 代币账户都是创建即冻结的,只有合规的钱包才能解冻。
前提条件
工具
| 要求 | 版本 | 原因 |
|---|---|---|
| Node.js | 20.18.0 或更高 | TypeScript SDK 和生成的客户端需要 |
| Solana CLI | 2.1.0 或更高 | 开发网交互和密钥管理 |
| 开发网 RPC 端点 | — | 必须支持 Token-2022 |
Rust 集成方还需要与程序构建所用版本一致的 Anchor 和 Solana 工具链。
链上前提条件
在任何 MPL-3643 指令能对你的代币成功执行之前,必须满足四个条件。
- 铸币是
DefaultAccountState = Frozen的 Token-2022。 此扩展在铸币创建后无法添加。 - 冻结权限已委托给 Token ACL,且 Token ACL 配置中的无许可解冻和无许可冻结均已启用,配置已封存,这些设置之后无法更改。
- 你持有注册表代币发行者角色授权。 这使你无需 Metaplex 联合签名即可创建自己的合规、门控和收益配置。
- 受信任的证明者覆盖你要求的所有主题。 你固定(pin)的证明者必须处于活跃状态,并获得了
KYC以及代币必需主题集中每个主题的授权。
两个铸币决定无法反悔
DefaultAccountState = Frozen 和 transfer hook 扩展都在铸币创建时固定。没有钩子的铸币永远无法获得逐笔转账模块 — 没有锁仓、没有交易量上限、没有暂停时段、没有交易场所限制。请在创建铸币之前决定。
代币发行流程
发行合规代币是一个由程序强制执行顺序的引导序列。
- 创建 Token-2022 铸币,设置
DefaultAccountState = Frozen;如果将来可能需要逐笔转账模块,还要加上 transfer hook 扩展。 - 为铸币创建 Token ACL 配置,启用两个无许可标志,然后封存。
- 初始化门控配置 — 需要原始铸造权限。这一步同时会创建代币的信任范围。
- 将接受的 KYC 提供商添加到信任范围。
- 如果代币会用到,初始化生命周期的收益和恢复配置 — 需要原始铸造权限。
- 初始化合规配置。 这是权限转移的分界线。
- 初始化门控的 extra account meta 列表,它会读取已生效的合规配置并绑定门控。
- 启用并配置模块,然后通过 Compliance Module 的铸造流程铸造初始供应量,以保持持有者核算同步。
第 6 步是单向门
合规初始化会不可逆地将铸币的 MintTokens 权限转移给 ComplianceConfig PDA。所有需要原始铸造权限的指令 — 第 3 步和第 5 步 — 都必须在此之前执行。没有恢复路径:没有信任范围就发行的代币之后无法再补上。SDK 会为你安排这个顺序;如果你直接使用生成的客户端,顺序由你自己负责。
投资者入驻流程
投资者从一次链下验证开始,经过四个步骤获得资格。
- 链下 KYC。 提供商验证投资者的文件。
- 认证。 通过的结果被记录为 Solana Attestation Service 认证,或准备为由证明者签名的
Direct声明。 - 附加声明。 受信任的证明者为代币要求的每个主题附加一个与钱包绑定的
Claim;当代币执行司法辖区规则时,居住地声明会记录投资者的 ISO-3166 国家代码。 - 解冻。 任何人提交
thaw_permissionless;Gate Program 检查资格,Token ACL 解冻账户。
第 3 步对每个受信任的证明者只需进行一次 — 受信任的证明者是用其密钥在链上附加声明的一方,通常是代币发行方。该标准的设计是与可复用 KYC 提供商配合使用,在投资者同意的情况下,之前的验证可以被共享,而无需重复。
合规转账流程
转移 MPL-3643 代币是一个三阶段的信封流程,而不是单条指令。
- 准备(Prepare) — 确保目标方的 Associated Token Account 存在并将其解冻;如果代币有钩子,还要解析 transfer hook 账户。
- 转账(Transfer) — 一笔 Token-2022
transfer_checked,适用时附加钩子元数据。 - 结算(Finalize) — 如果代币支付收益,为双方登记收益检查点。
不要跳过准备阶段:向从未持有过该代币的接收者转账必然失败,因为对方的账户创建即冻结。
运营职责
合规代币不是一劳永逸的。两个后台任务保证其正确性。
| 任务 | 做什么 | 不运行的后果 |
|---|---|---|
| 重新冻结 cranker | 对不再合规的持有者调用 freeze_permissionless | KYC 过期的持有者无限期继续交易 |
| 收益 crank 与检查点 | 推进全局指数并结算持有者余额 | 收益不再累积,账目逐渐偏离 |
两者都是无许可的,因此可以由发行方运营、第三方运营或通过激励机制运营。
构建前需要决定的事项
四个决定塑造了下游的一切,其中三个之后无法更改。
| 决定 | 可逆吗? | 影响 |
|---|---|---|
| 铸币创建时启用 transfer hook | 否 | 决定逐笔转账模块将来是否可能 |
DefaultAccountState = Frozen | 否 | 必需;没有它 MPL-3643 无法执行任何规则 |
| 将 permanent delegate 设为恢复 PDA | 否 | 决定强制恢复将来是否可能 |
| 启用哪些模块 | 大体可以 | 持有者数量上限和投资者数量上限必须在任何供应量存在之前启用 |
注意事项
- MPL-3643 代币是 Token-2022 铸币。硬编码 SPL Token 程序 ID 的集成将看不到它们。
- 持有者数量上限和投资者数量上限必须在任何供应量存在之前启用,且持有者数量上限一旦激活就无法禁用。
- 请在所有地方使用规范的 Associated Token Account。同一钱包拥有的非规范代币账户不会被持有者核算追踪,会悄无声息地使上限和收益失去同步。
- 特定配置是否满足特定证券监管制度,是发行方及其法律顾问需要判断的法律问题。这些页面描述的是程序执行的内容。
- 由 Metaplex Foundation 维护。最后核实于 2026-09-28。
FAQ
如何获得 MPL-3643 的访问权限?
MPL-3643 已在主网上以抢先体验方式运行。申请访问权限。Alpha 合作伙伴将获得直接的入驻支持。
发行 MPL-3643 代币之前需要什么?
一个以 DefaultAccountState = Frozen 创建的 Token-2022 铸币、一个启用了两个无许可标志并已封存的 Token ACL 配置、一个注册表代币发行者角色授权,以及一个获得了 KYC 及代币所需其他全部主题(如合格投资者认定、制裁筛查)授权的受信任证明者。
应该使用 SDK 还是生成的程序客户端?
使用 SDK。它会安排不可逆的引导顺序,并将每个管理操作路由到正确的直接调用或门控包装调用。生成的客户端面向需要指令级控制、并愿意自己负责顺序的集成方。
我需要自己运行 cranker 吗?
需要有一个 cranker 存在。没有任何机制会自动重新冻结不合规的持有者,因此没有 cranker 的话,KYC 过期的持有者会一直交易,直到有人调用 freeze_permissionless。cranker 是无许可的,所以可以是你自己的、第三方的,或一个有激励的网络。
我可以给已经发行的代币添加逐笔转账规则吗?
不可以。逐笔转账模块在 Token-2022 transfer hook 内部运行,而 Token-2022 扩展在铸币创建时固定。不带钩子发行将永久排除锁仓、交易量上限、暂停时段和交易场所限制。
