VOR
Functions:
bigModExp(uint256 base, uint256 exponent) internalsquareRoot(uint256 x) internalySquared(uint256 x) internalisOnCurve(uint256[2] p) internalfieldHash(bytes b) internalnewCandidateSecp256k1Point(bytes b) internalhashToCurve(uint256[2] pk, uint256 input) internalecmulVerify(uint256[2] multiplicand, uint256 scalar, uint256[2] product) internalprojectiveSub(uint256 x1, uint256 z1, uint256 x2, uint256 z2) internalprojectiveMul(uint256 x1, uint256 z1, uint256 x2, uint256 z2) internalprojectiveECAdd(uint256 px, uint256 py, uint256 qx, uint256 qy) internalaffineECAdd(uint256[2] p1, uint256[2] p2, uint256 invZ) internalverifyLinearCombinationWithGenerator(uint256 c, uint256[2] p, uint256 s, address lcWitness) internallinearCombination(uint256 c, uint256[2] p1, uint256[2] cp1Witness, uint256 s, uint256[2] p2, uint256[2] sp2Witness, uint256 zInv) internalscalarFromCurvePoints(uint256[2] hash, uint256[2] pk, uint256[2] gamma, address uWitness, uint256[2] v) internalverifyVORProof(uint256[2] pk, uint256[2] gamma, uint256 c, uint256 s, uint256 seed, address uWitness, uint256[2] cGammaWitness, uint256[2] sHashWitness, uint256 zInv) internalrandomValueFromVORProof(bytes proof) internal
Function bigModExp(uint256 base, uint256 exponent) internal -> uint256 exponentiation
Function squareRoot(uint256 x) internal -> uint256
Function ySquared(uint256 x) internal -> uint256
Function isOnCurve(uint256[2] p) internal -> bool
Function fieldHash(bytes b) internal -> uint256 x_
Function newCandidateSecp256k1Point(bytes b) internal -> uint256[2] p
Function hashToCurve(uint256[2] pk, uint256 input) internal -> uint256[2] rv
Function ecmulVerify(uint256[2] multiplicand, uint256 scalar, uint256[2] product) internal -> bool verifies
Based on Vitalik Buterin's idea in ethresear.ch post cited below.
Parameters:
secp256k1: pointzero: GF(GROUP_ORDER) scalarsecp256k1: expected to be multiplier * multiplicand
Return Values:
Function projectiveSub(uint256 x1, uint256 z1, uint256 x2, uint256 z2) internal -> uint256 x3, uint256 z3
Function projectiveMul(uint256 x1, uint256 z1, uint256 x2, uint256 z2) internal -> uint256 x3, uint256 z3
Function projectiveECAdd(uint256 px, uint256 py, uint256 qx, uint256 qy) internal -> uint256 sx, uint256 sy, uint256 sz
Function affineECAdd(uint256[2] p1, uint256[2] p2, uint256 invZ) internal -> uint256[2]
Function verifyLinearCombinationWithGenerator(uint256 c, uint256[2] p, uint256 s, address lcWitness) internal -> bool
Function linearCombination(uint256 c, uint256[2] p1, uint256[2] cp1Witness, uint256 s, uint256[2] p2, uint256[2] sp2Witness, uint256 zInv) internal -> uint256[2]
Function scalarFromCurvePoints(uint256[2] hash, uint256[2] pk, uint256[2] gamma, address uWitness, uint256[2] v) internal -> uint256 s
Function verifyVORProof(uint256[2] pk, uint256[2] gamma, uint256 c, uint256 s, uint256 seed, address uWitness, uint256[2] cGammaWitness, uint256[2] sHashWitness, uint256 zInv) internal
Function randomValueFromVORProof(bytes proof) internal -> uint256 output
No description

