GLV Decomposition is an efficient way to calculate point scaling . This method was originally published by Gallant, Lambert and Vanstone in 2001 [1], and was later integrated into the Bitcoin core code [2]. However, GLV Decomposition was not enabled in Bitcoin until a patent around the GLV method expired in 2020 [3].
A textbook introduction of enomorphisms of elliptic curves can be found in [4].
Given scalar and EC point , caculate .
Consider the elliptic curve over field Denote If is a cubic root of the base field , i.e. (mod p), we know that is also a point on since still holds.
If we can find a scalar such that We can use the GLV method to accerlate the calculation of .
NOTE: On a particular elliptic curve, and have to be known before GLV method can be applied, where and are certain cube roots of in their respective fields.
We first write in the following form
where the integers and are of approximately half the bit length of .
Then we have,
Since and are of half the bit length of , half of the point doublings are eliminated.
The strategy is effective provided that and can be computed efficiently. Compute only needs one muliplication .
An efficient algorithm for calculating and is listed below [4].
Algorithm: decomposition
Algorithm: Extended Euclidean
A full explaination of Barret Reduction can be found here.
Reference code can be found in Yrrid's and Gregor's implementations.
Some demo python code for BLS12-381
Beta in montegomery form in Niall's code and Gregor's code
[1] Robert P. Gallant, Robert J. Lambert, and Scott A. Vanstone, Faster Point Multiplication on Elliptic Curves with Efficient Endomorphisms, 2001
[2] https://www.btctimes.com/news/bitcoin-upgrade-glv-enomorphism-tests-show-faster-verification
[3] https://patents.google.com/patent/US7110538B2/en
[4] Darrel Hankerson, Alfred J. Menezes, Scott Vanstone, Guide to Elliptic Curve Cryptography, 2004
[5] bls12-381/glv.go
[6] Barret Reduction
msm
zkp
public