Access Control List (ACL)
An approval layer for creating, updating, or deleting streams on another user’s behalf.
The Access Control List (ACL) allows any account (plain EOA or contract) to configure permissions for another account to create/update/delete streams on its behalf.
It's basically the money streaming equivalent of the ERC20 approval mechanism!
If you're checking out the functions ACL provides you, you'll want to understand the
You can think of
flowRateAllowanceas a tank. When you set
updateFlowOperatorPermissionscall imagine you've filled up that tank to a level of your choosing for the
flowOperatoraccount can spend its
flowRateAllowancetank as it likes. Every time it increases a flow rate on your behalf, its
flowRateAllowancetank is depleted by the amount of the increase.
On the other side, actions that decrease your flow rate (updating a stream to a lower flow rate or deleting one) don't affect
flowRateAllowanceis too small for it to create/increase a flow, then its action is reverted. This entire dynamic is just like the ERC20 allowance mechanism! Here's an example to drive it home 👇
Let’s assume that we enable an operator to create and update streams with a flowRate allowance of 1000 tokens per month (which would be represented as a flow rate of
385802469135802tokens per second). If our operator creates a stream on our behalf with a
flowRateof 500 tokens per month, then the operator’s remaining
flowRateAllowancebecomes 500 tokens per month (
1000/month - 500/month). Then, if our operator updates another one of our streams that is already outstanding by increasing our
flowRateby 250 tokens per month, then our operator’s
flowRateAllowancewill decrease by another 250 tokens per month, leaving the remaining flowRateAllowance at 250 tokens per month (
500/month - 250/month).