Replies: 4 comments 8 replies
-
I'm in favor of allowing multiple Streams between 2 addresses. Primarily because this would be a better reflection of the value dynamics in the real world (and would, therefore, make the adoption of SabVM easier/more probable). Here are some more real-world examples:
In practice, the multiple Streams between the same 2 users could be "simulated" via the MNTs (1 Stream per each token), with the total number of supported MNTs practically becoming the maximum total number of Streams a user can create towards some other user. However, this is a mere workaround, and is far from being user-friendly.
Personally, I don't think this would be a good idea. Both for the potential issues you've outlined in the OP, and because this would go against the general principle of abstraction/composition, as instead of having the simpler/basic objects (Streams) on the lower level (the VM) and the more complex/composite/abstract objects (Groups of Streams) - on the higher level (the application), we'd have the opposite. What if we introduce an abstraction layer in the VM (let's call it a "Stream Group"), tracking all of the same-token Streams between 2 users - and summarizing the current stats of the underlying Streams into a single place? A Stream "index" (database-style) of sorts. So, for example, if there are 2 Streams from A to B, streaming 2 and 3 token units per second respectively, the Stream Group would only have the information of 5 units per second - and would be updated whenever any of the underlying Streams are changed. Related idea: let users include "notes" into their Streams, so that it's easier for them to distinguish between them? 🤔 |
Beta Was this translation helpful? Give feedback.
-
Tradeoffs are a possible necessity, of course. A general approach we would like to follow, though, could be the following: implement the desired functionality in the most logical way possible first - and accept tradeoffs only if/when the risk of the unbounded computational growth has a significant chance of materializing. In other words, functionality first, optimizations second.
Absolutely.
Makes sense, yeah. |
Beta Was this translation helpful? Give feedback.
-
I'd categorize having a single edge between sender and recipient as an inconvenient not a problem. Using a single edge drastically simplifies our architecture, which I'd say is high priority at the moment. For use-cases such as the Google example or the real-estate, I'd just abstract this away in our first version to a safe or something that holds sub-accounts. Inconvenient (sender would stream to a single entity with multiple addresses) but easier to digest. P.S. I think Superfluid has the same issue at the moment right? No multiple edges. |
Beta Was this translation helpful? Give feedback.
-
Note to future self: To enable multiple streams between users, we will need to set IDs for streams. This isn't currently a requirement because we can identify a stream just by the sender, the recipient, and the token ID. |
Beta Was this translation helpful? Give feedback.
-
Context
As evidenced by this feature request, there are use cases for allowing multiple streams between the same two addresses, such as:
The catch is that this feature runs counter to the design proposed in our V3 Slides, which contemplated a maximum of 1 stream (i.e., one edge) between 2 user addresses.
Implementation
Two ideas:
Analysis
The 1st approach is unrealizable because we already have concerns about unbounded computational growth. Expanding the scope of the graph to allow multiple edges would add fuel to the fire.
The only realistic solution is to implement it off-chain using an application (call it SabSub) that would work something like this:
There are downsides, such as the risk that third-party apps unaware of SabSub would continue displaying just 1 stream between Alice and Google. This would create confusion if either Alice or Google interacted with these third-party apps.
But we might have to accept those downsides if we want to go to mainnet before we burn through our treasury :D
RFC
I don't consider this a high-priority feature. We can launch the chain without it and monitor demand along the way.
Cc @IaroslavMazur, @razgraf.
Beta Was this translation helpful? Give feedback.
All reactions