In Universa Smart Contracts, permissions are the rules specifying (1) who and (2) how can perform any operations on this document/contract.

Among them are:

  • ChangeOwnerPermission – to change the state.owner field of the contract to any new role;
  • ChangeRolePermission – to alter any (specified) role of the contract to any new role;
  • ModifyDataPermission – to edit some fields of the contract; and what fields specifically;
  • ChangeNumberPermission – to edit some numeric data in the contract; and how exactly (the limits of the numeric value, step, etc.);
  • SplitJoinPermission – how multiple (“compatible”) smart contracts can be combined together (joined) or separated to multiple other smart contracts, maintaining some total value in the process, and effectively adding fungibility to this smart contract, i.e. turning this smart contract into some kind of token;
  • RevokePermission – to revoke the contract explicitly.

For the whole set of supported permissions, see the source code:  UniversaBlockchain/universa/…/contract/permissions.