@@ -94,6 +94,132 @@ jobs:
9494 - name : Install Node dependencies
9595 run : npm install
9696
97+ - name : install circom
98+ run : |
99+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
100+ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh -s -- -y
101+ git clone https://github.com/iden3/circom.git
102+ cd circom
103+ cargo build --release
104+ cargo install --path circom
105+ fi
106+
107+ - name : install snarkjs
108+ run : |
109+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
110+ npm install -g snarkjs@latest
111+ fi
112+
113+ - name : install zeto
114+ run : |
115+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
116+ git clone https://github.com/victoryeo/zeto.git
117+ cd zeto
118+ cd zkp/circuits
119+ npm install
120+ cd ..
121+ circom circuits/anon_enc_nullifier.circom --output ./js/lib --sym --wasm
122+ circom circuits/anon_enc.circom --output ./js/lib --sym --wasm
123+ circom circuits/anon_nullifier.circom --output ./js/lib --sym --wasm
124+ circom circuits/anon.circom --output ./js/lib --sym --wasm
125+ circom circuits/check-nullifiers.circom --output ./js/lib --sym --wasm
126+ circom circuits/nf_anon_nullifier.circom --output ./js/lib --sym --wasm
127+ circom circuits/nf_anon.circom --output ./js/lib --sym --wasm
128+ fi
129+ - name : create folder
130+ run : |
131+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
132+ mkdir -p ./zeto/proving-keys
133+ fi
134+ - name : download ptau
135+ run : |
136+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
137+ cd zeto
138+ cd proving-keys
139+ wget -nv https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_12.ptau
140+ wget -nv https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_13.ptau
141+ wget -nv https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_16.ptau
142+ wget -nv https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_11.ptau
143+ wget -nv https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_15.ptau
144+ fi
145+ - name : generate R1CS circuit format
146+ run : |
147+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
148+ cd zeto
149+ cd zkp/
150+ circom circuits/anon_enc_nullifier.circom --output ../proving-keys --r1cs
151+ circom circuits/anon_enc.circom --output ../proving-keys --r1cs
152+ circom circuits/anon_nullifier.circom --output ../proving-keys --r1cs
153+ circom circuits/anon.circom --output ../proving-keys --r1cs
154+ circom circuits/check-nullifiers.circom --output ../proving-keys --r1cs
155+ circom circuits/nf_anon_nullifier.circom --output ../proving-keys --r1cs
156+ circom circuits/nf_anon.circom --output ../proving-keys --r1cs
157+ ls ../proving-keys -la
158+ fi
159+ - name : generate proving keys
160+ run : |
161+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
162+ cd zeto
163+ cd zkp/
164+ snarkjs groth16 setup ../proving-keys/anon.r1cs ../proving-keys/powersOfTau28_hez_final_12.ptau ../proving-keys/anon.zkey
165+ snarkjs groth16 setup ../proving-keys/anon_enc.r1cs ../proving-keys/powersOfTau28_hez_final_13.ptau ../proving-keys/anon_enc.zkey
166+ snarkjs groth16 setup ../proving-keys/anon_nullifier.r1cs ../proving-keys/powersOfTau28_hez_final_16.ptau ../proving-keys/anon_nullifier.zkey
167+ snarkjs groth16 setup ../proving-keys/anon_enc_nullifier.r1cs ../proving-keys/powersOfTau28_hez_final_16.ptau ../proving-keys/anon_enc_nullifier.zkey
168+ snarkjs groth16 setup ../proving-keys/nf_anon.r1cs ../proving-keys/powersOfTau28_hez_final_11.ptau ../proving-keys/nf_anon.zkey
169+ snarkjs groth16 setup ../proving-keys/nf_anon_nullifier.r1cs ../proving-keys/powersOfTau28_hez_final_15.ptau ../proving-keys/nf_anon_nullifier.zkey
170+ fi
171+ - name : per-circuit set up ceremony on proving keys
172+ run : |
173+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
174+ cd zeto
175+ cd zkp/
176+ snarkjs zkey contribute ../proving-keys/anon.zkey ../proving-keys/anon_new.zkey --name="contribution" -v -e="random entropy"
177+ snarkjs zkey contribute ../proving-keys/anon_enc.zkey ../proving-keys/anon_enc_new.zkey --name="contribution" -v -e="random entropy"
178+ snarkjs zkey contribute ../proving-keys/anon_nullifier.zkey ../proving-keys/anon_nullifier_new.zkey --name="contribution" -v -e="random entropy"
179+ snarkjs zkey contribute ../proving-keys/anon_enc_nullifier.zkey ../proving-keys/anon_enc_nullifier_new.zkey --name="contribution" -v -e="random entropy"
180+ snarkjs zkey contribute ../proving-keys/nf_anon.zkey ../proving-keys/nf_anon_new.zkey --name="contribution" -v -e="random entropy"
181+ snarkjs zkey contribute ../proving-keys/nf_anon_nullifier.zkey ../proving-keys/nf_anon_nullifier_new.zkey --name="contribution" -v -e="random entropy"
182+ fi
183+ - name : generate verfication keys
184+ run : |
185+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
186+ cd zeto
187+ cd zkp/
188+ snarkjs zkey export verificationkey ../proving-keys/anon_new.zkey ../proving-keys/anon-vkey.json
189+ snarkjs zkey export verificationkey ../proving-keys/anon_enc_new.zkey ../proving-keys/anon_enc-vkey.json
190+ snarkjs zkey export verificationkey ../proving-keys/anon_nullifier_new.zkey ../proving-keys/anon_nullifier-vkey.json
191+ snarkjs zkey export verificationkey ../proving-keys/anon_enc_nullifier_new.zkey ../proving-keys/anon_enc_nullifier-vkey.json
192+ snarkjs zkey export verificationkey ../proving-keys/nf_anon_new.zkey ../proving-keys/nf_anon-vkey.json
193+ snarkjs zkey export verificationkey ../proving-keys/nf_anon_nullifier_new.zkey ../proving-keys/nf_anon_nullifier-vkey.json
194+ fi
195+ - name : generate solidity verifier library
196+ run : |
197+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
198+ mkdir -p ./zeto/contracts-lib
199+ cd zeto
200+ cd zkp/
201+ snarkjs zkey export solidityverifier ../proving-keys/anon_new.zkey ../contracts-lib/verifier_anon.sol
202+ snarkjs zkey export solidityverifier ../proving-keys/anon_enc_new.zkey ../contracts-lib/verifier_anon_enc.sol
203+ snarkjs zkey export solidityverifier ../proving-keys/anon_nullifier_new.zkey ../contracts-lib/verifier_anon_nullifier.sol
204+ snarkjs zkey export solidityverifier ../proving-keys/anon_enc_nullifier_new.zkey ../contracts-lib/verifier_anon_enc_nullifier.sol
205+ snarkjs zkey export solidityverifier ../proving-keys/nf_anon_new.zkey ../contracts-lib/verifier_nf_anon.sol
206+ snarkjs zkey export solidityverifier ../proving-keys/nf_anon_nullifier_new.zkey ../contracts-lib/verifier_nf_anon_nullifier.sol
207+ ls ../proving-keys -la
208+ ls ../contracts-lib -la
209+ fi
210+ - name : edit solidity files
211+ run : |
212+ if [[ ${{ github.repository }} == *"zeto"* ]]; then
213+ cd zeto
214+ cd contracts-lib
215+ sed 's/Groth16Verifier/Groth16Verifier_Anon/' verifier_anon.sol > ../solidity/contracts/lib/verifier_anon.sol
216+ sed 's/Groth16Verifier/Groth16Verifier_AnonEnc/' verifier_anon_enc.sol > ../solidity/contracts/lib/verifier_anon_enc.sol
217+ sed 's/Groth16Verifier/Groth16Verifier_AnonNullifier/' verifier_anon_nullifier.sol > ../solidity/contracts/lib/verifier_anon_nullifier.sol
218+ sed 's/Groth16Verifier/Groth16Verifier_AnonEncNullifier/' verifier_anon_enc_nullifier.sol > ../solidity/contracts/lib/verifier_anon_enc_nullifier.sol
219+ sed 's/Groth16Verifier/Groth16Verifier_NFAnon/' verifier_nf_anon.sol > ../solidity/contracts/lib/verifier_nf_anon.sol
220+ sed 's/Groth16Verifier/Groth16Verifier_NFAnonNullifier/' verifier_nf_anon_nullifier.sol > ../solidity/contracts/lib/verifier_nf_anon_nullifier.sol
221+ fi
222+
97223 - name : Run Forge build
98224 run : |
99225 forge --version
0 commit comments