-
Notifications
You must be signed in to change notification settings - Fork 56
Conversation
5a01147
to
282e232
Compare
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.
👍
- what library tendermint-rs is using right now?
- was https://github.com/hdevalence/ed25519consensus verified by someone outside of Zcash? Do we want to perform any additional testing before adopting it?
ed22519-dalek
we can perform additional testing. Filippo did some work on the library as well. The part of the library that we will use is only the verify function, everything else is still under the go std library. |
Makes sense to adopt some standard, don't have an informed opinion as to which one. Will this have to be a breaking change, or can we support both the old and new schemes in a transition period? |
It is not breaking but it is best to have it be handled on a new chain instead of an upgrade of version |
Fillipo who is the maintainer for |
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 good idea to push for this standardization
I'm generally in favor of adopting ZIP 215. I'd love to see this RFC address a few more things before we merge it:
*To expand on the "breaking-ness" of this change:
|
In SDK, I was mentioning BIP-340. Are you going to use |
Sorry for the confusion. I meant that it is merely supported in the crypto package. We do not utilize the key type in Tendermint. |
Hi all, I wrote up a more detailed post on the background behind the ZIP215 rules: https://hdevalence.ca/blog/2020-10-04-its-25519am Hopefully it fills in any missing detail about why the rules are created the way they are. |
I left some review comments -- I realize that this is somewhat of a "drive-by review" since I don't have a lot of context about Tendermint, so my apologies if I missed something because of that, and I hope the comments are helpful anyways. |
|
||
- Third_party dependency | ||
- library has not gone through a security review. | ||
- unclear maintenance schedule |
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.
In re: this line and the comment made by @tessr here: #144 (comment) ,
Anything we know about proposed plans regarding the future of this new library (e.g., is Filippo and/or Google going to take it over? I couldn't quite track the conversation here).
as far as I know there are no current plans to upstream the library to Filippo or Google, so definitely don't count on that.
The maintenance aspect of that library is definitely a weak point. I'm not a Go expert and I'm only casually familiar with its ecosystem (e.g., I had no idea how to publish a package and I'm still not sure I did it right), so ideally someone who has those skills could help with that (or take it over).
That said, once the library is complete I think that it should require very little maintenance, because it has a tiny API surface, and it solves a problem with a fixed specification (ZIP215).
What has to happen for it to be complete? Basically there are two changes. First, it should be changed to use https://pkg.go.dev/filippo.io/edwards25519 internally, now that that library exists. Second, I'd like it to support batch verification with an init-update-finalize style API like ed25519-zebra
. Currently this isn't scoped out on the repo's roadmap because I've been pretty busy, and I'm not sure when I would have time to make those changes, but I'd be happy to mentor someone else who'd like to have a go at making them.
Co-authored-by: Robert Zaremba <[email protected]>
Short RFC to adopt zip215 for Tendermint use cases.
Read ZIP215 here: https://zips.z.cash/zip-0215