-
Notifications
You must be signed in to change notification settings - Fork 638
feat(crypto): add BLS12-381 curve #2765
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
Conversation
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.
Left some general comments.
Not sure if the solution for having this key optional, depending on the compiling flags, is ideal.
types/block.go
Outdated
// 1 byte for the flag and 14 bytes for the timestamp. | ||
MaxCommitSigBytes int64 = 109 | ||
MaxCommitSigBytes int64 = 141 |
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.
I am afraid the math here is wrong: 96 + 20 + 1 + 14 = 131.
Can we somehow test this?
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 math was wrong before, too. I don't know why exactly.
types/block.go
Outdated
MaxCommitSigBytes int64 = 141 | ||
|
||
// protoEncodingOverhead represents the overhead in bytes when encoding a protocol buffer message. | ||
protoEncodingOverhead int64 = 2 |
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.
Why private?
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.
It's probably because it's an implementation detail.
Cgo is more performant. Since there is no aggreagtion in comet, yet the performance overhead will be high for doing individual signatures. |
[curve](https://github.com/cosmos/crypto/tree/marko/bls12381) based on [blst](https://github.com/supranational/blst). The `bls12381` build tag was added. Also, note that BLS requires `cgo`. Co-authored by: @tac0turtle --- #### PR checklist - [x] Tests written/updated - [x] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - [ ] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec <hr>This is an automatic backport of pull request #2765 done by [Mergify](https://mergify.com). Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
@@ -42,11 +42,13 @@ require ( | |||
github.com/cometbft/cometbft-db v0.11.1-0.20240407063702-fa37a805b0b4 | |||
github.com/cometbft/cometbft-load-test v0.1.0 | |||
github.com/cometbft/cometbft/api v1.0.0-alpha.2 | |||
github.com/cosmos/crypto v0.0.0-20240309083813-82ed2537802e |
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.
No official release?
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.
Nope
cc @tac0turtle
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.
Fine, then
I added a few comments, some of them important. Sorry for arriving late to this review |
- pin cometbft-db-testing image version - extract const in a separate file - return err in GenPrivKey and NewPrivateKeyFromBytes Follow-up to #2765 --- #### PR checklist - [x] Tests written/updated - [ ] ~~Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog)~~ - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec --------- Co-authored-by: Sergio Mena <sergio@informal.systems>
- pin cometbft-db-testing image version - extract const in a separate file - return err in GenPrivKey and NewPrivateKeyFromBytes Follow-up to #2765 --- #### PR checklist - [x] Tests written/updated - [ ] ~~Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog)~~ - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec --------- Co-authored-by: Sergio Mena <sergio@informal.systems> (cherry picked from commit d27732a)
… (#2842) - pin cometbft-db-testing image version - extract const in a separate file - return err in GenPrivKey and NewPrivateKeyFromBytes Follow-up to #2765 --- #### PR checklist - [x] Tests written/updated - [ ] ~~Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog)~~ - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec <hr>This is an automatic backport of pull request #2832 done by [Mergify](https://mergify.com). Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
github.com/cosmos/gogoproto v1.4.12 | ||
github.com/go-git/go-git/v5 v5.12.0 | ||
github.com/goccmack/goutil v1.2.3 | ||
github.com/gofrs/uuid v4.4.0+incompatible | ||
github.com/google/uuid v1.6.0 | ||
github.com/minio/sha256-simd v1.0.1 |
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.
Why using this version instead of the standard one?
curve based on blst.
The
bls12381
build tag was added. Also, note that BLS requirescgo
.Co-authored by: @tac0turtle
PR checklist
.changelog
(we use unclog to manage our changelog)docs/
orspec/
) and code comments