Roles

In Universa Smart Contracts, roles are a method to specify who exactly owns some permission.

Among them are:

  • SimpleRole – when the permission bearer is specified with just a single private key – actually, its matching public key or Key Address. Effectively means, “for success, the document should be signed by the specific private key having the Key Address AAAA”).
  • RoleLink – refers to some other role; often that is some predefined role like owner. Effectively means (in case of linking the state.owner role), “for success, the document should be signed by its current owner no matter who owns it at the moment”.
  • ListRole – refer to a list of multiple other roles, together with the “mode” of using them together:
    • Mode.ALL – for the role to be satisfied, all of the listed roles should be satisfied;
    • Mode.ANY – for the role to be satisfied, any of the listed roles (even just one) should be satisfied;
    • Mode.QUORUM – for the role to be satisfied, (at least) some specified number of the listed rolesshould be satisfied.

Other role types may appear later.

In practical usage, besides just the role basic definition, any role may even contain some extra references to check.

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