Multiply an elliptic curve point by a scalar.
(secp256k1* s point) applies the elliptic group operation to
Since we use
(Alternatively, for those who think of the group operation as multiplication, this operation can be thought of as exponentiation.)
The result is a point on the elliptic curve.
Function:
(defun secp256k1* (s point) (declare (xargs :guard (and (natp s) (pointp point) (point-in-pxp-p point (secp256k1-field-prime)) (point-on-weierstrass-elliptic-curve-p point (secp256k1-field-prime) (secp256k1-a) (secp256k1-b))))) (curve-scalar-* s point (secp256k1-field-prime) (secp256k1-a) (secp256k1-b)))