An action is performed by an actor, aka an account. It may be created explicitly and authorized by signatures or might be generated implicitly by executing application code.
This follows the design pattern of React Flux where actions are named and then dispatched to one or more action handlers (aka stores). In the context of sysio, every action is dispatched to the handler defined by account 'scope' and function 'name', but the default handler may also forward the action to any number of additional handlers. Any application can write a handler for "scope::name" that will get executed if and only if this action is forwarded to that application.
Each action may require the permission of specific actors. Actors can define any number of permission levels. The actors and their respective permission levels are declared on the action and validated independently of the executing application code. An application code will check to see if the required authorization were properly declared when it executes.
Definition at line 56 of file action.hpp.