-
Notifications
You must be signed in to change notification settings - Fork 19
222 lines (185 loc) · 14.8 KB
/
main.yml
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
name: tutorial_check
on:
push:
branches: [ master ]
pull_request:
concurrency:
group: ${{
( github.ref == 'refs/heads/master' &&
format('{0}/{1}', github.run_id, github.run_attempt) )
||
format('{0}/{1}', github.workflow, github.ref) }}
cancel-in-progress: true
env:
TOOLCHAIN_VERSION: 0.1.8
CONTAINER_TMP: /opt/
BOOST_VERSION: "1.80.0"
jobs:
test-zkllvm-workflow:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install boost
uses: MarkusJx/[email protected]
id: install-boost
with:
# A list of supported versions can be found here:
# https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json
boost_version: ${{ env.BOOST_VERSION }}
boost_install_dir: ${{ env.CONTAINER_TMP }}
platform_version: 22.04
toolset: gcc
arch: x86
- name: Install deb packages
run: |
echo 'deb [trusted=yes] http://deb.nil.foundation/ubuntu/ all main' | sudo tee -a /etc/apt/sources.list > /dev/null
sudo apt update
sudo apt install -y zkllvm proof-producer
- name: Print versions
run: |
assigner --version
clang-zkllvm --version
proof-generator-multi-threaded --version
proof-generator-single-threaded --version
- name: Clone zkllvm repository
run: git clone https://github.com/NilFoundation/zkLLVM.git
- name: Configure CMake
env:
BOOST_ROOT: "${{ steps.install-boost.outputs.BOOST_ROOT }}"
run: cmake -G "Unix Makefiles" -B ${ZKLLVM_BUILD:-build} -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang-zkllvm -DCI_RUN=TRUE .
- name: Compile main.cpp circuit
run: make -C ${ZKLLVM_BUILD:-build} template
- name: Build main.cpp circuit file and assignment table
run: assigner -b build/src/template.ll -i src/public-input.json -p src/private-input.json --circuit template.crct --assignment-table template.tbl -e pallas
- name: Generate main.cpp proof
run: proof-generator-single-threaded --circuit="template.crct" --assignment-table="template.tbl" --proof="proof.bin"
- name: Generate main.cpp proof single-threaded
run: proof-generator-single-threaded --circuit="template.crct" --assignment-table="template.tbl" --proof="proof.bin"
- name: Generate main.cpp proof multi-threaded
run: proof-generator-multi-threaded --circuit="template.crct" --assignment-table="template.tbl" --proof="proof.bin"
- name: Run run.sh
run: bash scripts/run.sh
- name: Compile arithmetics example
run: make -C ${ZKLLVM_BUILD:-build} arithmetics_cpp_example
- name: Build arithmetics circuit file and assignment table
run: assigner -b build/src/arithmetics_cpp_example.ll -i zkLLVM/examples/inputs/arithmetics.inp --circuit arithmetics_cpp_example.crct --assignment-table arithmetics_cpp_example.tbl -e pallas
- name: Generate arithmetics proof
run: proof-generator-single-threaded --circuit="arithmetics_cpp_example.crct" --assignment-table="arithmetics_cpp_example.tbl" --proof="arithmetics_cpp_example.bin"
- name: Compile ed25519_field_add example
run: make -C ${ZKLLVM_BUILD:-build} ed25519_field_add
- name: Build ed25519_field_add circuit file and assignment table
run: assigner -b build/src/ed25519_field_add.ll -i zkLLVM/examples/inputs/ed25519_field_add.inp --circuit ed25519_field_add.crct --assignment-table ed25519_field_add.tbl -e pallas
- name: Generate ed25519_field_add proof
run: proof-generator-single-threaded --circuit="ed25519_field_add.crct" --assignment-table="ed25519_field_add.tbl" --proof="ed25519_field_add.bin"
- name: Compile ed25519_curve_add example
run: make -C ${ZKLLVM_BUILD:-build} ed25519_curve_add
- name: Build ed25519_curve_add circuit file and assignment table
run: assigner -b build/src/ed25519_curve_add.ll -i zkLLVM/examples/inputs/ed25519_curve_add.inp --circuit ed25519_curve_add.crct --assignment-table ed25519_curve_add.tbl -e pallas
- name: Generate ed25519_curve_add proof
run: proof-generator-single-threaded --circuit="ed25519_curve_add.crct" --assignment-table="ed25519_curve_add.tbl" --proof="ed25519_curve_add.bin"
- name: Compile sha2_256 example
run: make -C ${ZKLLVM_BUILD:-build} sha2_256
- name: Build sha2_256 circuit file and assignment table
run: assigner -b build/src/sha2_256.ll -i zkLLVM/examples/inputs/sha2_256.inp --circuit sha2_256.crct --assignment-table sha2_256.tbl -e pallas
# - name: Generate sha2_256 proof
# run: proof-generator-single-threaded --circuit="sha2_256.crct" --assignment-table="sha2_256.tbl" --proof="sha2_256.bin"
- name: Compile merkle_poseidon_1prover example
run: make -C ${ZKLLVM_BUILD:-build} merkle_poseidon_1prover
- name: Build merkle_poseidon_1prover circuit file and assignment table
run: assigner -b build/src/merkle_poseidon_1prover.ll -i zkLLVM/examples/inputs/merkle_poseidon_1prover_public.inp -p zkLLVM/examples/inputs/merkle_poseidon_1prover_private.inp --circuit merkle_poseidon_1prover.crct --assignment-table merkle_poseidon_1prover.tbl -e pallas
- name: Generate merkle_poseidon_1prover proof
run: proof-generator-single-threaded --circuit="merkle_poseidon_1prover.crct" --assignment-table="merkle_poseidon_1prover.tbl" --proof="merkle_poseidon_1prover.bin"
- name: Compile private_input_array example
run: make -C ${ZKLLVM_BUILD:-build} private_input_array
- name: Build private_input_array circuit file and assignment table
run: assigner -b build/src/private_input_array.ll -i zkLLVM/examples/inputs/private_input_array_public.inp -p zkLLVM/examples/inputs/private_input_array_private.inp --circuit private_input_array.crct --assignment-table private_input_array.tbl -e pallas
- name: Generate private_input_array proof
run: proof-generator-single-threaded --circuit="private_input_array.crct" --assignment-table="private_input_array.tbl" --proof="private_input_array.bin"
- name: Compile poseidon example
run: make -C ${ZKLLVM_BUILD:-build} poseidon
- name: Build poseidon circuit file and assignment table
run: assigner -b build/src/poseidon.ll -i zkLLVM/examples/inputs/poseidon.inp --circuit poseidon.crct --assignment-table poseidon.tbl -e pallas
- name: Generate poseidon proof
run: proof-generator-single-threaded --circuit="poseidon.crct" --assignment-table="poseidon.tbl" --proof="poseidon.bin"
- name: Compile placeholder_verifier example
run: make -C ${ZKLLVM_BUILD:-build} placeholder_verifier
- name: Build placeholder_verifier circuit file and assignment table
run: assigner -b build/src/placeholder_verifier.ll -i zkLLVM/examples/inputs/placeholder_verifier.inp --circuit placeholder_verifier.crct --assignment-table placeholder_verifier.tbl -e pallas
# - name: Generate placeholder_verifier proof
# run: proof-generator-single-threaded --circuit="placeholder_verifier.crct" --assignment-table="placeholder_verifier.tbl" --proof="placeholder_verifier.bin"
- name: Compile bit_operations_shift_right example
run: make -C ${ZKLLVM_BUILD:-build} bit_operations_shift_right
- name: Build bit_operations_shift_right circuit file and assignment table
run: assigner -b build/src/bit_operations_shift_right.ll -i zkLLVM/examples/inputs/bit_operations/shift_right.inp --circuit bit_operations_shift_right.crct --assignment-table bit_operations_shift_right.tbl -e pallas
- name: Generate bit_operations_shift_right proof
run: proof-generator-single-threaded --circuit="bit_operations_shift_right.crct" --assignment-table="bit_operations_shift_right.tbl" --proof="bit_operations_shift_right.bin"
- name: Compile bit_operations_bit_decomposition example
run: make -C ${ZKLLVM_BUILD:-build} bit_operations_bit_decomposition
- name: Build bit_operations_bit_decomposition circuit file and assignment table
run: assigner -b build/src/bit_operations_bit_decomposition.ll -i zkLLVM/examples/inputs/bit_operations/bit_decomposition.inp --circuit bit_operations_bit_decomposition.crct --assignment-table bit_operations_bit_decomposition.tbl -e pallas
- name: Generate bit_operations_bit_decomposition proof
run: proof-generator-single-threaded --circuit="bit_operations_bit_decomposition.crct" --assignment-table="bit_operations_bit_decomposition.tbl" --proof="bit_operations_bit_decomposition.bin"
- name: Compile bit_operations_uint_division example
run: make -C ${ZKLLVM_BUILD:-build} bit_operations_uint_division
- name: Build bit_operations_uint_division circuit file and assignment table
run: assigner -b build/src/bit_operations_uint_division.ll -i zkLLVM/examples/inputs/bit_operations/uint_division.inp --circuit bit_operations_uint_division.crct --assignment-table bit_operations_uint_division.tbl -e pallas
- name: Generate bit_operations_uint_division proof
run: proof-generator-single-threaded --circuit="bit_operations_uint_division.crct" --assignment-table="bit_operations_uint_division.tbl" --proof="bit_operations_uint_division.bin"
- name: Compile bit_operations_uint_remainder example
run: make -C ${ZKLLVM_BUILD:-build} bit_operations_uint_remainder
- name: Build bit_operations_uint_remainder circuit file and assignment table
run: assigner -b build/src/bit_operations_uint_remainder.ll -i zkLLVM/examples/inputs/bit_operations/uint_remainder.inp --circuit bit_operations_uint_remainder.crct --assignment-table bit_operations_uint_remainder.tbl -e pallas
- name: Generate bit_operations_uint_remainder proof
run: proof-generator-single-threaded --circuit="bit_operations_uint_remainder.crct" --assignment-table="bit_operations_uint_remainder.tbl" --proof="bit_operations_uint_remainder.bin"
- name: Compile compare_lequal example
run: make -C ${ZKLLVM_BUILD:-build} compare_lequal
- name: Build compare_lequal circuit file and assignment table
run: assigner -b build/src/compare_lequal.ll -i zkLLVM/examples/inputs/compare/lequal.inp --circuit compare_lequal.crct --assignment-table compare_lequal.tbl -e pallas
# - name: Generate compare_lequal proof
# run: proof-generator-single-threaded --circuit="compare_lequal.crct" --assignment-table="compare_lequal.tbl" --proof="compare_lequal.bin"
- name: Compile compare_neq example
run: make -C ${ZKLLVM_BUILD:-build} compare_neq
- name: Build compare_neq circuit file and assignment table
run: assigner -b build/src/compare_neq.ll -i zkLLVM/examples/inputs/compare/neq.inp --circuit compare_neq.crct --assignment-table compare_neq.tbl -e pallas
- name: Generate compare_neq proof
run: proof-generator-single-threaded --circuit="compare_neq.crct" --assignment-table="compare_neq.tbl" --proof="compare_neq.bin"
- name: Compile compare_eq example
run: make -C ${ZKLLVM_BUILD:-build} compare_eq
- name: Build compare_eq circuit file and assignment table
run: assigner -b build/src/compare_eq.ll -i zkLLVM/examples/inputs/compare/eq.inp --circuit compare_eq.crct --assignment-table compare_eq.tbl -e pallas
- name: Generate compare_eq proof
run: proof-generator-single-threaded --circuit="compare_eq.crct" --assignment-table="compare_eq.tbl" --proof="compare_eq.bin"
- name: Compile validate_merkle_path_sha2_256 example
run: make -C ${ZKLLVM_BUILD:-build} validate_merkle_path_sha2_256
- name: Build validate_merkle_path_sha2_256 circuit file and assignment table
run: assigner -b build/src/validate_merkle_path_sha2_256.ll -i zkLLVM/examples/inputs/validate_merkle_path_sha2_256.inp --circuit validate_merkle_path_sha2_256.crct --assignment-table validate_merkle_path_sha2_256.tbl -e pallas
# - name: Generate validate_merkle_path_sha2_256 proof
# run: proof-generator-single-threaded --circuit="validate_merkle_path_sha2_256.crct" --assignment-table="validate_merkle_path_sha2_256.tbl" --proof="validate_merkle_path_sha2_256.bin"
- name: Compile eddsa_signature_verification example
run: make -C ${ZKLLVM_BUILD:-build} eddsa_signature_verification
- name: Build eddsa_signature_verification circuit file and assignment table
run: assigner -b build/src/eddsa_signature_verification.ll -i zkLLVM/examples/inputs/eddsa_signature_verification.inp --circuit eddsa_signature_verification.crct --assignment-table eddsa_signature_verification.tbl -e pallas
# - name: Generate eddsa_signature_verification proof
# run: proof-generator-single-threaded --circuit="eddsa_signature_verification.crct" --assignment-table="eddsa_signature_verification.tbl" --proof="eddsa_signature_verification.bin"
- name: Compile balances_tree example
run: make -C ${ZKLLVM_BUILD:-build} balances_tree
- name: Build balances_tree circuit file and assignment table
run: assigner -b build/src/balances_tree.ll -i zkLLVM/examples/inputs/balances_tree_public.inp -p zkLLVM/examples/inputs/balances_tree_private.inp --circuit balances_tree.crct --assignment-table balances_tree.tbl -e pallas
# - name: Generate balances_tree proof
# run: proof-generator-single-threaded --circuit="balances_tree.crct" --assignment-table="balances_tree.tbl" --proof="balances_tree.bin"
- name: Compile sha2_512 example
run: make -C ${ZKLLVM_BUILD:-build} sha2_512
- name: Build sha2_512 circuit file and assignment table
run: assigner -b build/src/sha2_512.ll -i zkLLVM/examples/inputs/sha2_512.inp --circuit sha2_512.crct --assignment-table sha2_512.tbl -e pallas
# - name: Generate sha2_512 proof
# run: proof-generator-single-threaded --circuit="sha2_512.crct" --assignment-table="sha2_512.tbl" --proof="sha2_512.bin"
- name: Compile pallas_curve_examples_pallas_curve_add example
run: make -C ${ZKLLVM_BUILD:-build} pallas_curve_examples_pallas_curve_add
- name: Build pallas_curve_examples_pallas_curve_add circuit file and assignment table
run: assigner -b build/src/pallas_curve_examples_pallas_curve_add.ll -i zkLLVM/examples/inputs/pallas_curve_examples/pallas_curve_add.inp --circuit pallas_curve_examples_pallas_curve_add.crct --assignment-table pallas_curve_examples_pallas_curve_add.tbl -e pallas
- name: Generate pallas_curve_examples_pallas_curve_add proof
run: proof-generator-single-threaded --circuit="pallas_curve_examples_pallas_curve_add.crct" --assignment-table="pallas_curve_examples_pallas_curve_add.tbl" --proof="pallas_curve_examples_pallas_curve_add.bin"
# - name: Build circuit parameters for EVM verifier endpoint
# run: scripts/run.sh --verbose --docker build_circuit_params