Each Lockup contract is a singleton that stores all streams created by all users. The following diagrams will give you an idea of how the storage layout looks like.
An example of two streams being stored in the Lockup Dynamic contract.
A collection of scenarios to help you understand how the Sablier Protocol works from end to end.
Set up proxy
This is the first action that the sender needs to take in order to create a stream via the Sablier Interface. It is a one-time action that deploy a PRBProxy contract for senders.
Create a stream
Withdraw from a stream
Cancel a stream
When the recipient cancels a stream, the sender is automatically refunded the remaining balance.
If the sender creates the stream via a proxy, the proxy plugin will be notified of the cancellation and will auto-forward the refund to the sender.