Skip to content
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

Implement a Ed25519 batch verify, use it in the RootHash #1351

Closed
Yawning opened this issue Jan 24, 2019 · 1 comment · Fixed by #2305
Closed

Implement a Ed25519 batch verify, use it in the RootHash #1351

Yawning opened this issue Jan 24, 2019 · 1 comment · Fixed by #2305
Assignees
Labels
c:common Category: common libraries golang p:2 Priority: desired feature

Comments

@Yawning
Copy link
Contributor

Yawning commented Jan 24, 2019

With Ed25519 it's possible to do batch verification which optimizes verifying a set of signatures vs a set of public keys all at once. As our committee sizes grow (and we need to start validating SGX commits), it's probably worth thinking about utilizing this technique to reduce the time spent validating commits.

golang.org/x/crypto/ed25519 last I checked is still agl's Go port of djb's ref10, but he left out the batch verification implementation. Porting the rest of it over should be a straight forward drop-in process.

If signature verification/signing ends up being a perf bottleneck, it's possible to implement all of these much faster than, ref10 as well, though doing it without massive pain will require Go 1.12 (for math/bits integer intrinsics).

@Yawning Yawning added p:2 Priority: desired feature c:common Category: common libraries golang labels Jan 24, 2019
@Yawning Yawning self-assigned this Mar 13, 2019
@Yawning
Copy link
Contributor Author

Yawning commented Mar 13, 2019

https://github.com/oasislabs/ed25519 provides this, once we are confident with the code, we could switch all of our Ed25519/X25519 over to our package.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c:common Category: common libraries golang p:2 Priority: desired feature
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant