# VOR
# Functions:
bigModExp(uint256 base, uint256 exponent) internal
squareRoot(uint256 x) internal
ySquared(uint256 x) internal
isOnCurve(uint256[2] p) internal
fieldHash(bytes b) internal
newCandidateSecp256k1Point(bytes b) internal
hashToCurve(uint256[2] pk, uint256 input) internal
ecmulVerify(uint256[2] multiplicand, uint256 scalar, uint256[2] product) internal
projectiveSub(uint256 x1, uint256 z1, uint256 x2, uint256 z2) internal
projectiveMul(uint256 x1, uint256 z1, uint256 x2, uint256 z2) internal
projectiveECAdd(uint256 px, uint256 py, uint256 qx, uint256 qy) internal
affineECAdd(uint256[2] p1, uint256[2] p2, uint256 invZ) internal
verifyLinearCombinationWithGenerator(uint256 c, uint256[2] p, uint256 s, address lcWitness) internal
linearCombination(uint256 c, uint256[2] p1, uint256[2] cp1Witness, uint256 s, uint256[2] p2, uint256[2] sp2Witness, uint256 zInv) internal
scalarFromCurvePoints(uint256[2] hash, uint256[2] pk, uint256[2] gamma, address uWitness, uint256[2] v) internal
verifyVORProof(uint256[2] pk, uint256[2] gamma, uint256 c, uint256 s, uint256 seed, address uWitness, uint256[2] cGammaWitness, uint256[2] sHashWitness, uint256 zInv) internal
randomValueFromVORProof(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