TokenF Modules
Last updated
Last updated
Modules are the backbone of the TokenF framework regulatory mechanics. All rules, requirements, and compliance for KYC and various token transfers can be customized via modular plugin-based architecture.
In the vanilla TokenF version there are two main types of modules:
KYC modules
Regulatory modules
The KYC modules are responsible for any KYC-related compliance checks while Regulatory modules are used to perform conditional transfer limits / token balance obligations / operational limits / etc.
Modules represent quite a complex set of smart contracts that are related through inheritance and plugged in through composition to the aforementioned RegulatoryCompliance
and KYCCompliance
facets.
The diagram depicts the relationships between contracts within the TokenF modules architecture. The bulk of the logic is implemented in the AbstractModule
that AbstractKYCModule
and AbstractRegulatoryModule
extend. Certain modules will then inherit from AbstractKYCModule
and AbstractRegulatoryModule
contracts to define handlers, their relation to claim topics, claim topics keys construction, and perform the required checks.
The AbstractModule
contract is the basis for writing new modules for the TokenF framework. The contract implements the logic of claim topics management, the definition of handlers, and stores the “weak reference” to the TokenF token contract itself (for certain operations that should only be called by the token).
Moreover, the AbstractModule
contract defines an interface through which the TokenF managers will “speak” with the module.
The AbstractKYCModule
contract implements the AbstractModule
interface and extends it by introducing the isKYCed
function. This function is used by the KYCCompliance
TokenF facet to authorize the user of the token. By default, the claim topic key is keccak256(function selector)
.
The AbstractRegulatoryModule
contract is very similar to the AbstractKYCModule
in terms that it also implements the AbstractModule
interface. However, two new functions are introduced: canTransfer
and transferred
. RegulatoryCompliance
TokenF facet will call them to perform regulatory compliance checks. Similar to AbstractKYCModule
, the default claim topic key is keccak256(function selector)
.