Merge branch 'main' into feat/analytics-update

This commit is contained in:
Diego Prats 2024-11-12 16:39:53 -08:00 committed by GitHub
commit bddf4e6c54
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 130 additions and 50 deletions

64
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,64 @@
name: ci
on:
push:
branches:
- main
pull_request:
branches:
- "**"
jobs:
build:
name: Lint CLI
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
sparse-checkout: |
clients/cli
proto
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Install protoc
uses: arduino/setup-protoc@v3
- name: Set up Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: ./clients/cli
- name: Format
working-directory: clients/cli
run: |
rustfmt src/**/*.rs --check --edition 2021
- name: Build
working-directory: clients/cli
run: |
cargo build --profile=ci-build
- name: Run cargo clippy
working-directory: clients/cli
run: |
cargo clippy --profile=ci-build --no-deps --all-targets --workspace -- -D warnings
- name: Test
working-directory: clients/cli
run: |
cargo test --profile=ci-build --tests
- name: Ensure checked in generated files are up to date
run: |
if [ -n "$(git status --porcelain)" ]; then \
echo "There are uncommitted changes in working tree after building."; \
git status; \
git --no-pager diff; \
exit 1; \
else \
echo "Git working tree is clean"; \
fi;

View File

@ -1567,7 +1567,7 @@ dependencies = [
[[package]]
name = "nexus-network"
version = "0.3.2"
version = "0.3.4"
dependencies = [
"ark-bn254",
"ark-crypto-primitives",

View File

@ -1,6 +1,6 @@
[package]
name = "nexus-network"
version = "0.3.2"
version = "0.3.4"
edition = "2021"
[[bin]]
@ -10,6 +10,23 @@ path = "src/prover.rs"
[build-dependencies]
prost-build = "0.13"
[profile.dev]
opt-level = 1
[profile.release]
lto = "fat"
strip = true
codegen-units = 1
[profile.ci-build]
inherits = "dev"
opt-level = 0
debug = 0
strip = "none"
lto = false
codegen-units = 256
incremental = true
[dependencies]
async-stream = "0.3"
clap = { version = "4.5", features = ["derive"] }
@ -83,8 +100,3 @@ ark-vesta = { git = "https://github.com/arkworks-rs/curves/", rev = "8c0256a" }
ark-bls12-381 = { git = "https://github.com/arkworks-rs/curves/", rev = "3fded1f" }
zstd-sys = { git = "https://github.com/gyscos/zstd-rs" }
[profile.release]
strip = true
lto = true
codegen-units = 1

View File

@ -2,7 +2,7 @@
#[cfg(debug_assertions)]
pub fn analytics_id(_ws_addr_string: &str) -> String {
// Use one of the tokens in the release version if debugging analytics
return "".into();
"".into()
}
// Debug version of analytics_api_key

View File

@ -32,8 +32,8 @@ use nexus_core::{
init_circuit_trace, key::CanonicalSerialize, pp::gen_vm_pp, prove_seq_step, types::*,
},
};
use rand::RngCore;
use zstd::stream::Encoder;
use rand::{ RngCore };
#[derive(Parser, Debug)]
struct Args {
@ -118,7 +118,7 @@ async fn main() {
contents: Some(prover_request::Contents::Registration(
ProverRequestRegistration {
prover_type: ProverType::Volunteer.into(),
prover_id: prover_id.clone().into(),
prover_id: prover_id.clone(),
estimated_proof_cycles_hertz: None,
},
)),
@ -127,21 +127,25 @@ async fn main() {
let mut retries = 0;
let max_retries = 5;
loop {
if let Err(e) = client.send(Message::Binary(registration.encode_to_vec())).await {
eprintln!("Failed to send message: {:?}, attempt {}/{}", e, retries + 1, max_retries);
while let Err(e) = client
.send(Message::Binary(registration.encode_to_vec()))
.await
{
eprintln!(
"Failed to send message: {:?}, attempt {}/{}",
e,
retries + 1,
max_retries
);
retries += 1;
if retries >= max_retries {
eprintln!("Max retries reached, exiting...");
break;
}
// Add a delay before retrying
tokio::time::sleep(tokio::time::Duration::from_secs(u64::pow(2, retries))).await;
} else {
retries += 1;
if retries >= max_retries {
eprintln!("Max retries reached, exiting...");
break;
}
// Add a delay before retrying
tokio::time::sleep(tokio::time::Duration::from_secs(u64::pow(2, retries))).await;
}
track(
@ -180,7 +184,7 @@ async fn main() {
);
let mut vm: NexusVM<MerkleTrie> =
parse_elf(&elf_bytes.as_ref()).expect("error loading and parsing RISC-V instruction");
parse_elf(elf_bytes.as_ref()).expect("error loading and parsing RISC-V instruction");
vm.syscalls.set_input(&input);
// TODO(collinjackson): Get outputs
@ -244,10 +248,10 @@ async fn main() {
completed_fraction = steps_proven as f32 / steps_to_prove as f32;
let progress = ProverRequest {
contents: Some(prover_request::Contents::Progress(Progress {
completed_fraction: completed_fraction,
completed_fraction,
steps_in_trace: total_steps as i32,
steps_to_prove: steps_to_prove as i32,
steps_proven: steps_proven as i32,
steps_proven,
})),
};
let progress_duration = SystemTime::now().duration_since(progress_time).unwrap();
@ -255,7 +259,10 @@ async fn main() {
let proof_cycles_hertz = k as f64 * 1000.0 / progress_duration.as_millis() as f64;
track(
"progress".into(),
format!("Proved step {} at {:.2} proof cycles/sec.", step, proof_cycles_hertz),
format!(
"Proved step {} at {:.2} proof cycles/sec.",
step, proof_cycles_hertz
),
&ws_addr_string,
json!({
"completed_fraction": completed_fraction,
@ -273,21 +280,22 @@ async fn main() {
let mut retries = 0;
let max_retries = 5;
loop {
if let Err(e) = client.send(Message::Binary(progress.encode_to_vec())).await {
eprintln!("Failed to send message: {:?}, attempt {}/{}", e, retries + 1, max_retries);
retries += 1;
if retries >= max_retries {
eprintln!("Max retries reached, exiting...");
break;
}
// Add a delay before retrying
tokio::time::sleep(tokio::time::Duration::from_secs(u64::pow(2, retries))).await;
} else {
while let Err(e) = client.send(Message::Binary(progress.encode_to_vec())).await {
eprintln!(
"Failed to send message: {:?}, attempt {}/{}",
e,
retries + 1,
max_retries
);
retries += 1;
if retries >= max_retries {
eprintln!("Max retries reached, exiting...");
break;
}
// Add a delay before retrying
tokio::time::sleep(tokio::time::Duration::from_secs(u64::pow(2, retries))).await;
}
if step == end - 1 {
@ -305,14 +313,18 @@ async fn main() {
})),
};
let duration = SystemTime::now().duration_since(start_time).unwrap();
let proof_cycles_hertz = cycles_proven as f64 * 1000.0 / duration.as_millis() as f64;
let proof_cycles_hertz =
cycles_proven as f64 * 1000.0 / duration.as_millis() as f64;
client
.send(Message::Binary(response.encode_to_vec()))
.await
.unwrap();
.unwrap();
track(
"proof".into(),
format!("Proof sent! Overall speed was {:.2} proof cycles/sec.", proof_cycles_hertz),
format!(
"Proof sent! Overall speed was {:.2} proof cycles/sec.",
proof_cycles_hertz
),
&ws_addr_string,
json!({
"proof_duration_sec": duration.as_secs(),

View File

@ -1,8 +0,0 @@
#!/bin/sh
mkdir -p clients/flutter/lib/src/generated
protoc --experimental_allow_proto3_optional --dart_out=grpc:clients/flutter/lib/src/generated -Iproto proto/orchestrator.proto
dart format clients/flutter/lib/src/generated
(cd clients/dummy_client && cargo build || echo clients/dummy_client not found, possibly due to a sparse checkout.)
(cd clients/cli && cargo build || echo clients/cli not found, possibly due to a sparse checkout.)
(cd orchestrator && cargo build || echo orchestrator/ not found, possibly due a sparse checkout.)