核心用法
structs-diplomacy 是 Structs 游戏生态中的权限管理中枢,负责处理三类核心场景:对象级权限控制(玩家/对象之间的授权)、地址级身份管理(多地址账户绑定与切换)、以及公会等级权限(基于成员等级的批量授权)。所有操作均通过 structsd CLI 执行,采用25位掩码系统实现细粒度权限组合。
关键命令包括:
- 授权管理:
permission-grant-on-object(追加权限)、permission-set-on-object(覆盖设置)、permission-revoke-on-object(移除权限) - 地址操作:
address-register(注册新地址)、address-revoke(解绑地址)、player-update-primary-address(更换主签名地址) - 公会权限:
permission-guild-rank-set(按等级批量授权)、permission-guild-rank-revoke(撤销等级权限)
显著优点
1. 细粒度权限设计:25位掩码支持从基础游戏权限(PermPlay=1)到完全控制(PermAll=33554431)的任意组合,避免"全有或全无"的授权困境。
2. 多层委托架构:支持对象级、地址级、公会级三重授权维度,适应个人多设备、组织分级管理、自动化代理等复杂场景。
3. 安全优先的 CLI 设计:强制 -- 分隔符防止 ID 被解析为 flags,所有交易命令默认为 Tier 1/2 需确认,禁止自动批准(-y 需显式授权)。
潜在局限
- 不可逆风险:
permission-grant-on-object授予PermAll后,若接收方转为恶意行为,链上无原生撤销机制(需依赖社交层追索)。 - 身份劫持攻击面:
address-register若使用攻击者提供的 proof 材料,将直接赋予其代理签名权。 - 权限计算复杂:OR 组合逻辑对非技术用户门槛较高,误设
permission-set-on-object可能意外清除自身必要权限。
适合人群
- 公会管理者(需批量配置成员权限等级)
- 多账户/多设备玩家(需统一身份管理)
- 自动化脚本运营者(需受限权限代理)
- 安全审计人员(需验证对象访问控制矩阵)
常规风险
| 风险类别 | 具体表现 | 缓解措施 |
|---------|---------|---------|
| 权限过度授权 | `PermAll` 授予不可信方 | 遵循最小权限原则,优先使用特定比特位 |
| 身份丢失 | 撤销唯一可用地址 | 操作前执行 `address-all-by-player` 确认冗余 |
| 主地址误切 | `player-update-primary-address` 指向失控地址 | 先验证新地址可签名再执行 |
| CLI 解析错误 | 含 `-` 的实体 ID 被误读 | 严格使用 `--` 前缀分隔位置参数 |