-
Notifications
You must be signed in to change notification settings - Fork 24
154 lines (128 loc) · 5.29 KB
/
integration-test.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
name: CI
on:
push:
branches:
- master
- prod
- release/*
pull_request:
branches:
- master
- prod
- release/*
env:
SCCACHE_REGION: ap-northeast-1
SCCACHE_BUCKET: ff-building
SCCACHE_S3_USE_SSL: true
SCCACHE_S3_KEY_PREFIX: sccache-gh-action
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
CARGO_INCREMENTAL: false
jobs:
integration-test:
runs-on: ubuntu-latest
# env:
# RUST_LOG: "info"
timeout-minutes: 15
strategy:
matrix:
rust:
- 1.56.0
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Install rust 1.56.0 toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.56.0
override: true
components: rustfmt, clippy
- name: Cache cargo registry
uses: actions/cache@v2
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v2
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo target
uses: actions/cache@v2
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- name: Setup sccache
run: |
cd $RUNNER_TEMP
export NAME="sccache-v0.2.15-x86_64-unknown-linux-musl"
curl -fsSOL https://github.com/mozilla/sccache/releases/download/v0.2.15/$NAME.tar.gz
tar xzf $NAME.tar.gz
mkdir -p ~/.cargo/bin
mv ./$NAME/sccache ~/.cargo/bin
chmod +x ~/.cargo/bin/sccache
printf "[build]\nrustc-wrapper = \"/home/runner/.cargo/bin/sccache\"" >> ~/.cargo/config
~/.cargo/bin/sccache -s
- name: Install Node.js 14
uses: actions/setup-node@v2
with:
node-version: '14'
# cache: 'yarn'
# cache-dependency-path: yarn.lock
- name: Cache node_modules
id: npm_cache
uses: actions/cache@v2
with:
path: node_modules
key: node_modules-${{ hashFiles('yarn.lock') }}
- name: yarn install
if: steps.npm_cache.outputs.cache-hit != 'true'
run: yarn install
- name: Compile plonkit (release-version)
uses: actions-rs/cargo@v1
with:
command: build
args: --all-features --release
- name: show sccache stats
run: ~/.cargo/bin/sccache -s
- name: Universal setup
run: target/release/plonkit setup --power 20 --srs_monomial_form keys/setup/setup_2^20.key
- name: Compile circuit
run: |
cd test/circuits/poseidon/
npx circom circuit.circom --r1cs --wasm --sym -v
- name: Calculate witness using snarkjs
run: |
cd test/circuits/poseidon/
npx snarkjs wc circuit.wasm input.json witness.wtns
- name: Export verification key
run: target/release/plonkit export-verification-key -m keys/setup/setup_2^20.key -c test/circuits/poseidon/circuit.r1cs -v test/circuits/poseidon/vk.bin
- name: Generate verifier smart contract
run: target/release/plonkit generate-verifier -v test/circuits/poseidon/vk.bin -s test/circuits/poseidon/verifier.sol
- name: Prove with key_monomial_form
run: target/release/plonkit prove -m keys/setup/setup_2^20.key -c test/circuits/poseidon/circuit.r1cs -w test/circuits/poseidon/witness.wtns -p test/circuits/poseidon/proof.bin -j test/circuits/poseidon/proof.json -i test/circuits/poseidon/public.json
- name: Dump key_lagrange_form from key_monomial_form
run: target/release/plonkit dump-lagrange -m keys/setup/setup_2^20.key -l keys/setup/setup_2^20_lagrange.key -c test/circuits/poseidon/circuit.r1cs
- name: Prove with key_monomial_form & key_lagrange_form with overwrite flag
run: target/release/plonkit prove -m keys/setup/setup_2^20.key -l keys/setup/setup_2^20_lagrange.key -c test/circuits/poseidon/circuit.r1cs -w test/circuits/poseidon/witness.wtns -p test/circuits/poseidon/proof.bin -j test/circuits/poseidon/proof.json -i test/circuits/poseidon/public.json --overwrite
- name: Verify proof
run: target/release/plonkit verify -p test/circuits/poseidon/proof.bin -v test/circuits/poseidon/vk.bin
- name: Cache test/contract node_modules
id: test_contract_npm_cache
uses: actions/cache@v2
with:
path: test/contract/single/node_modules
key: test_contract_node_modules-${{ hashFiles('test/contract/single/yarn.lock') }}
- name: yarn install for test/contract
if: steps.test_contract_npm_cache.outputs.cache-hit != 'true'
run: |
cd test/contract/single
yarn install
- name: Verify via smart contract
run: |
cp test/circuits/poseidon/public.json test/contract/single/test/data/public.json
cp test/circuits/poseidon/proof.json test/contract/single/test/data/proof.json
cp test/circuits/poseidon/verifier.sol test/contract/single/contracts/verifier.sol
cd test/contract/single
npx hardhat test