Skip to content

Commit

Permalink
feat: implement tree-like logger
Browse files Browse the repository at this point in the history
  • Loading branch information
Fumuran committed Jan 14, 2024
1 parent 5452104 commit 985e78b
Show file tree
Hide file tree
Showing 17 changed files with 398 additions and 473 deletions.
1 change: 1 addition & 0 deletions examples/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ rand-utils = { version = "0.7", path = "../utils/rand", package = "winter-rand-u
structopt = { version = "0.3", default-features = false }
tracing = { version = "0.1", default-features = false }
tracing-subscriber = { version = "0.3", features = ["std", "env-filter"] }
tracing-forest = { version = "0.1", features = ["ansi", "smallvec"] }
winterfell = { version="0.7", path = "../winterfell", default-features = false }

[dev-dependencies]
Expand Down
32 changes: 15 additions & 17 deletions examples/src/fibonacci/fib2/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use super::utils::compute_fib_term;
use crate::{Blake3_192, Blake3_256, Example, ExampleOptions, HashFunction, Sha3_256};
use core::marker::PhantomData;
use std::time::Instant;
use tracing::{event, Level};
use tracing::{debug_span, event, Level};
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, FieldElement},
Expand Down Expand Up @@ -65,8 +65,7 @@ impl<H: ElementHasher> FibExample<H> {
// compute Fibonacci sequence
let now = Instant::now();
let result = compute_fib_term(sequence_length);
event!(
Level::DEBUG,
println!(
"Computed Fibonacci sequence up to {}th term in {} ms",
sequence_length,
now.elapsed().as_millis()
Expand All @@ -91,27 +90,26 @@ where
fn prove(&self) -> StarkProof {
event!(
Level::DEBUG,
"Generating proof for computing Fibonacci sequence (2 terms per step) up to {}th term\n\
---------------------",
"Generating proof for computing Fibonacci sequence (2 terms per step) up to {}th term",
self.sequence_length
);

// create a prover
let prover = FibProver::<H>::new(self.options.clone());

// generate execution trace
let now = Instant::now();
let trace = prover.build_trace(self.sequence_length);

let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::DEBUG,
"Generated execution trace of {} registers and 2^{} steps in {} ms",
trace_width,
trace_length.ilog2(),
now.elapsed().as_millis()
);
let trace = debug_span!("Generating execution trace").in_scope(|| {
let trace = prover.build_trace(self.sequence_length);
let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::TRACE,
"Generated execution trace of {} registers and 2^{} steps",
trace_width,
trace_length.ilog2(),
);
trace
});

// generate the proof
prover.prove(trace).unwrap()
Expand Down
31 changes: 15 additions & 16 deletions examples/src/fibonacci/fib8/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use super::utils::compute_fib_term;
use crate::{Blake3_192, Blake3_256, Example, ExampleOptions, HashFunction, Sha3_256};
use core::marker::PhantomData;
use std::time::Instant;
use tracing::{event, Level};
use tracing::{debug_span, event, Level};
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, FieldElement},
Expand Down Expand Up @@ -65,8 +65,7 @@ impl<H: ElementHasher> Fib8Example<H> {
// compute Fibonacci sequence
let now = Instant::now();
let result = compute_fib_term(sequence_length);
event!(
Level::DEBUG,
println!(
"Computed Fibonacci sequence up to {}th term in {} ms",
sequence_length,
now.elapsed().as_millis()
Expand All @@ -91,26 +90,26 @@ where
fn prove(&self) -> StarkProof {
event!(
Level::DEBUG,
"Generating proof for computing Fibonacci sequence (8 terms per step) up to {}th term\n\
---------------------",
"Generating proof for computing Fibonacci sequence (8 terms per step) up to {}th term",
self.sequence_length
);

// create a prover
let prover = Fib8Prover::<H>::new(self.options.clone());

// generate execution trace
let now = Instant::now();
let trace = prover.build_trace(self.sequence_length);
let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::DEBUG,
"Generated execution trace of {} registers and 2^{} steps in {} ms",
trace_width,
trace_length.ilog2(),
now.elapsed().as_millis()
);
let trace = debug_span!("Generating execution trace").in_scope(|| {
let trace = prover.build_trace(self.sequence_length);
let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::TRACE,
"Generated execution trace of {} registers and 2^{} steps",
trace_width,
trace_length.ilog2(),
);
trace
});

// generate the proof
prover.prove(trace).unwrap()
Expand Down
32 changes: 15 additions & 17 deletions examples/src/fibonacci/fib_small/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use super::utils::compute_fib_term;
use crate::{Example, ExampleOptions, HashFunction};
use core::marker::PhantomData;
use std::time::Instant;
use tracing::{event, Level};
use tracing::{debug_span, event, Level};
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f64::BaseElement, FieldElement},
Expand Down Expand Up @@ -80,8 +80,7 @@ impl<H: ElementHasher> FibExample<H> {
// compute Fibonacci sequence
let now = Instant::now();
let result = compute_fib_term::<BaseElement>(sequence_length);
event!(
Level::DEBUG,
println!(
"Computed Fibonacci sequence up to {}th term in {} ms",
sequence_length,
now.elapsed().as_millis()
Expand All @@ -106,27 +105,26 @@ where
fn prove(&self) -> StarkProof {
event!(
Level::DEBUG,
"Generating proof for computing Fibonacci sequence (2 terms per step) up to {}th term\n\
---------------------",
"Generating proof for computing Fibonacci sequence (2 terms per step) up to {}th term",
self.sequence_length
);

// create a prover
let prover = FibSmallProver::<H>::new(self.options.clone());

// generate execution trace
let now = Instant::now();
let trace = prover.build_trace(self.sequence_length);

let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::DEBUG,
"Generated execution trace of {} registers and 2^{} steps in {} ms",
trace_width,
trace_length.ilog2(),
now.elapsed().as_millis()
);
let trace = debug_span!("Generating execution trace").in_scope(|| {
let trace = prover.build_trace(self.sequence_length);
let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::TRACE,
"Generated execution trace of {} registers and 2^{} steps",
trace_width,
trace_length.ilog2(),
);
trace
});

// generate the proof
prover.prove(trace).unwrap()
Expand Down
31 changes: 15 additions & 16 deletions examples/src/fibonacci/mulfib2/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use super::utils::compute_mulfib_term;
use crate::{Blake3_192, Blake3_256, Example, ExampleOptions, HashFunction, Sha3_256};
use core::marker::PhantomData;
use std::time::Instant;
use tracing::{event, Level};
use tracing::{debug_span, event, Level};
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, FieldElement},
Expand Down Expand Up @@ -59,8 +59,7 @@ impl<H: ElementHasher> MulFib2Example<H> {
// compute Fibonacci sequence
let now = Instant::now();
let result = compute_mulfib_term(sequence_length);
event!(
Level::DEBUG,
println!(
"Computed multiplicative Fibonacci sequence up to {}th term in {} ms",
sequence_length,
now.elapsed().as_millis()
Expand All @@ -86,26 +85,26 @@ where
let sequence_length = self.sequence_length;
event!(
Level::DEBUG,
"Generating proof for computing multiplicative Fibonacci sequence (8 terms per step) up to {}th term\n\
---------------------",
"Generating proof for computing multiplicative Fibonacci sequence (2 terms per step) up to {}th term",
sequence_length
);

// create a prover
let prover = MulFib2Prover::<H>::new(self.options.clone());

// generate execution trace
let now = Instant::now();
let trace = prover.build_trace(sequence_length);
let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::DEBUG,
"Generated execution trace of {} registers and 2^{} steps in {} ms",
trace_width,
trace_length.ilog2(),
now.elapsed().as_millis()
);
let trace = debug_span!("Generating execution trace").in_scope(|| {
let trace = prover.build_trace(sequence_length);
let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::TRACE,
"Generated execution trace of {} registers and 2^{} steps",
trace_width,
trace_length.ilog2(),
);
trace
});

// generate the proof
prover.prove(trace).unwrap()
Expand Down
31 changes: 15 additions & 16 deletions examples/src/fibonacci/mulfib8/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use super::utils::compute_mulfib_term;
use crate::{Blake3_192, Blake3_256, Example, ExampleOptions, HashFunction, Sha3_256};
use core::marker::PhantomData;
use std::time::Instant;
use tracing::{event, Level};
use tracing::{debug_span, event, Level};
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, FieldElement},
Expand Down Expand Up @@ -60,8 +60,7 @@ impl<H: ElementHasher> MulFib8Example<H> {
// compute Fibonacci sequence
let now = Instant::now();
let result = compute_mulfib_term(sequence_length);
event!(
Level::DEBUG,
println!(
"Computed multiplicative Fibonacci sequence up to {}th term in {} ms",
sequence_length,
now.elapsed().as_millis()
Expand All @@ -87,26 +86,26 @@ where
let sequence_length = self.sequence_length;
event!(
Level::DEBUG,
"Generating proof for computing multiplicative Fibonacci sequence (2 terms per step) up to {}th term\n\
---------------------",
"Generating proof for computing multiplicative Fibonacci sequence (8 terms per step) up to {}th term",
sequence_length
);

// create a prover
let prover = MulFib8Prover::<H>::new(self.options.clone());

// generate execution trace
let now = Instant::now();
let trace = prover.build_trace(sequence_length);
let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::DEBUG,
"Generated execution trace of {} registers and 2^{} steps in {} ms",
trace_width,
trace_length.ilog2(),
now.elapsed().as_millis()
);
let trace = debug_span!("Generating execution trace").in_scope(|| {
let trace = prover.build_trace(sequence_length);
let trace_width = trace.width();
let trace_length = trace.length();
event!(
Level::TRACE,
"Generated execution trace of {} registers and 2^{} steps",
trace_width,
trace_length.ilog2(),
);
trace
});

// generate the proof
prover.prove(trace).unwrap()
Expand Down
43 changes: 16 additions & 27 deletions examples/src/lamport/aggregate/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use super::{
use crate::{Blake3_192, Blake3_256, ExampleOptions, HashFunction, Sha3_256};
use core::marker::PhantomData;
use std::time::Instant;
use tracing::{event, Level};
use tracing::{debug_span, event, Level};
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, get_power_series, FieldElement, StarkField},
Expand Down Expand Up @@ -69,8 +69,7 @@ impl<H: ElementHasher> LamportAggregateExample<H> {
private_keys.push(PrivateKey::from_seed([i as u8; 32]));
public_keys.push(private_keys[i].pub_key().to_elements());
}
event!(
Level::DEBUG,
println!(
"Generated {} private-public key pairs in {} ms",
num_signatures,
now.elapsed().as_millis()
Expand All @@ -85,12 +84,7 @@ impl<H: ElementHasher> LamportAggregateExample<H> {
signatures.push(private_key.sign(msg.as_bytes()));
messages.push(message_to_elements(msg.as_bytes()));
}
event!(
Level::DEBUG,
"Signed {} messages in {} ms",
num_signatures,
now.elapsed().as_millis()
);
println!("Signed {} messages in {} ms", num_signatures, now.elapsed().as_millis());

// verify signature
let now = Instant::now();
Expand All @@ -101,12 +95,7 @@ impl<H: ElementHasher> LamportAggregateExample<H> {
let msg = format!("test message {i}");
assert!(pk.verify(msg.as_bytes(), signature));
}
event!(
Level::DEBUG,
"Verified {} signature in {} ms",
num_signatures,
now.elapsed().as_millis()
);
println!("Verified {} signature in {} ms", num_signatures, now.elapsed().as_millis());

LamportAggregateExample {
options,
Expand All @@ -129,25 +118,25 @@ where
// generate the execution trace
event!(
Level::DEBUG,
"Generating proof for verifying {} Lamport+ signatures \n\
---------------------",
"Generating proof for verifying {} Lamport+ signatures",
self.signatures.len(),
);

// create a prover
let prover =
LamportAggregateProver::<H>::new(&self.pub_keys, &self.messages, self.options.clone());

let now = Instant::now();
let trace = prover.build_trace(&self.messages, &self.signatures);
let trace_length = trace.length();
event!(
Level::DEBUG,
"Generated execution trace of {} registers and 2^{} steps in {} ms",
trace.width(),
trace_length.ilog2(),
now.elapsed().as_millis()
);
let trace = debug_span!("Generating execution trace").in_scope(|| {
let trace = prover.build_trace(&self.messages, &self.signatures);
let trace_length = trace.length();
event!(
Level::TRACE,
"Generated execution trace of {} registers and 2^{} steps",
trace.width(),
trace_length.ilog2(),
);
trace
});

// generate the proof
prover.prove(trace).unwrap()
Expand Down
Loading

0 comments on commit 985e78b

Please sign in to comment.