High-speed BLS12-381 implementation in Go
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.
Both standart big.Int module and x86 optimized implementation are available for scalar field elements and opereations.
Point serialization is in line with zkcrypto library.
Hashing to curve implementations for both G1 and G2 follows
_XMD:SHA-256_SSWU_NU_ suites as defined in
v7 of irtf hash to curve draft.
on 2.3 GHz i7
BenchmarkPairing 667720 ns/op