Назад към всички

structs-diplomacy

// Handles permissions, address management, and inter-player coordination in Structs. Use when granting or revoking permissions on objects, registering new addresses, managing multi-address accounts, delegating authority to other players, or setting up address-level access control.

$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namestructs-diplomacy
descriptionHandles permissions, address management, and inter-player coordination in Structs. Use when granting or revoking permissions on objects, registering new addresses, managing multi-address accounts, delegating authority to other players, or setting up address-level access control.

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.

Procedure

  1. Query permissionsstructsd query structs permission [id], permission-by-object [object-id], permission-by-player [player-id].
  2. Grant on objectstructsd tx structs permission-grant-on-object TX_FLAGS -- [object-id] [player-id] [permissions]. Permissions are additive.
  3. Revoke on objectstructsd tx structs permission-revoke-on-object -- [object-id] [player-id] [permissions].
  4. Set on objectstructsd tx structs permission-set-on-object -- [object-id] [player-id] [permissions] — clears existing and applies new set.
  5. Address-level permissionsstructsd tx structs permission-grant-on-address -- [address] [permissions], permission-revoke-on-address -- [address] [permissions], permission-set-on-address -- [address] [permissions].
  6. Address management — Register: structsd tx structs address-register TX_FLAGS -- [player-id] [address] [proof-pubkey] [proof-signature] [permissions]. Revoke: structsd tx structs address-revoke -- [address]. Update primary: structsd tx structs player-update-primary-address -- [player-id] [new-address].

Commands Reference

ActionCommand
Grant on objectstructsd tx structs permission-grant-on-object -- [object-id] [player-id] [permissions]
Revoke on objectstructsd tx structs permission-revoke-on-object -- [object-id] [player-id] [permissions]
Set on objectstructsd tx structs permission-set-on-object -- [object-id] [player-id] [permissions]
Grant on addressstructsd tx structs permission-grant-on-address -- [address] [permissions]
Revoke on addressstructsd tx structs permission-revoke-on-address -- [address] [permissions]
Set on addressstructsd tx structs permission-set-on-address -- [address] [permissions]
Address registerstructsd tx structs address-register -- [player-id] [address] [proof-pubkey] [proof-sig] [permissions]
Address revokestructsd tx structs address-revoke -- [address]
Update primary addressstructsd tx structs player-update-primary-address -- [player-id] [new-address]

TX_FLAGS: --from [key-name] --gas auto --gas-adjustment 1.5 -y

QueryCommand
Permission by IDstructsd query structs permission [id]
Permission by objectstructsd query structs permission-by-object [object-id]
Permission by playerstructsd query structs permission-by-player [player-id]
Addressstructsd query structs address [address]
Addresses by playerstructsd query structs address-all-by-player [player-id]

Verification

  • Permission: structsd query structs permission-by-object [object-id] — list players with access.
  • 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