Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions barretenberg/acir_tests/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ function test_cmds {
echo "$sol_prefix $scripts/bb_prove_sol_verify.sh $t"
echo "$sol_prefix USE_OPTIMIZED_CONTRACT=true $scripts/bb_prove_sol_verify.sh $t --disable_zk"
done
# Just run this super large circuit for the optimized verifier - regression test for templating errors
echo "$sol_prefix USE_OPTIMIZED_CONTRACT=true $scripts/bb_prove_sol_verify.sh large_circuit_verifier_test --disable_zk"
# prove with bb cli and verify with bb.js classes
echo "$sol_prefix $scripts/bb_prove_bbjs_verify.sh a_1_mul"
echo "$sol_prefix $scripts/bb_prove_bbjs_verify.sh assert_statement"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[package]
name = "large_circuit_verifier_test"
type = "bin"
authors = [""]

[dependencies]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
input = "0x01"
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
fn main(input: pub Field) {
let mut a = input;
let mut b = input + 1;

for _ in 0..2100000 {
let c = a * b + a;
let d = b * c + b;
a = c;
b = d;
}

assert(a != 0);
assert(b != 0);
}

Large diffs are not rendered by default.

6 changes: 1 addition & 5 deletions barretenberg/sol/scripts/copy_optimized_to_cpp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,6 @@ sed -i -E 's/(uint256 constant CIRCUIT_SIZE = )[0-9]+;/\1{{ CIRCUIT_SIZE }};/' "
sed -i -E 's/(uint256 constant LOG_N = )[0-9]+;/\1{{ LOG_CIRCUIT_SIZE }};/' "$TEMP_SOL"
sed -i -E 's/(uint256 constant NUMBER_PUBLIC_INPUTS = )[0-9]+;/\1{{ NUM_PUBLIC_INPUTS }};/' "$TEMP_SOL"
sed -i -E 's/(uint256 constant REAL_NUMBER_PUBLIC_INPUTS = )[0-9]+ - [0-9]+;/\1{{ REAL_NUM_PUBLIC_INPUTS }};/' "$TEMP_SOL"
sed -i -E 's/(uint256 constant NUMBER_OF_BARYCENTRIC_INVERSES = )[0-9]+;/\1{{ NUMBER_OF_BARYCENTRIC_INVERSES }};/' "$TEMP_SOL"

# Replace the for-loop comparison to use a template placeholder for CIRCUIT_SIZE
sed -i -E 's/for \{\} gt\(bary_centric_inverses_off, SUM_U_CHALLENGE_14\) \{/for {} gt(bary_centric_inverses_off, SUM_U_CHALLENGE_{{ LOG_N_MINUS_ONE }}) \{/' "$TEMP_SOL"

# Replace the contract name
sed -i 's/contract BlakeOptHonkVerifier/contract HonkVerifier/' "$TEMP_SOL"
Expand All @@ -86,7 +82,7 @@ awk '
gsub(/POWERS_OF_EVALUATION_CHALLENGE_14_LOC/, "POWERS_OF_EVALUATION_CHALLENGE_{{ LOG_N_MINUS_ONE }}_LOC")
gsub(/SUM_U_CHALLENGE_14/, "SUM_U_CHALLENGE_{{ LOG_N_MINUS_ONE }}")
gsub(/GEMINI_A_EVAL_14/, "GEMINI_A_EVAL_{{ LOG_N_MINUS_ONE }}")
gsub(/INVERTED_CHALLENEGE_POW_MINUS_U_14_LOC/, "INVERTED_CHALLENEGE_POW_MINUS_U_{{ LOG_N_MINUS_ONE }}_LOC")
gsub(/INVERTED_CHALLENGE_POW_MINUS_U_14_LOC/, "INVERTED_CHALLENGE_POW_MINUS_U_{{ LOG_N_MINUS_ONE }}_LOC")
gsub(/FOLD_POS_EVALUATIONS_14_LOC/, "FOLD_POS_EVALUATIONS_{{ LOG_N_MINUS_ONE }}_LOC")
gsub(/mcopy\(0x20, GEMINI_FOLD_UNIVARIATE_0_X_LOC, 0x380\)/, "mcopy(0x20, GEMINI_FOLD_UNIVARIATE_0_X_LOC, {{ GEMINI_FOLD_UNIVARIATE_LENGTH }})")
gsub(/prev_challenge := mod\(keccak256\(0x00, 0x3a0\), p\)/, "prev_challenge := mod(keccak256(0x00, {{ GEMINI_FOLD_UNIVARIATE_HASH_LENGTH }}), p)")
Expand Down
78 changes: 40 additions & 38 deletions barretenberg/sol/src/honk/optimised/generate_offsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@

## A mini python script to help generate the locations in memory of the indicies requred to generate a proof

vk_fr = [
"VK_CIRCUIT_SIZE_LOC",
"VK_NUM_PUBLIC_INPUTS_LOC",
"VK_PUB_INPUTS_OFFSET_LOC",
]

vk_g1 = [
"Q_M",
"Q_C",
Expand Down Expand Up @@ -169,10 +163,6 @@ def print_g1(pointer: int, name: str):


def print_vk(pointer: int):
for item in vk_fr:
print_fr(pointer, item)
pointer += 32

for item in vk_g1:
print_small_g1(pointer, item)
pointer += (4*32)
Expand All @@ -195,7 +185,7 @@ def print_proof(pointer: int):
return pointer

BATCHED_RELATION_PARTIAL_LENGTH = 8
PROOF_SIZE_LOG_N = 28
PROOF_SIZE_LOG_N = 15
NUMBER_OF_ENTITIES = 41
NUMBER_OF_SUBRELATIONS = 28
NUMBER_OF_ALPHAS = NUMBER_OF_SUBRELATIONS - 1
Expand Down Expand Up @@ -258,17 +248,19 @@ def print_challenges(pointer: int):
return pointer

BARYCENTRIC_DOMAIN_SIZE = 8
def print_barycentric_domain():
def print_barycentric_domain(pointer: int):
# use scratch space
bary_pointer = SCRATCH_SPACE_POINTER
bary_domain_pointer = 0x100;
for i in range(0, BARYCENTRIC_DOMAIN_SIZE):
print_fr(bary_pointer, "BARYCENTRIC_LAGRANGE_DENOMINATOR_" + str(i) + "_LOC")
bary_pointer += 32
print_fr(bary_domain_pointer , "BARYCENTRIC_LAGRANGE_DENOMINATOR_" + str(i) + "_LOC")
bary_domain_pointer += 32

for i in range(0, PROOF_SIZE_LOG_N):
for j in range(0, BARYCENTRIC_DOMAIN_SIZE):
print_fr(bary_pointer, "BARYCENTRIC_DENOMINATOR_INVERSES_" + str(i) + "_" + str(j) + "_LOC")
bary_pointer += 32
print_fr(pointer, "BARYCENTRIC_DENOMINATOR_INVERSES_" + str(i) + "_" + str(j) + "_LOC")
pointer += 32

return pointer


def print_subrelation_eval(pointer: int):
Expand Down Expand Up @@ -305,7 +297,7 @@ def print_subrelation_intermediates(pointer: int):

def print_batch_scalars(pointer: int):
BATCH_SIZE = 69
for i in range(0, BATCH_SIZE):
for i in range(1, BATCH_SIZE):
print_fr(pointer, "BATCH_SCALAR_" + str(i) + "_LOC")
pointer += 32

Expand All @@ -317,12 +309,6 @@ def print_powers_of_evaluation_challenge(pointer: int):
pointer += 32
return pointer

def print_inverted_gemini_denominators(pointer: int):
for i in range(0, PROOF_SIZE_LOG_N + 1):
print_fr(pointer, "INVERTED_GEMINI_DENOMINATOR_" + str(i) + "_LOC")
pointer += 32
return pointer

# TODO: double check this value
def print_batched_evaluation_accumulator_inversions(pointer: int):
BATCH_SIZE = 15
Expand All @@ -331,23 +317,20 @@ def print_batched_evaluation_accumulator_inversions(pointer: int):
pointer += 32
return pointer

def print_batched_evaluation_location(pointer: int):
print_fr(pointer, "BATCHED_EVALUATION_LOC")
def print_constant_term_accumulator_location(pointer: int):
print_fr(pointer, "CONSTANT_TERM_ACCUMULATOR_LOC")
pointer += 32
return pointer

def print_constant_term_accumulator_location(pointer: int):
print_fr(pointer, "CONSTANT_TERM_ACCUMULATOR_LOC")
def print_gemini_r_inv(pointer: int):
print_fr(pointer, "GEMINI_R_INV_LOC")
pointer += 32
return pointer

def print_inversions():
pointer = SCRATCH_SPACE_POINTER
pointer = print_inverted_gemini_denominators(pointer)
def print_inversions(pointer: int):
pointer = print_batched_evaluation_accumulator_inversions(pointer)

print("")
pointer = print_batched_evaluation_location(pointer)
pointer = print_constant_term_accumulator_location(pointer)

print("")
Expand All @@ -368,6 +351,8 @@ def print_inversions():
print("")
pointer = print_fold_pos_evaluations(pointer)

return pointer



def print_pos_neg_inverted_denominators(pointer: int):
Expand All @@ -379,7 +364,7 @@ def print_pos_neg_inverted_denominators(pointer: int):

def print_inverted_challenge_pow_minus_u(pointer: int):
for i in range(0, PROOF_SIZE_LOG_N):
print_fr(pointer, "INVERTED_CHALLENEGE_POW_MINUS_U_" + str(i) + "_LOC")
print_fr(pointer, "INVERTED_CHALLENGE_POW_MINUS_U_" + str(i) + "_LOC")
pointer += 32
return pointer

Expand All @@ -401,6 +386,20 @@ def print_fold_pos_evaluations(pointer: int):
pointer += 32
return pointer

def print_barycentric_temp_mem(pointer: int):
for i in range(0, PROOF_SIZE_LOG_N * 8):
print_fr(pointer, "BARYCENTRIC_TEMP_" + str(i) + "_LOC")
pointer += 32

print_fr(pointer, "PUBLIC_INPUTS_DENOM_TEMP_LOC")
pointer += 32
print_fr(pointer, "GEMINI_R_INV_TEMP_LOC")
pointer += 32
print_fr(pointer, "BATCH_PRODUCT_TEMP_LOC")
pointer += 32

return pointer

def print_later_scratch_space(pointer: int):
print_fr(pointer, "LATER_SCRATCH_SPACE")
pointer += 32
Expand Down Expand Up @@ -470,7 +469,7 @@ def main():
print_header_centered("SUMCHECK - RUNTIME MEMORY")

print_header_centered("SUMCHECK - RUNTIME MEMORY - BARYCENTRIC")
print_barycentric_domain()
pointer = print_barycentric_domain(pointer)
print_header_centered("SUMCHECK - RUNTIME MEMORY - BARYCENTRIC COMPLETE")

print_header_centered("SUMCHECK - RUNTIME MEMORY - SUBRELATION EVALUATIONS")
Expand All @@ -494,15 +493,18 @@ def main():
print_header_centered("SHPLEMINI - RUNTIME MEMORY - BATCH SCALARS COMPLETE")

print_header_centered("SHPLEMINI - RUNTIME MEMORY - INVERSIONS")
print_inversions()
pointer = print_gemini_r_inv(pointer)
pointer = print_inversions(pointer)
print_header_centered("SHPLEMINI RUNTIME MEMORY - INVERSIONS - COMPLETE")
print_header_centered("SHPLEMINI RUNTIME MEMORY - COMPLETE")

print("")
pointer = print_later_scratch_space(pointer)
print_header_centered("Temporary space - for batch inversions")

print_header_centered("Temporary space")
pointer = print_barycentric_temp_mem(pointer)
pointer = print_temp_space(pointer)
print("")

pointer = print_later_scratch_space(pointer)
print_header_centered("Temporary space - COMPLETE")

print_scratch_space_aliases()
Expand Down
Loading
Loading