Skip to content

Commit f51194c

Browse files
authored
refactor(build-guest): separate stages better (#106)
* try * try2 * lint * rewrite build guest * lint * clean github action * update * clean up scripts * fix env var loading
1 parent 5854f81 commit f51194c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+532
-351
lines changed

.github/workflows/build-guest.yml

Lines changed: 0 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -39,108 +39,6 @@ jobs:
3939
with:
4040
persist-credentials: false
4141

42-
- name: chunk commitments (prover)
43-
id: commitments-chunk-prover
44-
run: |
45-
{
46-
echo 'commitments<<EOF'
47-
cat crates/prover/src/commitments/chunk.rs
48-
echo EOF
49-
} >> $GITHUB_OUTPUT
50-
51-
- name: batch commitments (prover)
52-
id: commitments-batch-prover
53-
run: |
54-
{
55-
echo 'commitments<<EOF'
56-
cat crates/prover/src/commitments/batch.rs
57-
echo EOF
58-
} >> $GITHUB_OUTPUT
59-
60-
- name: bundle commitments (prover)
61-
id: commitments-bundle-prover
62-
run: |
63-
{
64-
echo 'commitments<<EOF'
65-
cat crates/prover/src/commitments/bundle.rs
66-
echo EOF
67-
} >> $GITHUB_OUTPUT
68-
69-
- name: chunk commitments (verifier)
70-
id: commitments-chunk-verifier
71-
run: |
72-
{
73-
echo 'commitments<<EOF'
74-
cat crates/verifier/src/commitments/chunk.rs
75-
echo EOF
76-
} >> $GITHUB_OUTPUT
77-
78-
- name: batch commitments (verifier)
79-
id: commitments-batch-verifier
80-
run: |
81-
{
82-
echo 'commitments<<EOF'
83-
cat crates/verifier/src/commitments/batch.rs
84-
echo EOF
85-
} >> $GITHUB_OUTPUT
86-
87-
- name: bundle commitments (verifier)
88-
id: commitments-bundle-verifier
89-
run: |
90-
{
91-
echo 'commitments<<EOF'
92-
cat crates/verifier/src/commitments/bundle.rs
93-
echo EOF
94-
} >> $GITHUB_OUTPUT
95-
96-
- name: chunk commitments (circuits)
97-
id: commitments-chunk-circuits
98-
run: |
99-
{
100-
echo 'commitments<<EOF'
101-
cat crates/circuits/batch-circuit/src/child_commitments.rs
102-
echo EOF
103-
} >> $GITHUB_OUTPUT
104-
105-
- name: batch commitments (circuits)
106-
id: commitments-batch-circuits
107-
run: |
108-
{
109-
echo 'commitments<<EOF'
110-
cat crates/circuits/bundle-circuit/src/child_commitments.rs
111-
echo EOF
112-
} >> $GITHUB_OUTPUT
113-
114-
- name: Sanity check for chunk-commitments (prover vs verifier)
115-
uses: nick-fields/assert-action@aa0067e01f0f6545c31755d6ca128c5a3a14f6bf # v2.0.0
116-
with:
117-
expected: ${{ steps.commitments-chunk-prover.outputs.commitments }}
118-
actual: ${{ steps.commitments-chunk-verifier.outputs.commitments }}
119-
120-
- name: Sanity check for chunk-commitments (prover vs circuits)
121-
uses: nick-fields/assert-action@aa0067e01f0f6545c31755d6ca128c5a3a14f6bf # v2.0.0
122-
with:
123-
expected: ${{ steps.commitments-chunk-prover.outputs.commitments }}
124-
actual: ${{ steps.commitments-chunk-circuits.outputs.commitments }}
125-
126-
- name: Sanity check for batch-commitments (prover vs verifier)
127-
uses: nick-fields/assert-action@aa0067e01f0f6545c31755d6ca128c5a3a14f6bf # v2.0.0
128-
with:
129-
expected: ${{ steps.commitments-batch-prover.outputs.commitments }}
130-
actual: ${{ steps.commitments-batch-verifier.outputs.commitments }}
131-
132-
- name: Sanity check for batch-commitments (prover vs circuits)
133-
uses: nick-fields/assert-action@aa0067e01f0f6545c31755d6ca128c5a3a14f6bf #v2.0.0
134-
with:
135-
expected: ${{ steps.commitments-batch-prover.outputs.commitments }}
136-
actual: ${{ steps.commitments-batch-circuits.outputs.commitments }}
137-
138-
- name: Sanity check for bundle-commitments (prover vs verifier)
139-
uses: nick-fields/assert-action@aa0067e01f0f6545c31755d6ca128c5a3a14f6bf #v2.0.0
140-
with:
141-
expected: ${{ steps.commitments-bundle-prover.outputs.commitments }}
142-
actual: ${{ steps.commitments-bundle-verifier.outputs.commitments }}
143-
14442
- name: Build guest and check diff
14543
run: |
14644
make build-guest

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ root_verifier.asm
1111
root-verifier-vm-config
1212
root-verifier-committed-exe
1313
verifier.bin
14+
15+
.vscode/

Cargo.lock

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build-guest-actions-entrypoint.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#!/bin/bash
22

33
# run crates/build-guest
4-
cargo run --release -p scroll-zkvm-build-guest ${FEATURE}
4+
cargo run --release -p scroll-zkvm-build-guest

build-guest.sh

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,17 @@ docker run --cidfile ./build-guest.cid --platform linux/amd64 -e FEATURE=${FEATU
88
container_id=$(cat ./build-guest.cid)
99
rm ./build-guest.cid
1010

11-
# copy commitments from container to local (prover)
12-
docker cp ${container_id}:/app/crates/prover/src/commitments/chunk.rs crates/prover/src/commitments/chunk.rs
13-
docker cp ${container_id}:/app/crates/prover/src/commitments/chunk_rv32.rs crates/prover/src/commitments/chunk_rv32.rs
14-
docker cp ${container_id}:/app/crates/prover/src/commitments/batch.rs crates/prover/src/commitments/batch.rs
15-
docker cp ${container_id}:/app/crates/prover/src/commitments/bundle.rs crates/prover/src/commitments/bundle.rs
16-
docker cp ${container_id}:/app/crates/prover/src/commitments/bundle_euclidv1.rs crates/prover/src/commitments/bundle_euclidv1.rs
17-
18-
# copy commitments to local (verifier)
19-
cp crates/prover/src/commitments/chunk.rs crates/verifier/src/commitments/chunk.rs
20-
cp crates/prover/src/commitments/chunk_rv32.rs crates/verifier/src/commitments/chunk_rv32.rs
21-
cp crates/prover/src/commitments/batch.rs crates/verifier/src/commitments/batch.rs
22-
cp crates/prover/src/commitments/bundle.rs crates/verifier/src/commitments/bundle.rs
23-
cp crates/prover/src/commitments/bundle_euclidv1.rs crates/verifier/src/commitments/bundle_euclidv1.rs
24-
25-
# copy commitments to local (circuits)
26-
cp crates/prover/src/commitments/chunk.rs crates/circuits/batch-circuit/src/child_commitments.rs
27-
cp crates/prover/src/commitments/chunk_rv32.rs crates/circuits/batch-circuit/src/child_commitments_rv32.rs
28-
cp crates/prover/src/commitments/batch.rs crates/circuits/bundle-circuit/src/child_commitments.rs
11+
# copy commitments from container to local
12+
for f in chunk-circuit/chunk_exe_commit.rs \
13+
chunk-circuit/chunk_exe_rv32_commit.rs \
14+
chunk-circuit/chunk_leaf_commit.rs \
15+
batch-circuit/batch_exe_commit.rs \
16+
batch-circuit/batch_leaf_commit.rs \
17+
bundle-circuit/bundle_exe_commit.rs \
18+
bundle-circuit/bundle_euclidv1_commit.rs \
19+
bundle-circuit/bundle_leaf_commit.rs; do
20+
docker cp ${container_id}:/app/crates/circuits/${f} crates/circuits/${f}
21+
done
2922

3023
# copy root verifier
3124
docker cp ${container_id}:/app/crates/build-guest/root_verifier.asm crates/build-guest/root_verifier.asm

crates/build-guest/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ openvm-transpiler = { workspace = true, default-features = false }
1515
openvm-native-circuit = { workspace = true, default-features = false }
1616
openvm-native-transpiler = { workspace = true, default-features = false }
1717
openvm-ecc-guest = { workspace = true, features = ["p256", "k256"]}
18-
openvm-algebra-guest ={ workspace = true, default-features = false }
18+
openvm-algebra-guest = { workspace = true, default-features = false }
19+
openvm-circuit = { workspace = true }
1920

2021
tracing.workspace = true
2122
tracing-subscriber.workspace = true
@@ -32,6 +33,7 @@ snark-verifier-sdk.workspace = true
3233
toml.workspace = true
3334

3435
cargo_metadata = "0.19.1"
36+
dotenv = "0.15.0"
3537

3638
[features]
3739
default = []

crates/build-guest/src/builder/mod.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
use openvm_build::GuestOptions;
2-
use std::{
3-
fs::read_to_string,
4-
path::{Path, PathBuf},
5-
};
2+
use std::{fs::read_to_string, path::Path};
63

74
use openvm_instructions::exe::VmExe;
85
use openvm_sdk::{
@@ -32,27 +29,30 @@ pub fn build<S: AsRef<str>>(
3229
Sdk::new().build(guest_opts, project_root, &Default::default())
3330
}
3431

32+
pub fn load_app_config(project_root: &str) -> eyre::Result<AppConfig<SdkVmConfig>> {
33+
// First read the app config specified in the project's root directory.
34+
let path_app_config = Path::new(project_root).join(FD_APP_CONFIG);
35+
let app_config: AppConfig<SdkVmConfig> =
36+
toml::from_str(&read_to_string(&path_app_config).unwrap()).unwrap();
37+
println!(
38+
"{project_root} app config: {}",
39+
toml::to_string_pretty(&app_config).unwrap()
40+
);
41+
Ok(app_config)
42+
}
43+
3544
/// Transpile the ELF into a VmExe.
3645
#[instrument("BuildGuest::transpile", skip_all, fields(project_root))]
3746
pub fn transpile(
3847
project_root: &str,
3948
elf: Elf,
4049
fd_app_exe: Option<&str>,
41-
) -> eyre::Result<(PathBuf, AppConfig<SdkVmConfig>, PathBuf, VmExe<F>)> {
50+
app_config: AppConfig<SdkVmConfig>,
51+
) -> eyre::Result<VmExe<F>> {
4252
// Create the assets dir if not already present.
4353
let path_assets = Path::new(project_root).join("openvm");
4454
std::fs::create_dir_all(&path_assets)?;
4555

46-
// First read the app config specified in the project's root directory.
47-
let path_app_config = Path::new(project_root).join(FD_APP_CONFIG);
48-
let app_config: AppConfig<SdkVmConfig> =
49-
toml::from_str(&read_to_string(&path_app_config).unwrap()).unwrap();
50-
51-
println!(
52-
"{project_root} app config: {}",
53-
toml::to_string_pretty(&app_config).unwrap()
54-
);
55-
5656
// Transpile ELF to openvm executable.
5757
let transpiler = app_config
5858
.app_vm_config
@@ -66,5 +66,5 @@ pub fn transpile(
6666

6767
println!("exe written to {path_app_exe:?}");
6868

69-
Ok((path_app_config, app_config, path_app_exe, app_exe))
69+
Ok(app_exe)
7070
}

0 commit comments

Comments
 (0)