Structs Diplomacy
Important: Entity IDs containing dashes (like 3-1, 4-5) are misinterpreted as flags by the CLI parser. All transaction commands in this skill use -- before positional arguments to prevent this.
Permission System (24-bit)
Permissions use a 24-bit bitmask. Individual permissions can be combined (OR'd together). See knowledge/mechanics/permissions for the full permission system reference.
| Permission | Value | Description |
|---|
| PermPlay | 1 | Basic play access |
| PermAdmin |
2 | Administrative control (manage permissions) |
| PermUpdate | 4 | Update object settings |
| PermDelete | 8 | Delete object |
| PermTokenTransfer | 16 | Transfer tokens |
| PermTokenInfuse | 32 | Infuse tokens into reactors/generators |
| PermTokenMigrate | 64 | Migrate tokens between objects |
| PermTokenDefuse | 128 | Defuse (withdraw) tokens |
| PermGuildMembership | 512 | Manage guild membership |
| PermSubstationConnection | 1024 | Connect to substations |
| PermAllocationConnection | 2048 | Connect to allocations |
| PermReactorGuildCreate | 524288 | Create guilds on a reactor |
| PermHashBuild | 1048576 | Submit build proof-of-work |
| PermHashMine | 2097152 | Submit mine proof-of-work |
| PermHashRefine | 4194304 | Submit refine proof-of-work |
| PermHashRaid | 8388608 | Submit raid proof-of-work |
| PermAll | 16777215 | All permissions (full access) |
Procedure
- 1. Query permissions —
structsd query structs permission [id], permission-by-object [object-id], permission-by-player [player-id]. - Grant on object —
structsd tx structs permission-grant-on-object TX_FLAGS -- [object-id] [player-id] [permissions]. Permissions are additive. - Revoke on object —
structsd tx structs permission-revoke-on-object -- [object-id] [player-id] [permissions]. - Set on object —
structsd tx structs permission-set-on-object -- [object-id] [player-id] [permissions] — clears existing and applies new set. - Address-level permissions —
structsd tx structs permission-grant-on-address -- [address] [permissions], permission-revoke-on-address -- [address] [permissions], permission-set-on-address -- [address] [permissions]. - Guild rank permissions —
structsd tx structs permission-guild-rank-set TX_FLAGS -- [object-id] [guild-id] [permission] [rank] — grant permission on object to guild members at or above specified rank. Revoke: structsd tx structs permission-guild-rank-revoke TX_FLAGS -- [object-id] [guild-id] [permission]. - Address management — Register:
structsd tx structs address-register TX_FLAGS -- [address] [proof-pubkey] [proof-signature] [permissions]. Revoke: structsd tx structs address-revoke -- [address]. Update primary: structsd tx structs player-update-primary-address -- [new-address].
Commands Reference
| Action | Command |
|---|
| Grant on object | INLINECODE17 |
| Revoke on object |
structsd tx structs permission-revoke-on-object -- [object-id] [player-id] [permissions] |
| Set on object |
structsd tx structs permission-set-on-object -- [object-id] [player-id] [permissions] |
| Grant on address |
structsd tx structs permission-grant-on-address -- [address] [permissions] |
| Revoke on address |
structsd tx structs permission-revoke-on-address -- [address] [permissions] |
| Set on address |
structsd tx structs permission-set-on-address -- [address] [permissions] |
| Set guild rank permission |
structsd tx structs permission-guild-rank-set -- [object-id] [guild-id] [permission] [rank] |
| Revoke guild rank permission |
structsd tx structs permission-guild-rank-revoke -- [object-id] [guild-id] [permission] |
| Address register |
structsd tx structs address-register -- [address] [proof-pubkey] [proof-sig] [permissions] |
| Address revoke |
structsd tx structs address-revoke -- [address] |
| Update primary address |
structsd tx structs player-update-primary-address -- [new-address] |
TX_FLAGS: --from [key-name] --gas auto --gas-adjustment 1.5 -y
| Query | Command |
|---|
| Permission by ID | INLINECODE29 |
| Permission by object |
structsd query structs permission-by-object [object-id] |
| Permission by player |
structsd query structs permission-by-player [player-id] |
| Guild rank permission by object |
structsd query structs guild-rank-permission-by-object [object-id] |
| Guild rank permission by object+guild |
structsd query structs guild-rank-permission-by-object-and-guild [object-id] [guild-id] |
| Address |
structsd query structs address [address] |
| Addresses by player |
structsd query structs address-all-by-player [player-id] |
Verification
- - Permission:
structsd query structs permission-by-object [object-id] — list players with access. - Guild rank permission:
structsd query structs guild-rank-permission-by-object [object-id] — list guild rank-based permissions. - Address:
structsd query structs address [address] — verify registration, player link. - Player addresses:
structsd query structs address-all-by-player [player-id] — all linked addresses.
Error Handling
- - Permission denied: Signer lacks permission on object. Check
permission-by-object for current grants. - Address already registered: Use
address-revoke first, or link to different player. - Invalid proof: Address registration requires valid proof pubkey and signature. Verify auth flow.
- Object not found: Object ID may be stale. Re-query to confirm entity exists.
See Also
Structs Diplomacy
重要提示: 包含连字符的实体ID(如3-1、4-5)会被CLI解析器误判为标志。本技能中的所有交易命令在位置参数前均使用--以防止此问题。
权限系统(24位)
权限使用24位位掩码。单个权限可以组合(通过OR运算)。完整权限系统参考请参见 knowledge/mechanics/permissions。
| 权限 | 值 | 描述 |
|---|
| PermPlay | 1 | 基本游戏访问权限 |
| PermAdmin |
2 | 管理控制(管理权限) |
| PermUpdate | 4 | 更新对象设置 |
| PermDelete | 8 | 删除对象 |
| PermTokenTransfer | 16 | 转移代币 |
| PermTokenInfuse | 32 | 向反应堆/发电机注入代币 |
| PermTokenMigrate | 64 | 在对象间迁移代币 |
| PermTokenDefuse | 128 | 提取(撤回)代币 |
| PermGuildMembership | 512 | 管理公会成员资格 |
| PermSubstationConnection | 1024 | 连接至变电站 |
| PermAllocationConnection | 2048 | 连接至分配 |
| PermReactorGuildCreate | 524288 | 在反应堆上创建公会 |
| PermHashBuild | 1048576 | 提交构建工作量证明 |
| PermHashMine | 2097152 | 提交挖矿工作量证明 |
| PermHashRefine | 4194304 | 提交精炼工作量证明 |
| PermHashRaid | 8388608 | 提交突袭工作量证明 |
| PermAll | 16777215 | 所有权限(完全访问) |
操作流程
- 1. 查询权限 — structsd query structs permission [id]、permission-by-object [object-id]、permission-by-player [player-id]。
- 授予对象权限 — structsd tx structs permission-grant-on-object TXFLAGS -- [object-id] [player-id] [permissions]。权限为累加式。
- 撤销对象权限 — structsd tx structs permission-revoke-on-object -- [object-id] [player-id] [permissions]。
- 设置对象权限 — structsd tx structs permission-set-on-object -- [object-id] [player-id] [permissions] — 清除现有权限并应用新设置。
- 地址级权限 — structsd tx structs permission-grant-on-address -- [address] [permissions]、permission-revoke-on-address -- [address] [permissions]、permission-set-on-address -- [address] [permissions]。
- 公会等级权限 — structsd tx structs permission-guild-rank-set TXFLAGS -- [object-id] [guild-id] [permission] [rank] — 向达到或超过指定等级的公会成员授予对象权限。撤销:structsd tx structs permission-guild-rank-revoke TXFLAGS -- [object-id] [guild-id] [permission]。
- 地址管理 — 注册:structsd tx structs address-register TXFLAGS -- [address] [proof-pubkey] [proof-signature] [permissions]。撤销:structsd tx structs address-revoke -- [address]。更新主地址:structsd tx structs player-update-primary-address -- [new-address]。
命令参考
| 操作 | 命令 |
|---|
| 授予对象权限 | structsd tx structs permission-grant-on-object -- [object-id] [player-id] [permissions] |
| 撤销对象权限 |
structsd tx structs permission-revoke-on-object -- [object-id] [player-id] [permissions] |
| 设置对象权限 | structsd tx structs permission-set-on-object -- [object-id] [player-id] [permissions] |
| 授予地址权限 | structsd tx structs permission-grant-on-address -- [address] [permissions] |
| 撤销地址权限 | structsd tx structs permission-revoke-on-address -- [address] [permissions] |
| 设置地址权限 | structsd tx structs permission-set-on-address -- [address] [permissions] |
| 设置公会等级权限 | structsd tx structs permission-guild-rank-set -- [object-id] [guild-id] [permission] [rank] |
| 撤销公会等级权限 | structsd tx structs permission-guild-rank-revoke -- [object-id] [guild-id] [permission] |
| 地址注册 | structsd tx structs address-register -- [address] [proof-pubkey] [proof-sig] [permissions] |
| 地址撤销 | structsd tx structs address-revoke -- [address] |
| 更新主地址 | structsd tx structs player-update-primary-address -- [new-address] |
TX_FLAGS: --from [key-name] --gas auto --gas-adjustment 1.5 -y
| 查询 | 命令 |
|---|
| 按ID查询权限 | structsd query structs permission [id] |
| 按对象查询权限 |
structsd query structs permission-by-object [object-id] |
| 按玩家查询权限 | structsd query structs permission-by-player [player-id] |
| 按对象查询公会等级权限 | structsd query structs guild-rank-permission-by-object [object-id] |
| 按对象+公会查询公会等级权限 | structsd query structs guild-rank-permission-by-object-and-guild [object-id] [guild-id] |
| 查询地址 | structsd query structs address [address] |
| 按玩家查询所有地址 | structsd query structs address-all-by-player [player-id] |
验证
- - 权限: structsd query structs permission-by-object [object-id] — 列出拥有访问权限的玩家。
- 公会等级权限: structsd query structs guild-rank-permission-by-object [object-id] — 列出基于公会等级的权限。
- 地址: structsd query structs address [address] — 验证注册状态和玩家关联。
- 玩家地址: structsd query structs address-all-by-player [player-id] — 所有关联的地址。
错误处理
- - 权限被拒绝: 签名者缺少对象权限。检查permission-by-object以查看当前授权。
- 地址已注册: 先使用address-revoke,或关联到其他玩家。
- 无效证明: 地址注册需要有效的证明公钥和签名。验证认证流程。
- 对象未找到: 对象ID可能已过时。重新查询以确认实体存在。
参见