-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathMakefile
70 lines (57 loc) · 2.93 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
.DELETE_ON_ERROR: $(BUILD_DIR)/%_compiled.json
test:
protostar test --cairo-path=./program/src target program
setup:
cd prover && \
git clone [email protected]:starkware-libs/cairo-lang.git; \
cd cairo-lang && \
git am ../0001-patch-verifier.patch && \
cp -R src/starkware/cairo/* ~/cairo_venv/lib/python3.9/site-packages/starkware/cairo/ && \
cd ../..
cd .. && \
git clone [email protected]:ZeroSync/sandstorm.git && \
cd sandstorm && \
cargo +nightly build -p sandstorm-cli -r -F parallel && \
cd .. && \
git clone [email protected]:ZeroSync/header_chain_parser.git && \
cd header_chain_parser && \
cargo +nightly build && \
cd ..
clean_setup:
cd prover && \
rm -rf cairo-lang
BUILD_DIR=prover/build
$(BUILD_DIR):
mkdir -p $@
CAIRO_DEPENDENCIES=$(shell find program/src -type f -iname "*.cairo" -not -iname "*aggregate_proofs.cairo" -not -iname "*increment_batch.cairo" -not -iname "*prove_batch.cairo")
# Compilation rule for all three cairo programs
$(BUILD_DIR)/%_compiled.json: program/src/%.cairo $(CAIRO_DEPENDENCIES) | $(BUILD_DIR)
cairo-compile $< --cairo_path program/src --output $@ --proof_mode
BATCH_SIZE=8
BATCH_NUMBER=0
batch_proof: $(BUILD_DIR)/prove_batch_compiled.json
# Prove batch program
PYTHONPATH=$$PYTHONPATH:.:program python prover/batch.py --batch_number=$(BATCH_NUMBER) --batch_size=$(BATCH_SIZE) --output_dir=$(BUILD_DIR)
START=0
END=$(shell expr $(START) + $(BATCH_SIZE) - 1)
PREV_PROOF=batch_proofs/batch_0
NEXT_PROOF=batch_proofs/batch_1
aggregate_proof: $(BUILD_DIR)/aggregate_proofs_compiled.json
# Prove aggregate program
PYTHONPATH=$$PYTHONPATH:.:program python prover/aggregate.py --output_dir=$(BUILD_DIR) --prev_proof=$(BUILD_DIR)/$(PREV_PROOF) --next_proof=$(BUILD_DIR)/$(NEXT_PROOF) --start_height=$(START) --end_height=$(END)
PREV_PROOF=increment_0-$(BATCH_SIZE)
increment_proof: $(BUILD_DIR)/increment_batch_compiled.json
# Prove increment program
PYTHONPATH=$$PYTHONPATH:.:program python prover/increment.py --output_dir=$(BUILD_DIR) --prev_proof=$(BUILD_DIR)/$(PREV_PROOF) --batch_size=$(BATCH_SIZE) --start_height=$(START) --end_height=$(END)
batch_program_hash: $(BUILD_DIR)/prove_batch_compiled.json
@echo "Calculating program hash. This may take a few seconds..."
@PROGRAM_HASH=$$(python prover/utils/cairo_hash.py $<) && \
sed -i -E "s/const BATCH_PROGRAM_HASH = 0x[0-9a-fA-F]+;/const BATCH_PROGRAM_HASH = $$PROGRAM_HASH;/" program/src/aggregate_proofs.cairo; \
echo "Updated aggregate_proofs.cairo with new batch_program_hash $$PROGRAM_HASH."
aggregate_program_hash: $(BUILD_DIR)/aggregate_proofs_compiled.json
@echo "Calculating program hash. This may take a few seconds..."
@PROGRAM_HASH=$$(python prover/utils/cairo_hash.py $<) && \
sed -i -E "s/const AGGREGATE_PROGRAM_HASH = 0x[0-9a-fA-F]+;/const AGGREGATE_PROGRAM_HASH = $$PROGRAM_HASH;/" program/src/increment_batch.cairo; \
echo "Updated increment_batch.cairo with new aggregate_program_hash $$PROGRAM_HASH."
setup_db:
python prover/utils/header_db.py