Access Control List (ACL)
The Access Control List (ACL) in Superfluid allows any account (either a plain Ethereum account or a smart contract) to configure permissions for another account to manage streams on its behalf. It's akin to the money streaming version of the ERC20 approval mechanism.
_(2)-d68872a0214e0d41e8e98dd146f8d2f6.png)
Visualization showing the user creating a flow through FlowSender and all of the streams that have been created
Understanding the functions provided by the ACL involves grasping the flowRateAllowance and permissions parameters.
flowRateAllowance Parameter
The flowRateAllowance can be visualized as a tank that you fill to a certain level for the flowOperator account through your updateFlowOperatorPermissions call. This allowance is then spent by the flowOperator as needed. Every increase in a flow rate on your behalf depletes the flowRateAllowance, while decreases in your flow rate or deletion of a stream do not affect it.
Example:
Imagine giving an operator a flowRateAllowance of 1000 tokens per month (equivalent to a flow rate of 385802469135802 tokens per second). If they create a stream with a flowRate of 500 tokens per month for you, the remaining flowRateAllowance would be 500 tokens per month. Further, if they increase another stream's flow rate by 250 tokens per month, the flowRateAllowance reduces to 250 tokens per month.
permissions Parameter
The permissions value, ranging from 1 to 7, specifies the level of access an operator has over your streams. This is set when calling updateFlowOperatorPermissions.
| Permission Type | Parameter Value |
|---|---|
| Create | 1 |
| Update | 2 |
| Create or Update | 3 |
| Delete | 4 |
| Create or Delete | 5 |
| Delete or Update | 6 |
| Create, Update, or Delete | 7 |