Compliance Defined
- Compliance is an evaluable property of either:
- a transaction
- a graph of transactions
- a account
- with respect to one or more policies.
- There are many policies, associated with many regulatory / compliance regimes.
- Any given policy may change over time.
- Compliance is a property that might retroactively change -- evaluating an item X as compliant with Y at time T does not imply that item X always will evaluate as compliant with Y (for example at time T+e)
- Time of evaluation -- compliance may be evaluated at:
- At time of transaction submission -- compliance may need to be evaluated at the time of transastion processing layer, whether through SVM in the program layer, or as a part of the validator client.
- At time of transaction graph analysis (TGA) -- compliance may need to be evaluated
Design Constraints
- Time of evaluation
- Domains of access (on-chain, off-chain)
- CU overhead
- Diversity and mutability of policies
- Places where compliance-related information can live on-chain -- instruction data, account data, implicit property of a transaction (i.e. the fact that a transaction was not rejected by a program), implicit property of a PDA (i.e. derived from some seeds by a program that enforces certain conditions)
- Foreknowledge (or lack-thereof) of the set of policies against which an item may be evaluated.
User Interaction
- Who is concerned with whether an item is compliant? -- Regulatory bodies, organizations (and their end-users), SVM programs.
- Compliance properties may affect user behavior. Therefore, users must be provided the ability to introspect on whether relevant items are compliant, which informs their decision-making.