知识问答

模块化多程序系统的 Solana/Anchor 授权最佳实践(跨程序共享角色,CPI)

阅读字号

回购似乎是私人的: 任何选项都有其优点和缺点,因此您可以创建混合实施来缓解,以下是您可以采用的一些多程序应用程序:

Marinade Finance:针对特定领域采用单核程序+卫星程序。您可以检查他们如何处理管理权限与操作权限(核心程序有一个理事会多重签名作为管理员,但有一个 PDA 用于权益提取操作)。此外,推荐程序是 CPI 到主程序中的包装程序

Marginfi:使用基于组的隔离和共享程序

Ellipsis Labs:采用核心程序+CPI进入核心的辅助程序。 phoenix-v1是核心订单簿,席位经理和做市商将CPI纳入其中

常见陷阱:

盲目信任调用者程序 ID — 仅仅因为 CPI 来自程序 X 并不意味着程序 X 验证了用户。务必重新检查相关签名者。 忘记 PDA 不会在指令之间保留签名者状态 — 在指令 1 中签名的 PDA 不会自动成为指令 2 中的签名者,除非您再次使用 invoke_signed 进行 CPI。 集中升级权限——如果所有程序共享一个升级权限,那么你的模块化就是虚幻。考虑多重签名。

继续了解数据目录搜索