Skip to content

feat(crypto): add BLS12-381 curve#2765

Merged
melekes merged 27 commits intomainfrom
marko/bls
Apr 11, 2024
Merged

feat(crypto): add BLS12-381 curve#2765
melekes merged 27 commits intomainfrom
marko/bls

Conversation

@melekes
Copy link
Collaborator

@melekes melekes commented Apr 10, 2024

curve based on blst.

The bls12381 build tag was added. Also, note that BLS requires cgo.

Co-authored by: @tac0turtle


PR checklist

  • Tests written/updated
  • Changelog entry added in .changelog (we use unclog to manage our changelog)
  • Updated relevant documentation (docs/ or spec/) and code comments
  • Title follows the Conventional Commits spec

@melekes melekes requested a review from a team as a code owner April 10, 2024 07:09
@melekes melekes requested a review from a team April 10, 2024 07:09
@melekes melekes added backport-to-v0.38.x Tell Mergify to backport the PR to v0.38.x backport-to-v1.x and removed backport-to-v0.38.x Tell Mergify to backport the PR to v0.38.x labels Apr 10, 2024
@melekes melekes mentioned this pull request Apr 10, 2024
4 tasks
Copy link

@cason cason left a 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
// Commit sig size is made up of 96 bytes for the signature, 20 bytes for the address,
// 1 byte for the flag and 14 bytes for the timestamp.
MaxCommitSigBytes int64 = 109
MaxCommitSigBytes int64 = 141
Copy link

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?

Copy link
Collaborator Author

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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why private?

Copy link
Collaborator Author

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.

@melekes melekes marked this pull request as draft April 10, 2024 07:25
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
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No official release?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope

cc @tac0turtle

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fine, then

@sergio-mena
Copy link
Collaborator

I added a few comments, some of them important. Sorry for arriving late to this review

github-merge-queue bot pushed a commit that referenced this pull request Apr 18, 2024
- 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>
mergify bot pushed a commit that referenced this pull request Apr 18, 2024
- 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)
melekes added a commit that referenced this pull request Apr 18, 2024
… (#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/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
Copy link

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?

aljo242 pushed a commit that referenced this pull request Sep 4, 2025
[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

---

- [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

---------

Co-authored-by: Marko Baricevic <markobaricevic3778@gmail.com>
Co-authored-by: Marko <marko@baricevic.me>
aljo242 pushed a commit that referenced this pull request Sep 4, 2025
- pin cometbft-db-testing image version
- extract const in a separate file
- return err in GenPrivKey and NewPrivateKeyFromBytes

Follow-up to #2765

---

- [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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants