-
Notifications
You must be signed in to change notification settings - Fork 328
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
Extend URI scheme for delegation portfolio links #86
Conversation
Attempted to move HEAD back one commit, then something went wrong.
p.s. BTW I'm not sure why this is happening but all activity shown between here & the original PR comment has already taken place in the context of #61. It might be because the last PR was inadvertently executed in the |
These are standards related items I'm not including in the CIP itself for the sake of brevity & efficiency... if any editor thinks any of these points should be included, let me know & I'll edit it back in. Points for Consideration(Motivation) If we have single pool links, we need multi pool links:
#25 > Rationale (non-technical) outlined (in September 2020) many use cases for delegation portfolios and multi-pool links.
(from #25 > Specification) Handling of errors and warnings should be left to the application. Examples:
The original PR had a lot of comments about URI length, with a response indicating why this is not a problem for a variety of use cases, with related factors like data precision. So it would help to check this out, to see if any of these matters should be addressed in the CIP: #25 (comment) There was never a response to this forum comment (@disassembler) about the HTTP content disposition of the JSON file and how it would help certain application scenarios to have a URI alternative (the current CIP draft simply suggests that having an alternative is helpful in these cases). The same thread had a statement which I might summarise as:
... which I'm not including since so we don't get hung up in a debate about what all these things really are. The forum thread above suggests why the Internet at large considers URIs less identity-revealing and less easily blocked than files. @KtorZ With respect to the CIP-0017 current draft (#82):
A useful link I'm not including in Read More section (though @wrmarchetto I was very happy to find out about this site last week 😍):
|
Hey @rphair, could you please check this proposal I just submitted for comments? https://forum.cardano.org/t/cip-generalized-cardano-urls/57464 |
thanks @v-almonacid ... breaking it up that way would be OK with me because the writing regarding stake pool extensions has been generally distinct from what you and @SebastienGllmt had written already. And I can see that there are heaps of metadata URI features on the way which would make any "Cardano URI scheme" document as long as any technical paper. I would only insist that the merge process for this PR, which Sebastien himself suggested back in November... i.e., consolidating the multi-pool links in with the single-pool links... be completed first. Like all standards, a coherent presentation of that standard should be dated... and the effort keeps getting greater and greater on my part to keep rewriting, refactoring, consolidating and re-posting what's already been done. As we heard in the CIP editor meetings, where I had to catch up the attendees for 5 meetings in a row about a 6-month old proposal, the resulting history has become difficult even for people already exposed to the issue to follow: and as with all standards we need to trace this issue historically. So while everybody is still current in the discussion of multi-pool links, hopefully this will be acceptable to @crptmppt @dcoutts @KtorZ and the other editors from that meeting, and the idea & writing of multi-pool links can be considered on their own in this PR and merged before too long. Then I'll follow the CIP team's suggestions about breaking the stake pool linking scheme (for the |
@rphair yeah I'm totally aware of the time and work that you've put on this, and that things have taken much more time than expected, it's unfortunate. I feel like If we had a framework as the one I'm proposing before, things could have been easier. Anyway, it's totally fine for me if this PR gets merged in CIP13. Just keep in mind that this feature may still take a bit of time to be actually implemented by wallets, so there is no rush. I'm saying this just to suggest that we should at least double check that this is 100% compatible with the new standard, if it ever gets approved. |
stakepool = poolhexid | poolticker | ||
poolhexid = 56HEXDIG | ||
poolticker = 3*5UNICODE | ||
|
||
proportion = *digit [ "." *digit ] |
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.
If anything, it'd be good to have CIP-0017 & this extension aligned; Please see the comment on CIP-0017 about decimals
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.
thanks, addressed here: #82 (comment)
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.
@rphair (thanks for your comment on the CIP-0017). I acknowledge your points but I do not necessarily agree with all your statements (although, I do concur that some of my points are skewed / biased towards a certain view as a wallet maintainer).
I'd like to understand what is your main argument for wanting decimals in here? From one of your previous comment, it sounded very speculative to me 😶
@rphair: Some users & developers will require decimals as the stake pool weights in order to build portfolios that match the following real world values [...]
Note that re-reading some of your comments, I think there is maybe a misunderstanding (?) on the purpose of the portfolio definition. The proposal from CIP-0017 and I believe, this one here are not about extending the protocol in any ways to support multi-delegation. This is unlikely to happen anytime soon and is a whole different discussion.
Hence this is about sharing a financial portfolio with other stakeholders, and let them know what works well. It is not about capturing the state of a wallet, but rather to give some recipes and recommendations about delegation choices.
CIP-0013/CIP-0013.md
Outdated
* If all stake pools have a numerical proportion, each component of the resulting stake distribution will have the same ratio as the provided `proportion` to the sum of all the propotions. | ||
* If none of the proportions are given, all proportions are assumed to be equal. | ||
* If some of the proportions are missing, any missing proportions are set to the average of all those specified explicitly. | ||
* If a stake pool is mentioned multiple times, those proportions as determined above are added together. |
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.
The three last points seem to me to be invalid URLs / portfolios definitions. To be valid, a portfolio should always define all proportions for all pools, and each pool should only appear once.
Having multiple default cases and parsing behavior would only render parsing downstream more complex. I don't see the rationale for allowing this?
@KtorZ since the last 2 editing comments are interrelated I need to bring them together here: re: #86 (comment)As far as the general Cardano community has been aware, there has been no information about whether ratio staking will be supported in the Cardano protocol between these two statements:
So given that ratio staking hasn't been ruled out of the protocol yet, we have to assume that portfolio definitions will eventually gain an achievable amount of multi digit precision... in addition to, but not instead of, your observations that first stage wallet implementations are bound to be imprecise. For both the near & long term, the world at large understands degrees of precision through decimals, while the cryptographic community prefers integers of greater magnitude. I see no reason to confine the standard & syntax so they only support the cryptographic community's usage and expectations. Most standards which fail, or at least have to be revised and updated, are because of a rationalisation that something "will never happen" (e.g. protocol-based ratio staking). We'll get other people chiming in for sure, but as both a developer & a scientist I don't want to truncate every ratio I might ever use, even if the first-stage implementations are practically guaranteed to implement them imprecisely. Regardless of the above: any attempt to ease the parsing & special cases suggests there has to be a reasonable default for the stake pool proportions... and the universally assumed default for multiplicity in a set is So if you accept the argument that there must be a default proportion, and that the only sensible default is re: #86 (review)You're right... especially if precise portfolio definitions are not universally achievable, there's no incentive to use such a precisely calculated default proportion value, especially given the parsing difficulty. The complexity of such an arrangement would no longer be desirable and would be difficult for people to understand & anticipate. So my last commit combines those first 2 contended bullet items into the single statement:
I've also changed the last bullet point:
... since in hindsight I can't imagine on anyone agreeing on an algorithmic approach, whether the above or any other, to resolve such a condition. Therefore I've changed it to an error condition pending any other suggestions:
On this note, I haven't addressed the subject of exactly what to do if a pool is referred to by both its
NOTE I believe most of the points below will also apply to JSON portfolio definitions (#82): Defaulting to a condition of symmetry is an idea long upheld in computer science and programming languages. I am dating myself a bit here, but a longer history of developers have appreciated simpler & shorter syntaxes that reflect how human languages themselves work: assuming symmetry and regularity until proven otherwise. For a current & ubiquitous example see the column & spacing in web design via CSS Not having to specify all the portfolio weights every time makes even more sense given the (only recent) annoucement that the stake pool weights might only ever be approximately achievable. To paraphrase your #82 (comment), I would say: to force the user & developer to set all stake pool weights explicitly to We can infer today from the unweighted short "favourite" lists of pool tickers already circulating for months on Twitter that the most common formulation of a multiple stake pool URI will be without favourites or proportions, like:
... which, after enforcing explicit portfolio weighting, would instead look like this (fat fingers get ready to type those extra top row characters):
There are single pool lists already out there with hundreds of tickers in them, and a default value for pool weight will allow these to be dense and readable by both humans and machines regardless of length. Assuming a proportion of Finally, if it is parsing complexity the developers are worried about: generally setting a parameter default array key value of |
This was again discussed at the last Editor meeting (22), please refer to the notes to catchup on the conversation. |
This was discussed at the last Editor meeting (23), please refer to the notes. |
@KtorZ I will also mention the JSON delegation portfolio alternative to the URI based ones, and will be referring SPOs to #86 as well as this one. If you (or any other SPOs following this issue) want that Zoom link please message me directly (I don't think they want the Zoom links for those meeting to be publicly visible). The upcoming meeting title is SPO community call on Thursday, 10th June at 16:00 UTC. 😎 |
Discussed at last Editors meeting (24) - see notes. (conversation might be ahead of meeting notes at this point, this is a reference) The conversation was further opened up with two SPO meeting. |
6/29 Editors meeting (25) discussed this PR - see notes. (conversation might be ahead of meeting notes at this point, this is a reference) => PR is now in 'Last Check': it will get another look at next week's meeting (26) and should be merged in after that - consider attending the meeting if relevant to you. |
Non-technical visitors: See complete draft of CIP, including proposed changes, here: CIP-0013.md
The multi pool component of this originally submitted stand-alone CIP (CIP-COSD-MultiPoolStakeURIscheme.md) was split off as a result of #25 (comment) - with an agreement to add it back in after officially merging a standard for single pool links into an active CIP (which later became CIP-0013). Some notes & ideas beyond the CIP content:
As @SebastienGllmt has suggested in meetings & media there is a chance single pool links will be implemented earlier in the wallet development timeline (we hope, earlier) than the multi pool links (which we're prepared to get later).
Multi-pool details of this Specification, especially how to interpret each decimal
proportion
given to each pool, were originally published in the latest version of this CIP draft submitted 2020-09-30: #25 > SpecificationMy understanding of the CIP process is that we can't use recently submitted JSON specification (#82) as a Reference implementation, so I've added a section in Rationale briefly comparing the two schemes. After six months of discussing this I am sure the community will need both. Some other ideas on how JSON vs. URI delegation portfolios might evolve concurrently:
proportion
parameters are missing, might also help with more rigorous definition of the JSON standard for delegation portfolios.It's a long shot that the exporting live delegation figures as a portfolio would reveal a user's identity, but I called attention to that problem in #25 > Specification and have added it as an explicit security consideration here. It's a minor risk, but given the amount of care taken to preserve wallet anonymity for users that want it, it would be a shame to give them an accidental means of publicly identifying themselves.