status-go/vendor/github.com/kilic/bls12-381
..
.gitignore
LICENSE
README.md
arithmetic_decl.go
arithmetic_fallback.go
arithmetic_x86.s
bls12_381.go
field_element.go
fp.go
fp2.go
fp6.go
fp12.go
g1.go
g2.go
gt.go
hash_to_field.go
isogeny.go
pairing.go
swu.go
utils.go
wnaf.go

README.md

High Speed BLS12-381 Implementation in Go

Pairing Instance

A Group instance or a pairing engine instance is not suitable for concurrent processing since an instance has its own preallocated memory for temporary variables. A new instance must be created for each thread.

Base Field

x86 optimized base field is generated with kilic/fp and for native go is generated with goff. Generated codes are slightly edited in both for further requirements.

Scalar Field

Standart big.Int module is currently used for scalar field implementation. x86 optimized faster field implementation is planned to be added.

Serialization

Point serialization is in line with zkcrypto library.

Hashing to Curve

Hashing to curve implementations for both G1 and G2 follows _XMD:SHA-256_SSWU_RO_ and _XMD:SHA-256_SSWU_NU_ suites as defined in v7 of irtf hash to curve draft.

Benchmarks

on 3.1 GHz i5

BenchmarkPairing  1034837 ns/op