Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.5%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: OmegaTymbJIep
  • License: apache-2.0
  • Language: Go
  • Default Branch: master
  • Size: 32.1 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 1
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Security

README.md

gnark-crypto

Twitter URL License Go Report Card PkgGoDev DOI

gnark-crypto provides efficient cryptographic primitives, in Go:

gnark-crypto is actively developed and maintained by the team (gnark@consensys.net | HackMD) behind:

Warning

gnark-crypto is not fully audited and is provided as-is, use at your own risk. In particular, gnark-crypto makes no security guarantees such as constant time implementation or side-channel attack resistance.

To report a security bug, please refer to gnark Security Policy.

gnark-crypto packages are optimized for 64bits architectures (x86 amd64) and tested on Unix (Linux / macOS).

Audits

See list of audits for gnark and gnark-crypto

Getting started

Go version

gnark-crypto is tested with the last 2 major releases of Go (currently 1.19 and 1.20).

Install gnark-crypto

bash go get github.com/consensys/gnark-crypto

Note that if you use go modules, in go.mod the module path is case sensitive (use consensys and not ConsenSys).

Development

Most (but not all) of the code is generated from the templates in internal/generator.

The generated code contains little to no interfaces and is strongly typed with a field (generated by the gnark-crypto/field package). The two main factors driving this design choice are:

  1. Performance: gnark-crypto algorithms manipulate millions (if not billions) of field elements. Interface indirection at this level, plus garbage collection indexing takes a heavy toll on perf.
  2. Need to derive (mostly) identical code for various moduli and curves, with consistent APIs. Generics introduce significant performance overhead and are not yet suited for high performance computing.

To regenerate the files, see internal/generator/main.go. Run:

bash go generate ./...

Benchmarks

Benchmarking pairing-friendly elliptic curves libraries

The libraries are implemented in different languages and some use more assembly code than others. Besides the different algorithmic and software optimizations used across, it should be noted also that some libraries target constant-time implementation for some operations making it de facto slower. However, it can be clear that consensys/gnark-crypto is one of the fastest pairing-friendly elliptic curve libraries to be used in zkp projects with different curves.

Citing

If you use gnark-crypto in your research a citation would be appreciated. Please use the following BibTeX to cite the most recent release.

bib @software{gnark-crypto-v0.14.0, author = {Gautam Botrel and Thomas Piellard and Youssef El Housni and Arya Tabaie and Gus Gutoski and Ivo Kubjas}, title = {Consensys/gnark-crypto: v0.14.0}, month = sep, year = 2024, publisher = {Zenodo}, version = {v0.14.0}, doi = {10.5281/zenodo.5815453}, url = {https://doi.org/10.5281/zenodo.5815453} }

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the Apache 2 License - see the LICENSE file for details.

Owner

  • Name: Levochko Anton
  • Login: OmegaTymbJIep
  • Kind: user
  • Company: Distributed Lab

GitHub Events

Total
  • Public event: 1
  • Push event: 10
  • Create event: 1
Last Year
  • Public event: 1
  • Push event: 10
  • Create event: 1

Issues and Pull Requests

Last synced: 8 months ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • OmegaTymbJIep (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/pr.yml actions
  • actions/checkout v4 composite
  • actions/setup-go v5 composite
  • golangci/golangci-lint-action v6 composite
  • gotesttools/gotestfmt-action v2 composite
.github/workflows/push.yml actions
  • actions/checkout v4 composite
  • actions/setup-go v5 composite
  • golangci/golangci-lint-action v6 composite
  • gotesttools/gotestfmt-action v2 composite
.github/workflows/slack-notifications.yml actions
go.mod go
  • github.com/bits-and-blooms/bitset v1.14.2
  • github.com/consensys/bavard v0.1.15
  • github.com/davecgh/go-spew v1.1.1
  • github.com/inconshreveable/mousetrap v1.1.0
  • github.com/kr/pretty v0.3.1
  • github.com/leanovate/gopter v0.2.11
  • github.com/mmcloughlin/addchain v0.4.0
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/spf13/cobra v1.8.1
  • github.com/spf13/pflag v1.0.5
  • github.com/stretchr/testify v1.9.0
  • golang.org/x/crypto v0.26.0
  • golang.org/x/sys v0.24.0
  • gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
  • gopkg.in/yaml.v2 v2.4.0
  • gopkg.in/yaml.v3 v3.0.1
  • rsc.io/tmplfunc v0.0.3
go.sum go
  • 623 dependencies