Permission Program
链上权限管理(即将推出)
Ephemeral Rollups SDK
用于 Private Ephemeral Rollups 的 SDK
概述
Private Ephemeral Rollups 是 Ephemeral Rollups 的一种形式,它在以合规为核心的 Trusted Execution Environment 中,为受权限控制的账户提供细粒度权限管理。每个权限账户都会维护一份成员列表,并通过特定标志来决定这些成员可以执行哪些操作。核心概念
- Permission Account:用于存储特定账户访问控制规则的 PDA
- Members:通过标志授予特定权限的地址
- Flags:用于定义成员可执行操作的位掩码(authority、查看日志、查看余额等)
- Public Permissions:当成员被设置为
None时,受权限控制的账户会暂时变为可见
成员标志
成员标志为每位成员定义细粒度权限。你可以通过按位 OR 组合多个标志,以授予多个权限。 标志说明:- AUTHORITY:允许成员更新和委托权限设置、添加或移除其他成员,以及更新成员标志。
- TX_LOGS:允许成员查看交易执行日志。
- TX_BALANCES:允许成员查看账户余额变更。
- TX_MESSAGE:允许成员查看交易消息数据。
- ACCOUNT_SIGNATURES:允许成员查看账户签名
- Rust SDK
- Pinocchio
- Web3.js
- Kit
Ephemeral Permission
EphemeralPermission 账户完全运行在 Ephemeral Rollup 上,由已委托的 PDA
承担租金——无需在 Base Layer 上创建、委托或 commit-and-undelegate
任何权限账户。三个 CPI 操作即可覆盖完整生命周期:Create、Update、Close,
全部由 ER 上的数据账户作为 PDA 签名,通过 MagicBlock 的 Permission Program
ACLseoPoyC3cBqoUtkbjZ4aDrkurZW86v19pXz2XQnp1 调用。DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh)。委托完成后,PDA 会使用其程序种子
在 ER 上签署全部三个权限操作,并支付 ephemeral permission 的租金——因此必须在
initialize 时预先充值。完整流程请参阅
快速开始。
这些公共验证器可用于开发环境。请确保在你的委托指令中添加对应的 ER 验证器:
主网- 亚洲 (as.magicblock.app):
MAS1Dt9qreoRMQ14YQuhg8UTZMMzDdKhmkZMECCzk57 - 欧盟 (eu.magicblock.app):
MEUGGrYPxKk17hCr7wpT6s8dtNokZj5U2L57vjYMS8e - 美国 (us.magicblock.app):
MUS3hc9TCw4cGC12vHNoYcCGzJG1txjgQLZWVoeNHNd - TEE (mainnet-tee.magicblock.app):
MTEWGuqxUpYZGFJQcp8tLN7x5v9BSeoFHYWQQ3n3xzo - Asia Tokyo (as-tyo.magicblock.app):
MSHuBweMkNp4yPLDkPLA8bLRHbDmURWjYzsxrcBjix8 - South America (sa.magicblock.app):
MSARyz2yVTkqiYQWWgaEtUKug7oCF7PphE9GjEYHtDh
- 亚洲 (devnet-as.magicblock.app):
MAS1Dt9qreoRMQ14YQuhg8UTZMMzDdKhmkZMECCzk57 - 欧盟 (devnet-eu.magicblock.app):
MEUGGrYPxKk17hCr7wpT6s8dtNokZj5U2L57vjYMS8e - 美国 (devnet-us.magicblock.app):
MUS3hc9TCw4cGC12vHNoYcCGzJG1txjgQLZWVoeNHNd - TEE (devnet-tee.magicblock.app):
MTEWGuqxUpYZGFJQcp8tLN7x5v9BSeoFHYWQQ3n3xzo
- 本地 ER (localhost:7799):
mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev
1
在 ER 上初始化一个带有初始成员和隐私标志的
EphemeralPermission 账户。
幂等——如果已存在则跳过。2
切换隐私标志,或添加 / 移除 / 更新成员。更新会立即在 ER 上生效。
3
当不再需要权限时,关闭 ER 上的
EphemeralPermission 账户,
并将租金退还给数据 PDA。Ephemeral Permission 操作
- 1. 创建 Ephemeral Permission
- 2. 更新 Ephemeral Permission
- 3. 关闭 Ephemeral Permission
通过 使用场景:
CreateEphemeralPermissionCpi 在 ER 上初始化一个新的 EphemeralPermission
账户。Payer = 已委托的数据 PDA,它使用其程序种子签名,并使用 initialize
时预先充值的 lamports 来支付租金。- Anchor
- Rust SDK
- Pinocchio
- Kit
- Web3.js
- 为 ER 上新委托的 PDA 启动访问控制
- 以公开模式启动(
is_private: false、成员为空),后续通过 Update 收紧
最佳实践
- Authority 管理:始终至少为一位可信成员分配
AUTHORITY_FLAG - 最小权限原则:仅向每位成员授予必要的标志
- 实时更新:权限可以在不取消委托的情况下于 Private Ephemeral Rollup 上实时更新,从而实现动态访问控制调整
- 清理:取消委托并关闭未使用的权限账户,以释放 SOL
安全注意事项
- 签名者验证:只有拥有
AUTHORITY_FLAG的成员或带有受权限控制账户的程序才能授权变更 - 公开账户:将成员设置为
None会使账户对外公开可见 - 默认 Authority:默认情况下,受权限控制账户的所有者会被添加为权限账户成员中的 permission authority
- 空成员列表:如果
members字段被设置为空列表,则受权限控制账户将完全受限且保持私密。只有该账户所有者才能修改权限 - 访问审计:使用成员标志来审计和控制访问
访问控制
细粒度访问控制
链上隐私
隐私机制与核心概念
授权
授权框架
合规框架
合规标准与指南

