Merge pull request #5464 from LarryRuane/2022-01-submitblock-log-soln-error

mining: submitblock: log detailed equihash solution error
This commit is contained in:
Kris Nuttycombe 2022-01-25 12:49:00 -07:00 committed by GitHub
commit d8c818bfa5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 3 deletions

View File

@ -30,7 +30,7 @@ use std::io::BufReader;
use std::path::{Path, PathBuf};
use std::slice;
use subtle::CtOption;
use tracing::info;
use tracing::{error, info};
#[cfg(not(target_os = "windows"))]
use std::ffi::OsStr;
@ -528,13 +528,23 @@ pub extern "C" fn librustzcash_eh_isvalid(
soln: *const c_uchar,
soln_len: size_t,
) -> bool {
if (k >= n) || (n % 8 != 0) || (soln_len != (1 << k) * ((n / (k + 1)) as usize + 1) / 8) {
let expected_soln_len = (1 << k) * ((n / (k + 1)) as usize + 1) / 8;
if (k >= n) || (n % 8 != 0) || (soln_len != expected_soln_len) {
error!(
"eh_isvalid: params wrong, n={}, k={}, soln_len={} expected={}",
n, k, soln_len, expected_soln_len,
);
return false;
}
let rs_input = unsafe { slice::from_raw_parts(input, input_len) };
let rs_nonce = unsafe { slice::from_raw_parts(nonce, nonce_len) };
let rs_soln = unsafe { slice::from_raw_parts(soln, soln_len) };
equihash::is_valid_solution(n, k, rs_input, rs_nonce, rs_soln).is_ok()
if let Err(e) = equihash::is_valid_solution(n, k, rs_input, rs_nonce, rs_soln) {
error!("eh_isvalid: is_valid_solution: {}", e);
false
} else {
true
}
}
/// Creates a Sapling verification context. Please free this when you're done.