Quiz Entry - updated: 2026.07.30
In NPL, what is the difference between a permission and an obligation?
A permission is an action a party is allowed to perform; an obligation is an action that must be performed before a deadline — with an automatic fallback if it is not.
Both are methods on a protocol that authorized parties can invoke, but they differ in modality:
- Permission — optional. It says a party may do something (e.g. sign, approve, update), gated by the current state and the party's rights.
- Obligation — mandatory and time-bound. It says a party must do something before a given deadline. If the deadline passes without fulfilment, the Runtime fires the obligation's
otherwisebranch and changes the protocol's state automatically.
Together, permissions ("may") and obligations ("must") let you model both the freedoms and the duties of a workflow directly in the business logic.