/nekryptology

Coinbase's advanced cryptography library, brought back from the dead and enhanced

Primary LanguageGoGNU Affero General Public License v3.0AGPL-3.0

Nekryptology

Coinbase's advanced cryptography library, brought back from the dead and enhanced, forked from kryptology and ceremonyclient/nekryptology

Differences from Kryptology

  • Schnorr proofs are patched to use hash-to-curve, fixes a bug where depending on the curve there may be a small to very large percentage of proofs that are invalid encodings
  • Supports BLS48-581 (uses MIRACL-generated implementation, slightly altered to align to curves.Scalar/curves.Point interfaces)
  • Enhanced KOS15 implementation to support arbitrary computational and statistical security parameters
  • Updated DKLs18 multiplication to use KOS15 enhancements
  • OT-based t-of-n multiplication scheme (borrowed from DKLs19)
  • Supports <=2048-bit IQC primitives (uses harmony-one's implementation, slightly adjusted to fix vulnerabilities in FS transform)
  • Added Wesolowski VDF
  • GG20 is removed

Components

The following is the list of primitives and protocols that are implemented in this repository.

Curves

The curve abstraction code can be found at pkg/core/curves/curve.go

The curves that implement this abstraction are as follows.

IQC

The IQC abstraction code can be found at pkg/core/iqc/classgroup.go.

Protocols

The generic protocol interface pkg/core/protocol/protocol.go.

Contributing

  • Versioning: vMajor.Minor.Patch
    • Major revision indicates breaking API change or significant new features
    • Minor revision indicates no API breaking changes and may include significant new features or documentation
    • Patch indicates no API breaking changes and may include only fixes