Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: fixed N_06 #28

Merged
merged 2 commits into from
Nov 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
37 changes: 16 additions & 21 deletions contracts/verifiers/PlonkVerifierFull.sol
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ contract PlonkVerifier {
uint256 private constant vk_s3_com_y = 3950283788807144685755254392627057902299881176666195233354776073965155557919;

uint256 private constant vk_coset_shift = 5;


uint256 private constant vk_qc_0_x = 2614573220337297659179308133300379021102641010525403337401619021428140031269;
uint256 private constant vk_qc_0_y = 5896590631125620550976365652082599923038691774487942725877415439318691171350;
Expand Down Expand Up @@ -267,15 +266,13 @@ contract PlonkVerifier {

// s number of public inputs, p pointer the public inputs
function check_inputs_size(s, p) {
let input_checks := 1
for {let i} lt(i, s) {i:=add(i,1)}
{
input_checks := and(input_checks,lt(calldataload(p), r_mod))
if iszero(lt(calldataload(p), r_mod)){
error_inputs_size()
}
p := add(p, 0x20)
}
if iszero(input_checks) {
error_inputs_size()
}
}

function check_proof_size(actual_proof_size) {
Expand All @@ -286,8 +283,6 @@ contract PlonkVerifier {
}

function check_proof_openings_size(aproof) {

let openings_check := 1

// linearised polynomial at zeta
let p := add(aproof, proof_linearised_polynomial_at_zeta)
Expand All @@ -297,7 +292,9 @@ contract PlonkVerifier {

// quotient polynomial at zeta
p := add(aproof, proof_quotient_polynomial_at_zeta)
openings_check := and(openings_check, lt(calldataload(p), r_mod))
if iszero(lt(calldataload(p), r_mod)) {
error_proof_openings_size()
}

// proof_l_at_zeta
p := add(aproof, proof_l_at_zeta)
Expand All @@ -319,7 +316,9 @@ contract PlonkVerifier {

// proof_s1_at_zeta
p := add(aproof, proof_s1_at_zeta)
openings_check := and(openings_check, lt(calldataload(p), r_mod))
if iszero(lt(calldataload(p), r_mod)) {
error_proof_openings_size()
}

// proof_s2_at_zeta
p := add(aproof, proof_s2_at_zeta)
Expand All @@ -333,20 +332,15 @@ contract PlonkVerifier {
error_proof_openings_size()
}


// proof_openings_qci_at_zeta
p := add(aproof, proof_openings_qci_at_zeta)
for {let i:=0} lt(i, vk_nb_custom_gates) {i:=add(i,1)}

// proof_openings_selector_commit_api_at_zeta
p := add(aproof, proof_openings_selector_commit_api_at_zeta)
for {let i:=0} lt(i, vk_nb_commitments_commit_api) {i:=add(i,1)}
{
openings_check := and(openings_check, lt(calldataload(p), r_mod))
if iszero(lt(calldataload(p), r_mod)) {
error_proof_openings_size()
}
p := add(p, 0x20)
}

if iszero(openings_check) {
error_proof_openings_size()
}

}
// end checks -------------------------------------------------

Expand Down Expand Up @@ -936,6 +930,7 @@ contract PlonkVerifier {


let _mPtr := add(mPtr, add(offset, 0xe0))

let _poscaz := add(aproof, proof_openings_qci_at_zeta)
for {let i:=0} lt(i, vk_nb_custom_gates) {i:=add(i,1)}
{
Expand Down
40 changes: 19 additions & 21 deletions contracts/verifiers/PlonkVerifierFullLarge.sol
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ contract PlonkVerifier {

uint256 private constant vk_coset_shift = 5;


uint256 private constant vk_qc_0_x = 3884624064879507288554125065509059886567955998027552754695080199794317463496;
uint256 private constant vk_qc_0_y = 3095893745686259387023328325251031582843387681306303361911851672293653329255;

Expand Down Expand Up @@ -158,6 +159,7 @@ contract PlonkVerifier {
// -------- utils (for hash_fr)
uint256 private constant bb = 340282366920938463463374607431768211456; // 2**128
uint256 private constant zero_uint256 = 0;

uint8 private constant lenInBytes = 48;
uint8 private constant sizeDomain = 11;
uint8 private constant one = 1;
Expand Down Expand Up @@ -264,15 +266,13 @@ contract PlonkVerifier {

// s number of public inputs, p pointer the public inputs
function check_inputs_size(s, p) {
let input_checks := 1
for {let i} lt(i, s) {i:=add(i,1)}
{
input_checks := and(input_checks,lt(calldataload(p), r_mod))
if iszero(lt(calldataload(p), r_mod)){
error_inputs_size()
}
p := add(p, 0x20)
}
if iszero(input_checks) {
error_inputs_size()
}
}

function check_proof_size(actual_proof_size) {
Expand All @@ -283,8 +283,6 @@ contract PlonkVerifier {
}

function check_proof_openings_size(aproof) {

let openings_check := 1

// linearised polynomial at zeta
let p := add(aproof, proof_linearised_polynomial_at_zeta)
Expand All @@ -294,7 +292,9 @@ contract PlonkVerifier {

// quotient polynomial at zeta
p := add(aproof, proof_quotient_polynomial_at_zeta)
openings_check := and(openings_check, lt(calldataload(p), r_mod))
if iszero(lt(calldataload(p), r_mod)) {
error_proof_openings_size()
}

// proof_l_at_zeta
p := add(aproof, proof_l_at_zeta)
Expand All @@ -316,7 +316,9 @@ contract PlonkVerifier {

// proof_s1_at_zeta
p := add(aproof, proof_s1_at_zeta)
openings_check := and(openings_check, lt(calldataload(p), r_mod))
if iszero(lt(calldataload(p), r_mod)) {
error_proof_openings_size()
}

// proof_s2_at_zeta
p := add(aproof, proof_s2_at_zeta)
Expand All @@ -330,20 +332,15 @@ contract PlonkVerifier {
error_proof_openings_size()
}


// proof_openings_qci_at_zeta
p := add(aproof, proof_openings_qci_at_zeta)
for {let i:=0} lt(i, vk_nb_custom_gates) {i:=add(i,1)}

// proof_openings_selector_commit_api_at_zeta
p := add(aproof, proof_openings_selector_commit_api_at_zeta)
for {let i:=0} lt(i, vk_nb_commitments_commit_api) {i:=add(i,1)}
{
openings_check := and(openings_check, lt(calldataload(p), r_mod))
if iszero(lt(calldataload(p), r_mod)) {
error_proof_openings_size()
}
p := add(p, 0x20)
}

if iszero(openings_check) {
error_proof_openings_size()
}

}
// end checks -------------------------------------------------

Expand Down Expand Up @@ -933,6 +930,7 @@ contract PlonkVerifier {


let _mPtr := add(mPtr, add(offset, 0xe0))

let _poscaz := add(aproof, proof_openings_qci_at_zeta)
for {let i:=0} lt(i, vk_nb_custom_gates) {i:=add(i,1)}
{
Expand Down Expand Up @@ -1238,4 +1236,4 @@ contract PlonkVerifier {
}
}
}
}
}