-
Notifications
You must be signed in to change notification settings - Fork 324
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
On-chain stake pool operator to delegates communication #44
Conversation
This would be a game changer for the SPO / delegator relationship
|
Thank you very muck Marek for putting this one out. Such a communication channel would be a great addition to the classical tool-box (newsletters, Telegram, etc) and has the potential to completely replace those eventually. You mention abuse of the system. As I understood, the price of those transactions including metadata would be the main and only passive counter measure / deterrent against spams. Tangential to that, how do you envision checking that communication only occurs between the operator of a pool and its delegates, effectively avoiding "delegate poaching" between pools ? |
This is a good idea! I will add it.
Yes, it can indeed be between any two stake addresses. It will be up to the wallets to incorporate, but for SPOs, I can see tools such as pooltool.io to provide this "reply" communication for the SPOs.
Correct, it will not completely prevent spamming, but will decrease it for sure with a comparison to off-chain communication. Ideally, the user will be able to choose the notification levels within the wallet software (off-chain, on-chain message board, on-chain direct message).
This is up to the downstream wallets and tools, but as an example in the following code linked, we are listing all metadata transaction that has been sent to the specific (user's) stake address and we also check that this transaction has originated in one of the stake owner addresses. |
@mmahut Thanks for the client code example. I guess ideally, either the reward or owner(s) addresses should pass validation. |
Here are a few suggestions for consideration. I'd really like to have a "format" field so wallets can "know" how to better present the information contained in these messages. Using mime types, text messages could use:
(not official, but used a lot)
While tabular data could be:
URLs
Or even:
Images (ok I'm pushing it now):
If a wallet implementation does not support a given format, it may not display such messages, or simply try to display them as plain text. In addition, if we could optionally store BASE64 encoded bytes (allows for shorter representation than HEX) we won't be limiting ourselves to UTF-8 only when it's not sufficient:
|
@jbax I think that could be useful, I will add it. |
To keep things simple for the first version, I would suggest we don't pick a set of encodings to support (plus, I don't think we want to show anything but plain text in the wallet for safety reasons anyway). We can always extend this later by adding an encoding field and defining the default value as text re: base64 |
After thinking about this, I agree with @SebastienGllmt, we might want to keep it simple as possible and see how people start using it. The standard is more about the way of communication than the actual JSON format, as that might be very tool specific too. At first I did not even want to include the |
c587dc5
to
20d19be
Compare
Rebased on latest master. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like a reasonable proposal.
- Adding the root object with language - Removing link field
I have incorporated the last changes from our discussion at the meeting. This is ready to be merged. |
Better communication with delegates is a good idea. I wonder whether this should normally be on-chain, though (most information will be of ephemeral importance)? I can see two kinds of information that might be provided.
The latter should be off-chain, doesn't need to be (significantly) restricted in size, and might be time-limited. It might be best served via a field in the pool metadata (or a similar mechanism)? What's then needed is a way for delegators to opt in or out of receiving the messages, filtering by pool, not seeing old messages etc. This would need to be set up at or after delegation time in the wallet (so there's an association between the user and the delegation address), and could be via email, text etc as well as the wallet itself. It might be necessary to comply with GDPR or other privacy/security legislation. It would be conceivable to target specific groups of user this way (eg to warn "whales" about saturation), though that might be seen as intrusive! One key issue is that I shouldn't open myself to broadcast messages from SPOs who I do not have a relationship with (by delegating). |
Opening this pull request to get a wider discussion from the community, it will get updated few times before the next CIP meeting.
An open question is to how to incorporate the support for multiple languages within one metadata transaction. Possible solution: