Group checks can now be done at deserialization only and are now optional at BLS verification time.
This is how we use Milagro already and we paid unnecessary group checks with BLST until now.
With fast subgroup checks the cost of those checks isn't that high,1/4 to 1/2 of a scalar multiplication https://github.com/status-im/nim-blst/issues/1, https://github.com/mratsim/constantine/issues/47, which is significantly less costly than pairing but when a block is filled with 128 attestations it's still significant. Probable perf improvement 8~18% (maybe more?). https://github.com/supranational/blst/pull/44
An optimized inversion, the costliest operation after square root, and used in the prelude of all pairings, using state-of-the-art research by Thomas Pornin https://eprint.iacr.org/2020/972
BLST now has a pure C backend hence we do not need to use MIRACL anymore.
And the current bump also brings
A significant 2.5x perf boost in Fp2 square root which translate to 40% speed improvement in hash to G2 and should translate to about 15% perf improvement in verification as verification = 1/3 hash-to-G2 and 2/3 pairings (https://github.com/status-im/nim-blst/issues/1)
This bumps BLST to the latest master.
Since BLSv4 commit which is the current one nimbus ETH2 builds with we have the following improvements: (https://github.com/status-im/nim-blscurve/compare/3878b9b...master)
And the current bump also brings