fix proving output

This commit is contained in:
collin 2020-08-21 18:44:19 -07:00
parent 551595026b
commit bcab2df709
7 changed files with 31 additions and 27 deletions

View File

@ -235,13 +235,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstraintSynthesizer<F> for Compil
SynthesisError::Unsatisfiable SynthesisError::Unsatisfiable
})?; })?;
tracing::info!("Program circuit successfully synthesized!");
// Write results to file // Write results to file
let output_file = OutputFile::new(&package_name); let output_file = OutputFile::new(&package_name);
tracing::info!("Writing to output registers...");
output_file.write(&output_directory, result.bytes()).unwrap(); output_file.write(&output_directory, result.bytes()).unwrap();
Ok(()) Ok(())

View File

@ -86,7 +86,7 @@ impl CLI for BuildCommand {
lib_file_path.push(LIB_FILE_NAME); lib_file_path.push(LIB_FILE_NAME);
// Log compilation of library file to console // Log compilation of library file to console
tracing::info!("library file ({:?})", lib_file_path); tracing::info!("Library file ({:?})", lib_file_path);
// Compile the library file but do not output // Compile the library file but do not output
let _program = Compiler::<Fq, EdwardsGroupType>::parse_program_without_input( let _program = Compiler::<Fq, EdwardsGroupType>::parse_program_without_input(
@ -113,7 +113,7 @@ impl CLI for BuildCommand {
let state_string = StateFile::new(&package_name).read_from(&path)?; let state_string = StateFile::new(&package_name).read_from(&path)?;
// Log compilation of files to console // Log compilation of files to console
tracing::info!("program file ({:?})", main_file_path); tracing::info!("Program file ({:?})", main_file_path);
// Load the program at `main_file_path` // Load the program at `main_file_path`
let program = Compiler::<Fq, EdwardsGroupType>::parse_program_with_input( let program = Compiler::<Fq, EdwardsGroupType>::parse_program_with_input(
@ -183,7 +183,7 @@ impl CLI for BuildCommand {
// Begin "Finished" context for console logging todo: @collin figure a way to get this output with tracing without dropping span // Begin "Finished" context for console logging todo: @collin figure a way to get this output with tracing without dropping span
tracing::span!(tracing::Level::INFO, "Finished").in_scope(|| { tracing::span!(tracing::Level::INFO, "Finished").in_scope(|| {
tracing::info!("compiled in {} milliseconds", start.elapsed().as_millis()); tracing::info!("Program compiled in {} milliseconds\n", start.elapsed().as_millis());
}); });
return Ok(Some((program, checksum_differs))); return Ok(Some((program, checksum_differs)));

View File

@ -52,7 +52,11 @@ impl CLI for ProveCommand {
let path = current_dir()?; let path = current_dir()?;
let package_name = Manifest::try_from(&path)?.get_package_name(); let package_name = Manifest::try_from(&path)?.get_package_name();
tracing::info!("Proving..."); // Begin "Proving" context for console logging
let span = tracing::span!(tracing::Level::INFO, "Proving");
let enter = span.enter();
tracing::info!("Starting...");
// Start the timer // Start the timer
let start = Instant::now(); let start = Instant::now();
@ -68,7 +72,13 @@ impl CLI for ProveCommand {
program_proof.write(&mut proof)?; program_proof.write(&mut proof)?;
ProofFile::new(&package_name).write_to(&path, &proof)?; ProofFile::new(&package_name).write_to(&path, &proof)?;
tracing::info!("Completed program proving"); // Drop "Proving" context for console logging
drop(enter);
// Begin "Finished" context for console logging
tracing::span!(tracing::Level::INFO, "Finished").in_scope(|| {
tracing::info!("Program proving complete\n");
});
Ok((program_proof, prepared_verifying_key)) Ok((program_proof, prepared_verifying_key))
} }

View File

@ -60,7 +60,6 @@ impl CLI for RunCommand {
verifying += start.elapsed(); verifying += start.elapsed();
println!(" ");
println!(" Verifier time : {:?} milliseconds", verifying.as_millis()); println!(" Verifier time : {:?} milliseconds", verifying.as_millis());
println!(" Verifier output : {}", is_success); println!(" Verifier output : {}", is_success);
println!(" "); println!(" ");

View File

@ -70,9 +70,6 @@ impl CLI for SetupCommand {
let span = tracing::span!(tracing::Level::INFO, "Setup"); let span = tracing::span!(tracing::Level::INFO, "Setup");
let enter = span.enter(); let enter = span.enter();
// Start the timer
let start = Instant::now();
// Check if a proving key and verification key already exists // Check if a proving key and verification key already exists
let keys_exist = ProvingKeyFile::new(&package_name).exists_at(&path) let keys_exist = ProvingKeyFile::new(&package_name).exists_at(&path)
&& VerificationKeyFile::new(&package_name).exists_at(&path); && VerificationKeyFile::new(&package_name).exists_at(&path);
@ -80,10 +77,10 @@ impl CLI for SetupCommand {
// If keys do not exist or the checksum differs, run the program setup // If keys do not exist or the checksum differs, run the program setup
// If keys do not exist or the checksum differs, run the program setup // If keys do not exist or the checksum differs, run the program setup
let (proving_key, prepared_verifying_key) = if !keys_exist || checksum_differs { let (proving_key, prepared_verifying_key) = if !keys_exist || checksum_differs {
tracing::info!("Setup starting..."); tracing::info!("Starting...");
// Start the timer // Start the timer for setup
let start = Instant::now(); let setup_start = Instant::now();
// Run the program setup operation // Run the program setup operation
let rng = &mut thread_rng(); let rng = &mut thread_rng();
@ -91,7 +88,7 @@ impl CLI for SetupCommand {
Groth16::<Bls12_377, Compiler<Fr, _>, Vec<Fr>>::setup(program.clone(), rng).unwrap(); Groth16::<Bls12_377, Compiler<Fr, _>, Vec<Fr>>::setup(program.clone(), rng).unwrap();
// Output the setup time // Output the setup time
tracing::info!("Setup completed in {:?} milliseconds", start.elapsed().as_millis()); tracing::info!("Completed in {:?} milliseconds", setup_start.elapsed().as_millis());
// TODO (howardwu): Convert parameters to a 'proving key' struct for serialization. // TODO (howardwu): Convert parameters to a 'proving key' struct for serialization.
// Write the proving key file to the output directory // Write the proving key file to the output directory
@ -128,8 +125,8 @@ impl CLI for SetupCommand {
drop(enter); drop(enter);
// Begin "Finished" context for console logging // Begin "Finished" context for console logging
tracing::span!(tracing::Level::INFO, " Finished").in_scope(|| { tracing::span!(tracing::Level::INFO, "Finished").in_scope(|| {
tracing::info!("setup in {} seconds", start.elapsed().as_secs()); tracing::info!("Program setup complete\n");
}); });
Ok((program, proving_key, prepared_verifying_key)) Ok((program, proving_key, prepared_verifying_key))

View File

@ -105,11 +105,11 @@ impl CLI for TestCommand {
let temporary_program = program.clone(); let temporary_program = program.clone();
let (passed, failed) = temporary_program.compile_test_constraints(pairs)?; let (passed, failed) = temporary_program.compile_test_constraints(pairs)?;
// Set the result of the test command to "ok" if all tests pass // Set the result of the test command to PASSED if no tests failed.
let result = if failed == 0 { let result = if failed == 0 {
"ok".to_owned() "PASSED".to_owned()
} else { } else {
"failed".to_owned() "FAILED".to_owned()
}; };
// Drop "Test" context for console logging // Drop "Test" context for console logging
@ -117,7 +117,13 @@ impl CLI for TestCommand {
// Begin "Finished" context for console logging // Begin "Finished" context for console logging
tracing::span!(tracing::Level::INFO, "Finished").in_scope(|| { tracing::span!(tracing::Level::INFO, "Finished").in_scope(|| {
tracing::info!("result: {}. {} passed; {} failed;\n", result, passed, failed); tracing::info!(
"result: {} in {} milliseconds. {} passed; {} failed;\n",
result,
start.elapsed().as_millis(),
passed,
failed
);
}); });
Ok(()) Ok(())

View File

@ -13,9 +13,6 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>. // along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
use leo_package::errors::ManifestError;
use std::ffi::OsString; use std::ffi::OsString;
#[derive(Debug, Error)] #[derive(Debug, Error)]