Skip to content

Commit 848e2c3

Browse files
committed
feat: setup the GHA for circom/zeto
1 parent 5ebe05c commit 848e2c3

File tree

1 file changed

+126
-0
lines changed

1 file changed

+126
-0
lines changed

.github/workflows/solidity.yml

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)