We talked about the permissions system of the Fairpool shares.
The Fairpool contract distributes the trading fees to multiple parties:
* The referrals of the seller
* The contract owners (marketers, developers)
The Fairpool contract should work for multiple use cases, ranging from personal tokens to DAOs. Therefore, it's better to implement a dynamic list of shares.
However, the shares must be protected with a permissions system to ensure that every change to shares is fair.
The basic definitions of the permissions system are:
* Share values - numerator, children
* Share bounds - numeratorMin, numeratorMax, childrenNumeratorsSumMax, childrenNumeratorsSumMin
* Share fields - any of share values, any of share bounds
The basic principles of the permissions system are:
* Each share field has an array of owners
* Changing a share field requires signatures of all owners of that particular field.
The signatures are checked on-chain using native EVM functions.
This allows building shares where changing the numerator within bounds requires only a signature of a single share beneficiary, but changing numeratorMax requires signatures of share beneficiary & parent share owners.