This commit is contained in:
Dmitry Vagner 2023-04-20 19:56:54 -07:00
parent 44a623d453
commit c01b2bf2c2
2 changed files with 9 additions and 7 deletions

View File

@ -201,8 +201,8 @@ global bn_double:
%jump(bn_add_equal_points) %jump(bn_add_equal_points)
// Check if (x,y) is a valid curve point. // Check if (x,y) is a valid curve point.
// Returns (range & curve) || is_identity // Returns (range & curve) || ident
// where // where
// range = (x < N) & (y < N) // range = (x < N) & (y < N)
// curve = y^2 == (x^3 + 3) // curve = y^2 == (x^3 + 3)
// ident = (x,y) == (0,0) // ident = (x,y) == (0,0)

View File

@ -16,17 +16,17 @@ global bn254_pairing:
// stack: out, 1, k, inp, out, retdest // stack: out, 1, k, inp, out, retdest
%mstore_kernel_bn254_pairing %mstore_kernel_bn254_pairing
// stack: k, inp, out, retdest // stack: k, inp, out, retdest
%jump(bn254_pairing_loop) // this short circuits the input checks // %jump(bn254_pairing_loop) // this short circuits the input checks
DUP1 DUP1
// stack: k, k, inp, out, retdest // stack: k, k, inp, out, retdest
bn254_input_check: bn254_input_check:
// stack: j , k, inp // stack: j , k, inp
DUP1 DUP1
ISZERO ISZERO
// stack: end?, j , k, inp // stack: end?, j , k, inp
%jump(bn254_pairing_start) %jumpi(bn254_pairing_start)
// stack: j , k, inp // stack: j , k, inp
%sub_const(1) %sub_const(1)
// stack: j=j-1, k, inp // stack: j=j-1, k, inp
@ -37,6 +37,7 @@ bn254_input_check:
ADD ADD
// stack: inp_j=inp+6j, j, k, inp // stack: inp_j=inp+6j, j, k, inp
DUP1 DUP1
// stack: inp_j, inp_j, j, k, inp
%load_fp254_2 %load_fp254_2
// stack: P_j, inp_j, j, k, inp // stack: P_j, inp_j, j, k, inp
%bn_check %bn_check
@ -46,6 +47,7 @@ bn254_input_check:
%add_const(2) %add_const(2)
%load_fp254_4 %load_fp254_4
// stack: Q_j, j, k, inp // stack: Q_j, j, k, inp
%pop4
%bn_check_twisted %bn_check_twisted
// stack: valid?, j, k, inp // stack: valid?, j, k, inp
%assert_nonzero %assert_nonzero
@ -53,7 +55,7 @@ bn254_input_check:
%jump(bn254_input_check) %jump(bn254_input_check)
bn254_pairing_start: bn254_pairing_start:
// stack: k, k, inp, out, retdest // stack: 0, k, inp, out, retdest
POP POP
bn254_pairing_loop: bn254_pairing_loop: