-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
Questions/clarifications about ADR-20 #6710
Comments
We should address every single one of these questions on a call @aaronc |
Thanks for sharing your questions @ebuchman ! Happy to get on a call to discuss. But l also think a documented summary would be helpful. Most of these questions are l believe addressed at some point in the threads. But they were pretty long threads and hard to sift through. I’ll try to find some time to do that write up and of course let’s schedule a time to chat. |
The content of However, it is acknowledged that maybe this is too defensive for some users doing multi-signatures and that it may be desirable to allow some malleability to make signature aggregation easier. Thus Another way of putting this is that
Yes, the SDK currently supports both In the discussions, it seemed like in spite of the initial resistance to multiple signing modes, examination of use cases revealed that multiple signing modes for different security and legacy compatibility reasons is actually beneficial to clients who generally only need to implement one mode that works for them. For instance, without supporting legacy amino JSON, we will break wallets and exchanges plus the ledger app overnight. The alternatives are either not having a protobuf signing mode at all or allowing multiple sign modes. We chose the latter and erred on the side of caution with how it’s supported. Also it should be noted that most of the future signing support (such as Sign modes are inherently scopes to the signer not the transaction. I’m not sure why we would want to scope it to the transaction as opposed to the signer. That alternative didn’t come up in discussions but it seems like it would make multi-signature UX more complicated than it currently is. I’m not sure what the benefit would be other than simplicity for the ante handler implementation, but that complexity is already dealt with in the code.
The amino
This didn’t actually get a ton of discussion, but my rationale for including it is that if we specify this as the “standardized” transaction format for Cosmos chains (which I believe is the intention) then we want to avoid scenarios where different zones feel that they need to fork because the upstream maintainers are slow to or don’t merge some functionality they need. I am holding the perspective that wallets, block explorers, etc. will want to support multiple chains and will want the easiest path to do so - which is to re-use formats that are commonly used. The whole motivation for switching to
Just sticking with Amino JSON keeps us where we were before the protobuf migration but makes things even more complicated. Clients would need to understand the details of Amino JSON + Protobuf. I don’t sense anyone in our discussions had the appetite for that. Also the fact that
This is maybe worth a larger discussion. I argued that clients can easily write a custom encoder for
#6078 (comment) Basically JSON is only human readable for programmers. Therefore it is not human readable by most people on its own.
Just base64 encode it and put it after the human readable content:
Of course, but the one that is easiest to reason about and probably make proofs about is simply signing the raw bytes.
Omitting/not omitting default values also creates malleability surface area. It wouldn’t be recommended but if a developer were to use proto2 semantics where
The rationale for non-critical extension fields comes from experiences with TLS as explained by @tarcieri in #6078 (comment) and #6078 (comment). The non-critical fields are all fields with in the range of 1024-2047. A developer would need to make a special effort to create such a field so by default all fields are critical and thus breaking. Because of the rationale provided by @tarcieri which makes a convincing argument that allowing future developers an escape hatch to make something non-breaking addition, we included it in the spec.
I believe this is addressed above. It is definitely a malleability surface area in the current SDK. Whether or not it’s a problem is another matter. It was argued quite extensively that this is a form of malleability that we can live with to support easier signature aggregation. In the end, the participants in that discussion more or less agreed that really good multi-signature aggregation can only be supported through on-chain aggregation through something like the Nevertheless,
Maybe… although I don’t actually feel like we added risks by including those things… maybe but the risks I think were addressed quite a bit in discussion. Maybe not. If anything I felt like the biggest sticking point was |
With new tasks and text mode working group, is this issue still relevant? What is the action point ? |
closing this, we will be evaluating which sign modes to remove with textual landing 0.47 |
First, I want to applaud the amazing work that went into ADR-20 and to thank everyone that participated in the long discussions in #6030 and #6078. Apologies for having not been more involved sooner. In trying to review all of that now, I find there is quite a lot discussed, and it is hard to get a clear summary of the various points. While they have obviously heavily informed the final design of the ADR, perhaps we can make some attempt to better summarize the discussion and considerations in the ADR itself, to aid future reviewers.
From my own review, I have some questions/concerns which I will just drop here. I suspect at least some of this is just me missing things, but maybe some of it will require more consideration. It may be easier to answer these on a call, and I'd be happy to help transcribe the answers into updates to the ADR.
The text was updated successfully, but these errors were encountered: