Money Streaming
Last updated
Last updated
Definition
Money Streaming is a process where tokens are continuously transferred from a sender to a receiver at a defined per-second rate. The result of this process is a "stream". A stream is perpetual and will continue until canceled by the sender/the receiver or the sender's Super Token balance is depleted.
Flow Rate: The rate at which the sender's balance decreases and the receiver's increases per second.
Netflow Rate: The rate of change of an account's Super Token balance per second.
Sender: The account initiating the stream, specifying a receiver and flow rate.
Receiver: The account on the receiving end of a stream.
CRUD Timestamp: The timestamp when a stream is created, updated, or deleted.
Real-Time Balance: The change in the account's Super Token balance since the last CRUD action.
Static Balance: The Super Token balance at the last CRUD timestamp.
Current Balance: The sum of Static Balance and Streaming Real-Time Balance.
info
NOTE: Flow rates are per second but can be represented in different time units for convenience. For example, "100 USDCx/mo." is approximately "0.0039 USDCx/sec."
The netflow for an account is calculated by netting its inbound and outbound streaming flow rates.
Example of Net Flow calculation
When a stream is modified, the following are updated in the Superfluid contracts:
New Netflow rate
New CRUD timestamp
New Static Balance: set to the Current Balance at the CRUD timestamp
Real-Time Balance reset to zero
The Real-Time Balance then adjusts by-the-second at the netflow rate.
Streaming Real-Time Balance
info
NOTE: Creating a stream is a one-time action. The balance is dynamically calculated and does not require continuous transactions.
Static Balance: Initial balance at the latest CRUD timestamp
Real-Time Balance: Netflow Rate * Seconds since the latest CRUD timestamp
Current Balance: Static Balance + Real-Time Balance
Let's examine how Account A's balance changes with stream interactions.
1. Starting an Outbound Stream
Outbound Stream
Initial Balance: 1000 USDCx
Flow Rate to Account B: 0.01 USDCx/sec
Time Elapsed: 1000 seconds
Current Balance: 990 USDCx
2. Increasing the Flow Rate
Flow Rate Increase
Static Balance: 990 USDCx
New Flow Rate: 0.02 USDCx/sec
Current Balance: 990 USDCx
3. Time Elapse Post Flow Rate Change
Time Elapse
Time Elapsed: 2000 seconds
Current Balance: 950 USDCx
4. Receiving an Inbound Stream
Inbound Stream
Inbound Flow Rate from Account C: 0.04 USDCx/sec
Current Balance: 950 USDCx
5. Post Inbound Stream Time Elapse
Post Inbound Stream
Time Elapsed: 1000 seconds
Current Balance: 970 USDCx
6. Deleting the Outbound Stream
*Deleting Inbound Stream
Static Balance: 970 USDCx
Current Balance: 970 USDCx
Discrete Actions and Active Streams
Transferring, wrapping, or unwrapping Super Tokens, being lump-sum actions, only affect the Static Balance and not the Real-Time Balance.
Interaction with Distributions
Actions within Distributions have their own Real-Time Balance and are added separately to the overall account balance.
Accounts with negative net flow rates reaching zero balance are considered critical. Superfluid handles this with buffer deposits and Sentinels.
Buffer deposits are taken when opening a stream, serving as a reserve in case of a critical balance. If a stream is closed before hitting critical, the buffer is refunded. In cases where the account becomes critical, the buffer is used to continue outbound streams until Sentinels intervene.
Sentinels are external actors who monitor Constant Flow Agreements (Money Streaming), close streams of critical accounts, and earn buffer deposits.
For more details, see the Liquidations and Sentinels pages.