syncing and bootstrap node fixes
This commit is contained in:
parent
61a64cf538
commit
48aefd88d9
|
|
@ -128,6 +128,7 @@ RPC_PORT = "50050"
|
||||||
TESTNET_RPC_PORT = "50055"
|
TESTNET_RPC_PORT = "50055"
|
||||||
INCOMING_CONNECTIONS = "10"
|
INCOMING_CONNECTIONS = "10"
|
||||||
OUTGOING_CONNECTIONS = "1"
|
OUTGOING_CONNECTIONS = "1"
|
||||||
|
VALIDATOR = "false"
|
||||||
THREADS = "8"
|
THREADS = "8"
|
||||||
|
|
||||||
[Piggyback]
|
[Piggyback]
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ RPC_PORT = "50055"
|
||||||
TESTNET_RPC_PORT = "50050"
|
TESTNET_RPC_PORT = "50050"
|
||||||
INCOMING_CONNECTIONS = "100"
|
INCOMING_CONNECTIONS = "100"
|
||||||
OUTGOING_CONNECTIONS = "10"
|
OUTGOING_CONNECTIONS = "10"
|
||||||
|
VALIDATOR = "false"
|
||||||
; THREADS must 1, 2, or a multple of 4
|
; THREADS must 1, 2, or a multple of 4
|
||||||
THREADS = "8"
|
THREADS = "8"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ pub struct Settings {
|
||||||
pub listen_ip: String,
|
pub listen_ip: String,
|
||||||
pub rpc_port: String,
|
pub rpc_port: String,
|
||||||
pub testnet_rpc_port: String,
|
pub testnet_rpc_port: String,
|
||||||
|
pub validator: bool,
|
||||||
pub outgoing_connections: u8,
|
pub outgoing_connections: u8,
|
||||||
pub incoming_connections: u8,
|
pub incoming_connections: u8,
|
||||||
pub threads: u16,
|
pub threads: u16,
|
||||||
|
|
@ -183,6 +184,10 @@ impl Settings {
|
||||||
.get_from(Some("Settings"), "TESTNET_RPC_PORT")
|
.get_from(Some("Settings"), "TESTNET_RPC_PORT")
|
||||||
.ok_or("TESTNET_RPC_PORT not found")?
|
.ok_or("TESTNET_RPC_PORT not found")?
|
||||||
.to_string(),
|
.to_string(),
|
||||||
|
validator: conf
|
||||||
|
.get_from(Some("Settings"), "VALIDATOR")
|
||||||
|
.unwrap_or("false")
|
||||||
|
.parse::<bool>()?,
|
||||||
outgoing_connections: conf
|
outgoing_connections: conf
|
||||||
.get_from(Some("Settings"), "OUTGOING_CONNECTIONS")
|
.get_from(Some("Settings"), "OUTGOING_CONNECTIONS")
|
||||||
.ok_or("OUTGOING_CONNECTIONS not found")?
|
.ok_or("OUTGOING_CONNECTIONS not found")?
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ use crate::log::{error, info};
|
||||||
use crate::miner::flag::{
|
use crate::miner::flag::{
|
||||||
is_mining_running, is_mining_stop_requested, is_normal_mode, set_mining_state, MiningState,
|
is_mining_running, is_mining_stop_requested, is_normal_mode, set_mining_state, MiningState,
|
||||||
};
|
};
|
||||||
use crate::records::memory::connections::outgoing_connection_count;
|
use crate::records::memory::connections::peer_connection_count;
|
||||||
use crate::records::memory::response_channels::Command;
|
use crate::records::memory::response_channels::Command;
|
||||||
use crate::records::record_chain::save::save_block;
|
use crate::records::record_chain::save::save_block;
|
||||||
use crate::records::record_chain::structs::{SaveBlockParams, SaveType};
|
use crate::records::record_chain::structs::{SaveBlockParams, SaveType};
|
||||||
|
|
@ -18,6 +18,7 @@ use crate::Arc;
|
||||||
use crate::Duration;
|
use crate::Duration;
|
||||||
use crate::Error;
|
use crate::Error;
|
||||||
use crate::Mutex;
|
use crate::Mutex;
|
||||||
|
use crate::Settings;
|
||||||
use crate::Utc;
|
use crate::Utc;
|
||||||
|
|
||||||
pub async fn create_genesis_transaction(
|
pub async fn create_genesis_transaction(
|
||||||
|
|
@ -71,16 +72,22 @@ async fn create_genesis_block(
|
||||||
let mut nonce: u8 = 0;
|
let mut nonce: u8 = 0;
|
||||||
let mut genesis_search_logged = false;
|
let mut genesis_search_logged = false;
|
||||||
let mut disconnected_logged = false;
|
let mut disconnected_logged = false;
|
||||||
|
let validator_mode = Settings::load()
|
||||||
|
.map(|settings| settings.validator)
|
||||||
|
.unwrap_or(false);
|
||||||
|
if validator_mode {
|
||||||
|
info!("[genesis] validator mode enabled; skipping genesis mining");
|
||||||
|
set_mining_state(MiningState::Idle);
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
loop {
|
loop {
|
||||||
// The genesis miner obeys the same mode and stop flags as
|
// The genesis miner obeys the same mode and stop flags as
|
||||||
// normal mining so startup, sync, reorg, and disconnected
|
// normal mining so startup, sync, reorg, and disconnected
|
||||||
// node states can pause it.
|
// node states can pause it.
|
||||||
while !is_normal_mode()
|
while !is_normal_mode() || is_mining_stop_requested() || peer_connection_count().await == 0
|
||||||
|| is_mining_stop_requested()
|
|
||||||
|| outgoing_connection_count().await == 0
|
|
||||||
{
|
{
|
||||||
if is_normal_mode() && !is_mining_stop_requested() && !disconnected_logged {
|
if is_normal_mode() && !is_mining_stop_requested() && !disconnected_logged {
|
||||||
info!("[genesis] waiting for an outgoing peer connection before mining genesis");
|
info!("[genesis] waiting for a live peer connection before mining genesis");
|
||||||
disconnected_logged = true;
|
disconnected_logged = true;
|
||||||
}
|
}
|
||||||
set_mining_state(MiningState::Idle);
|
set_mining_state(MiningState::Idle);
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ use crate::miner::nonce::run_nonce_round;
|
||||||
use crate::miner::structs::MiningAttemptContext;
|
use crate::miner::structs::MiningAttemptContext;
|
||||||
use crate::miner::winner::{handle_mining_winner, verify_and_save_block};
|
use crate::miner::winner::{handle_mining_winner, verify_and_save_block};
|
||||||
use crate::records::block_height::get_block_height::get_height;
|
use crate::records::block_height::get_block_height::get_height;
|
||||||
use crate::records::memory::connections::outgoing_connection_count;
|
use crate::records::memory::connections::peer_connection_count;
|
||||||
use crate::records::memory::network_mapping::NodeInfo;
|
use crate::records::memory::network_mapping::NodeInfo;
|
||||||
use crate::records::memory::response_channels::Command;
|
use crate::records::memory::response_channels::Command;
|
||||||
use crate::records::unpack_block::unpack_header::load_block_header;
|
use crate::records::unpack_block::unpack_header::load_block_header;
|
||||||
|
|
@ -20,6 +20,7 @@ use crate::Arc;
|
||||||
use crate::Duration;
|
use crate::Duration;
|
||||||
use crate::Error;
|
use crate::Error;
|
||||||
use crate::Mutex;
|
use crate::Mutex;
|
||||||
|
use crate::Settings;
|
||||||
use crate::Utc;
|
use crate::Utc;
|
||||||
|
|
||||||
pub async fn mine_block(
|
pub async fn mine_block(
|
||||||
|
|
@ -28,6 +29,17 @@ pub async fn mine_block(
|
||||||
wallet_key: String,
|
wallet_key: String,
|
||||||
map: Arc<Mutex<Command>>,
|
map: Arc<Mutex<Command>>,
|
||||||
) -> Result<(), Box<dyn Error>> {
|
) -> Result<(), Box<dyn Error>> {
|
||||||
|
if Settings::load()
|
||||||
|
.map(|settings| settings.validator)
|
||||||
|
.unwrap_or(false)
|
||||||
|
{
|
||||||
|
info!("[mining] validator mode enabled; mining disabled");
|
||||||
|
set_mining_state(MiningState::Idle);
|
||||||
|
loop {
|
||||||
|
sleep(Duration::from_secs(60)).await;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Mining runs continuously, rebuilding its context from the
|
// Mining runs continuously, rebuilding its context from the
|
||||||
// latest saved tip before each one-second nonce round.
|
// latest saved tip before each one-second nonce round.
|
||||||
let wallet = match Wallet::try_obtain_wallet(wallet_key.clone(), None).await {
|
let wallet = match Wallet::try_obtain_wallet(wallet_key.clone(), None).await {
|
||||||
|
|
@ -122,10 +134,9 @@ async fn wait_until_mining_allowed(mut was_stopped: bool) -> bool {
|
||||||
// Mining pauses whenever the node is syncing, reorganizing, starting,
|
// Mining pauses whenever the node is syncing, reorganizing, starting,
|
||||||
// disconnected, or a stop request has been raised by another task.
|
// disconnected, or a stop request has been raised by another task.
|
||||||
let mut disconnected_logged = false;
|
let mut disconnected_logged = false;
|
||||||
while !is_normal_mode() || is_mining_stop_requested() || outgoing_connection_count().await == 0
|
while !is_normal_mode() || is_mining_stop_requested() || peer_connection_count().await == 0 {
|
||||||
{
|
|
||||||
if is_normal_mode() && !is_mining_stop_requested() && !disconnected_logged {
|
if is_normal_mode() && !is_mining_stop_requested() && !disconnected_logged {
|
||||||
info!("[mining] waiting for an outgoing peer connection before mining");
|
info!("[mining] waiting for a live peer connection before mining");
|
||||||
disconnected_logged = true;
|
disconnected_logged = true;
|
||||||
}
|
}
|
||||||
set_mining_state(MiningState::Idle);
|
set_mining_state(MiningState::Idle);
|
||||||
|
|
|
||||||
|
|
@ -560,6 +560,23 @@ pub async fn outgoing_connection_count() -> usize {
|
||||||
.unwrap_or(0)
|
.unwrap_or(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn peer_connection_count() -> usize {
|
||||||
|
// Mining only needs proof that this node is connected to the live
|
||||||
|
// network; incoming and outgoing miner peers both satisfy that.
|
||||||
|
CONNECTIONS
|
||||||
|
.read()
|
||||||
|
.await
|
||||||
|
.as_ref()
|
||||||
|
.map(|connection| {
|
||||||
|
connection
|
||||||
|
.connection_map
|
||||||
|
.values()
|
||||||
|
.filter(|info| ClientType::from_bytes(&info.client_type) == Some(ClientType::Miner))
|
||||||
|
.count()
|
||||||
|
})
|
||||||
|
.unwrap_or(0)
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn get_client_type_from_memory(key: &str) -> Option<ClientType> {
|
pub async fn get_client_type_from_memory(key: &str) -> Option<ClientType> {
|
||||||
// Recover the stored client role from the serialized connection key
|
// Recover the stored client role from the serialized connection key
|
||||||
// used throughout the RPC layer.
|
// used throughout the RPC layer.
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,12 @@ use crate::wallets::structures::Wallet;
|
||||||
use crate::IpAddr;
|
use crate::IpAddr;
|
||||||
use crate::SocketAddr;
|
use crate::SocketAddr;
|
||||||
use crate::TcpStream;
|
use crate::TcpStream;
|
||||||
use crate::{AsyncReadExt, AsyncWriteExt};
|
use crate::{timeout, AsyncReadExt, AsyncWriteExt, Duration};
|
||||||
use tokio::net::TcpSocket;
|
use tokio::net::TcpSocket;
|
||||||
|
|
||||||
|
const OUTBOUND_CONNECT_TIMEOUT_SECONDS: u64 = 2;
|
||||||
|
const HANDSHAKE_RESPONSE_TIMEOUT_SECONDS: u64 = 2;
|
||||||
|
|
||||||
pub async fn connect_and_handshake(params: Connect) -> Result<(), Box<dyn std::error::Error>> {
|
pub async fn connect_and_handshake(params: Connect) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
// Outbound node sockets bind to the configured local IP before
|
// Outbound node sockets bind to the configured local IP before
|
||||||
// connecting so the socket source matches the advertised node IP.
|
// connecting so the socket source matches the advertised node IP.
|
||||||
|
|
@ -49,7 +52,12 @@ async fn connect_from_configured_ip(remote_addr: SocketAddr) -> io::Result<TcpSt
|
||||||
if local_ip.is_unspecified() {
|
if local_ip.is_unspecified() {
|
||||||
// Wildcard bind addresses such as 0.0.0.0 are for listening only.
|
// Wildcard bind addresses such as 0.0.0.0 are for listening only.
|
||||||
// Outbound NAT/source selection must be left to the OS.
|
// Outbound NAT/source selection must be left to the OS.
|
||||||
return TcpStream::connect(remote_addr).await;
|
return timeout(
|
||||||
|
Duration::from_secs(OUTBOUND_CONNECT_TIMEOUT_SECONDS),
|
||||||
|
TcpStream::connect(remote_addr),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.map_err(|_| connect_timeout_error(remote_addr))?;
|
||||||
}
|
}
|
||||||
|
|
||||||
if local_ip.is_ipv4() != remote_addr.is_ipv4() {
|
if local_ip.is_ipv4() != remote_addr.is_ipv4() {
|
||||||
|
|
@ -66,7 +74,21 @@ async fn connect_from_configured_ip(remote_addr: SocketAddr) -> io::Result<TcpSt
|
||||||
};
|
};
|
||||||
|
|
||||||
socket.bind(SocketAddr::new(local_ip, 0))?;
|
socket.bind(SocketAddr::new(local_ip, 0))?;
|
||||||
socket.connect(remote_addr).await
|
timeout(
|
||||||
|
Duration::from_secs(OUTBOUND_CONNECT_TIMEOUT_SECONDS),
|
||||||
|
socket.connect(remote_addr),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.map_err(|_| connect_timeout_error(remote_addr))?
|
||||||
|
}
|
||||||
|
|
||||||
|
fn connect_timeout_error(remote_addr: SocketAddr) -> io::Error {
|
||||||
|
io::Error::new(
|
||||||
|
io::ErrorKind::TimedOut,
|
||||||
|
format!(
|
||||||
|
"Timed out connecting to {remote_addr} after {OUTBOUND_CONNECT_TIMEOUT_SECONDS} seconds"
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn perform_handshake(mut params: Handshake) -> io::Result<()> {
|
async fn perform_handshake(mut params: Handshake) -> io::Result<()> {
|
||||||
|
|
@ -87,8 +109,13 @@ async fn send_and_receive_handshake(params: &mut Handshake, data: &[u8]) -> io::
|
||||||
let mut total_read = 0usize;
|
let mut total_read = 0usize;
|
||||||
|
|
||||||
while total_read < buffer.len() {
|
while total_read < buffer.len() {
|
||||||
match params.stream.read(&mut buffer[total_read..]).await {
|
match timeout(
|
||||||
Ok(0) => {
|
Duration::from_secs(HANDSHAKE_RESPONSE_TIMEOUT_SECONDS),
|
||||||
|
params.stream.read(&mut buffer[total_read..]),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(Ok(0)) => {
|
||||||
if total_read == 0 {
|
if total_read == 0 {
|
||||||
return Err(io::Error::new(
|
return Err(io::Error::new(
|
||||||
io::ErrorKind::UnexpectedEof,
|
io::ErrorKind::UnexpectedEof,
|
||||||
|
|
@ -97,10 +124,19 @@ async fn send_and_receive_handshake(params: &mut Handshake, data: &[u8]) -> io::
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Ok(n) => {
|
Ok(Ok(n)) => {
|
||||||
total_read += n;
|
total_read += n;
|
||||||
}
|
}
|
||||||
Err(err) => return Err(err),
|
Ok(Err(err)) => return Err(err),
|
||||||
|
Err(_) => {
|
||||||
|
return Err(io::Error::new(
|
||||||
|
io::ErrorKind::TimedOut,
|
||||||
|
format!(
|
||||||
|
"Timed out waiting for handshake response from {} after {} seconds",
|
||||||
|
params.addr, HANDSHAKE_RESPONSE_TIMEOUT_SECONDS
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc_fingerprint":16382034351177431447,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.88.0 (6b00bc388 2025-06-23)\nbinary: rustc\ncommit-hash: 6b00bc3880198600130e1cf62b8f8a93494488cc\ncommit-date: 2025-06-23\nhost: x86_64-unknown-linux-gnu\nrelease: 1.88.0\nLLVM version: 20.1.5\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/viraladmin/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
Signature: 8a477f597d28d172789f06886806bc55
|
||||||
|
# This file is a cache directory tag created by cargo.
|
||||||
|
# For information about cache directory tags see https://bford.info/cachedir/
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
24b38405cafcb27b
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[]","declared_features":"[\"compiler_builtins\", \"core\", \"default\", \"rustc-dep-of-std\", \"std\"]","target":6446972194429367215,"profile":8829588955844408089,"path":15718397531687489017,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/adler-71018259d007ea30/dep-lib-adler","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
63c7cc09c501994f
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\", \"std\"]","declared_features":"[\"compiler_builtins\", \"core\", \"default\", \"rustc-dep-of-std\", \"std\"]","target":340870475748378612,"profile":8829588955844408089,"path":6792006014680124848,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/adler32-522c72f428e38db7/dep-lib-adler32","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
2651ea7a1d0d5953
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"perf-literal\", \"std\"]","declared_features":"[\"default\", \"logging\", \"perf-literal\", \"std\"]","target":7534583537114156500,"profile":8829588955844408089,"path":5713113742629045917,"deps":[[1363051979936526615,"memchr",false,9087968684214088652]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/aho-corasick-b62457fe346f7700/dep-lib-aho_corasick","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
9b2793a534bb43bc
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":17883862002600103897,"profile":17257705230225558938,"path":4297207961829898962,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/anyhow-00ef85ca69a8517e/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
3fffe54fada16646
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\", \"std\"]","declared_features":"[\"backtrace\", \"default\", \"std\"]","target":16100955855663461252,"profile":8829588955844408089,"path":12120047182605475166,"deps":[[13625485746686963219,"build_script_build",false,5847603026955071312]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/anyhow-3e9e80978d98bd74/dep-lib-anyhow","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
50ef2799f8db2651
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[13625485746686963219,"build_script_build",false,13565892337360643995]],"local":[{"RerunIfChanged":{"output":"release/build/anyhow-9ab7062e68cb0860/output","paths":["src/nightly.rs"]}},{"RerunIfEnvChanged":{"var":"RUSTC_BOOTSTRAP","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
d36221c470ade55b
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"serde\", \"serde_test\", \"std\"]","target":12466981117961934896,"profile":8829588955844408089,"path":15633182887047669064,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/ascii-4d80dfcb77f4367d/dep-lib-ascii","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
48f7cd4f81aa0c62
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[]","declared_features":"[]","target":5116616278641129243,"profile":17257705230225558938,"path":6624530729902879270,"deps":[[4289358735036141001,"proc_macro2",false,17113744776566768411],[10420560437213941093,"syn",false,13631603582387891324],[13111758008314797071,"quote",false,12882107055480961349]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/async-trait-77d6d002fbf0a912/dep-lib-async_trait","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
93255c88c83e9875
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[]","declared_features":"[]","target":6962977057026645649,"profile":17257705230225558938,"path":15159620137724000305,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/autocfg-f4b8aff8ae0cf393/dep-lib-autocfg","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
83dc6a64926e1ed3
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[]","declared_features":"[\"default\", \"std\"]","target":4664077033567223684,"profile":8829588955844408089,"path":513692179651278746,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/base-x-f869795b57546f6c/dep-lib-base_x","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
7a0a5bd24cbbc0db
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[]","declared_features":"[]","target":4627734809393167086,"profile":8829588955844408089,"path":7301200522236168213,"deps":[[1162658772697993410,"const_str",false,10216653958921370547],[8687914980556468309,"match_lookup",false,16030408837111135780]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/base256emoji-36c8fce0b50d75bc/dep-lib-base256emoji","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
f3e564d6444916ad
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":8829588955844408089,"path":15814321877172576177,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/base64-3b312bb37d692026/dep-lib-base64","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
20cbb7ede886c2d2
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":8829588955844408089,"path":14719497833188671428,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/base64-ff6d4cdbdd952702/dep-lib-base64","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
a39e7897849b4368
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"std\"]","declared_features":"[\"arbitrary\", \"bytemuck\", \"example_generated\", \"serde\", \"serde_core\", \"std\"]","target":7691312148208718491,"profile":8829588955844408089,"path":1855625364213940646,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bitflags-9f43535eec7ac76b/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
93527032dd55ff82
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\"]","declared_features":"[\"compiler_builtins\", \"core\", \"default\", \"example_generated\", \"rustc-dep-of-std\"]","target":12919857562465245259,"profile":8829588955844408089,"path":16764903893551221127,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/bitflags-e399b4af8a0ee3f8/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
6a662a8e3b19e24a
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[]","declared_features":"[]","target":4098124618827574291,"profile":8829588955844408089,"path":11855264384849763597,"deps":[[10520923840501062997,"generic_array",false,8768866699942839440]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/block-buffer-6c49f4aa0038fcc5/dep-lib-block_buffer","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
2371d05403b1ee50
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[]","declared_features":"[\"zeroize\"]","target":6057344034650883969,"profile":8829588955844408089,"path":3784931029697659536,"deps":[[250943321903011416,"hybrid_array",false,3345875312082419698]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/block-buffer-7349b954db3de287/dep-lib-block_buffer","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
8866cd3c70c4efb9
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\", \"testnet\"]","declared_features":"[\"default\", \"mainnet\", \"testnet\"]","target":7404778146762638093,"profile":13549390595166432554,"path":8513599409284995895,"deps":[[530211389790465181,"hex",false,15787634871714270279],[3705884518517614584,"rustyline",false,6319809711493747040],[3796357749340587960,"ipnetwork",false,14264577701229265917],[4410016827773394062,"serde",false,1873037467600741600],[4574336264774167712,"falcon",false,11297144044893881221],[4679662532519462650,"tokio_postgres",false,4422428846490193115],[4679886969016570272,"serde_json",false,4258190769611774111],[5031988027451808403,"rpassword",false,481357853609675155],[5070769681332304831,"once_cell",false,15744040990028390655],[5799143562311631545,"cid",false,17123766667697463431],[6462525672642925639,"nix",false,14931301615080489175],[6720279626782378166,"encrypted_images",false,17505965052352096354],[7558715456661899285,"fn_dsa",false,9016230108161233584],[8257332575724569899,"ripemd",false,16352470110992745703],[9538054652646069845,"tokio",false,18174193545733255093],[10630857666389190470,"log",false,13043676451246113783],[10697383615564341592,"rayon",false,10414372644332312112],[12125460547956463099,"flexi_logger",false,16918385596032873125],[13077212702700853852,"base64",false,12472236778052707827],[13208667028893622512,"rand",false,10449594904853602868],[13497307427224311986,"sled",false,14919141409615820119],[13625485746686963219,"anyhow",false,5072919796021329727],[13731153033113646547,"colored",false,17962377023233702839],[13799876851028335573,"chrono",false,5896296795736015],[14427219905523166849,"skein",false,3437177760143475770],[15156847361825567345,"rustyline_derive",false,6772773541716608456],[15448801796383039847,"ini",false,485619022592367582],[16252009344366471359,"blockchain",false,13762715908787999977],[16988302369357008712,"shellexpand",false,12715705632306302407],[17917672826516349275,"lazy_static",false,14913325720830054949]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/blockchain-03185415d14778b9/dep-bin-lookup_node_time","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
4aaf26fed29d1dc1
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\", \"testnet\"]","declared_features":"[\"default\", \"mainnet\", \"testnet\"]","target":17638717676012804956,"profile":13549390595166432554,"path":17218787477200514280,"deps":[[530211389790465181,"hex",false,15787634871714270279],[3705884518517614584,"rustyline",false,6319809711493747040],[3796357749340587960,"ipnetwork",false,14264577701229265917],[4410016827773394062,"serde",false,1873037467600741600],[4574336264774167712,"falcon",false,11297144044893881221],[4679662532519462650,"tokio_postgres",false,4422428846490193115],[4679886969016570272,"serde_json",false,4258190769611774111],[5031988027451808403,"rpassword",false,481357853609675155],[5070769681332304831,"once_cell",false,15744040990028390655],[5799143562311631545,"cid",false,17123766667697463431],[6462525672642925639,"nix",false,14931301615080489175],[6720279626782378166,"encrypted_images",false,17505965052352096354],[7558715456661899285,"fn_dsa",false,9016230108161233584],[8257332575724569899,"ripemd",false,16352470110992745703],[9538054652646069845,"tokio",false,18174193545733255093],[10630857666389190470,"log",false,13043676451246113783],[10697383615564341592,"rayon",false,10414372644332312112],[12125460547956463099,"flexi_logger",false,16918385596032873125],[13077212702700853852,"base64",false,12472236778052707827],[13208667028893622512,"rand",false,10449594904853602868],[13497307427224311986,"sled",false,14919141409615820119],[13625485746686963219,"anyhow",false,5072919796021329727],[13731153033113646547,"colored",false,17962377023233702839],[13799876851028335573,"chrono",false,5896296795736015],[14427219905523166849,"skein",false,3437177760143475770],[15156847361825567345,"rustyline_derive",false,6772773541716608456],[15448801796383039847,"ini",false,485619022592367582],[16252009344366471359,"blockchain",false,13762715908787999977],[16988302369357008712,"shellexpand",false,12715705632306302407],[17917672826516349275,"lazy_static",false,14913325720830054949]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/blockchain-1192873396f3cb8a/dep-bin-verify_message","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
3352cf0fc5adbd58
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\", \"testnet\"]","declared_features":"[\"default\", \"mainnet\", \"testnet\"]","target":15040519239318253087,"profile":13549390595166432554,"path":16788225775513844295,"deps":[[530211389790465181,"hex",false,15787634871714270279],[3705884518517614584,"rustyline",false,6319809711493747040],[3796357749340587960,"ipnetwork",false,14264577701229265917],[4410016827773394062,"serde",false,1873037467600741600],[4574336264774167712,"falcon",false,11297144044893881221],[4679662532519462650,"tokio_postgres",false,4422428846490193115],[4679886969016570272,"serde_json",false,4258190769611774111],[5031988027451808403,"rpassword",false,481357853609675155],[5070769681332304831,"once_cell",false,15744040990028390655],[5799143562311631545,"cid",false,17123766667697463431],[6462525672642925639,"nix",false,14931301615080489175],[6720279626782378166,"encrypted_images",false,17505965052352096354],[7558715456661899285,"fn_dsa",false,9016230108161233584],[8257332575724569899,"ripemd",false,16352470110992745703],[9538054652646069845,"tokio",false,18174193545733255093],[10630857666389190470,"log",false,13043676451246113783],[10697383615564341592,"rayon",false,10414372644332312112],[12125460547956463099,"flexi_logger",false,16918385596032873125],[13077212702700853852,"base64",false,12472236778052707827],[13208667028893622512,"rand",false,10449594904853602868],[13497307427224311986,"sled",false,14919141409615820119],[13625485746686963219,"anyhow",false,5072919796021329727],[13731153033113646547,"colored",false,17962377023233702839],[13799876851028335573,"chrono",false,5896296795736015],[14427219905523166849,"skein",false,3437177760143475770],[15156847361825567345,"rustyline_derive",false,6772773541716608456],[15448801796383039847,"ini",false,485619022592367582],[16252009344366471359,"blockchain",false,13762715908787999977],[16988302369357008712,"shellexpand",false,12715705632306302407],[17917672826516349275,"lazy_static",false,14913325720830054949]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/blockchain-1a1e58707fd31869/dep-bin-create_loan_tx","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
9b27258ef0341002
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\", \"testnet\"]","declared_features":"[\"default\", \"mainnet\", \"testnet\"]","target":11084725208516710368,"profile":13549390595166432554,"path":7222418867650431197,"deps":[[530211389790465181,"hex",false,15787634871714270279],[3705884518517614584,"rustyline",false,6319809711493747040],[3796357749340587960,"ipnetwork",false,14264577701229265917],[4410016827773394062,"serde",false,1873037467600741600],[4574336264774167712,"falcon",false,11297144044893881221],[4679662532519462650,"tokio_postgres",false,4422428846490193115],[4679886969016570272,"serde_json",false,4258190769611774111],[5031988027451808403,"rpassword",false,481357853609675155],[5070769681332304831,"once_cell",false,15744040990028390655],[5799143562311631545,"cid",false,17123766667697463431],[6462525672642925639,"nix",false,14931301615080489175],[6720279626782378166,"encrypted_images",false,17505965052352096354],[7558715456661899285,"fn_dsa",false,9016230108161233584],[8257332575724569899,"ripemd",false,16352470110992745703],[9538054652646069845,"tokio",false,18174193545733255093],[10630857666389190470,"log",false,13043676451246113783],[10697383615564341592,"rayon",false,10414372644332312112],[12125460547956463099,"flexi_logger",false,16918385596032873125],[13077212702700853852,"base64",false,12472236778052707827],[13208667028893622512,"rand",false,10449594904853602868],[13497307427224311986,"sled",false,14919141409615820119],[13625485746686963219,"anyhow",false,5072919796021329727],[13731153033113646547,"colored",false,17962377023233702839],[13799876851028335573,"chrono",false,5896296795736015],[14427219905523166849,"skein",false,3437177760143475770],[15156847361825567345,"rustyline_derive",false,6772773541716608456],[15448801796383039847,"ini",false,485619022592367582],[16252009344366471359,"blockchain",false,13762715908787999977],[16988302369357008712,"shellexpand",false,12715705632306302407],[17917672826516349275,"lazy_static",false,14913325720830054949]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/blockchain-1b3602285b55fcad/dep-bin-verify_sign_swap_tx","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
3424d9f035b37462
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\", \"testnet\"]","declared_features":"[\"default\", \"mainnet\", \"testnet\"]","target":1462094713955311381,"profile":13549390595166432554,"path":10778513233301155002,"deps":[[530211389790465181,"hex",false,15787634871714270279],[3705884518517614584,"rustyline",false,6319809711493747040],[3796357749340587960,"ipnetwork",false,14264577701229265917],[4410016827773394062,"serde",false,1873037467600741600],[4574336264774167712,"falcon",false,11297144044893881221],[4679662532519462650,"tokio_postgres",false,4422428846490193115],[4679886969016570272,"serde_json",false,4258190769611774111],[5031988027451808403,"rpassword",false,481357853609675155],[5070769681332304831,"once_cell",false,15744040990028390655],[5799143562311631545,"cid",false,17123766667697463431],[6462525672642925639,"nix",false,14931301615080489175],[6720279626782378166,"encrypted_images",false,17505965052352096354],[7558715456661899285,"fn_dsa",false,9016230108161233584],[8257332575724569899,"ripemd",false,16352470110992745703],[9538054652646069845,"tokio",false,18174193545733255093],[10630857666389190470,"log",false,13043676451246113783],[10697383615564341592,"rayon",false,10414372644332312112],[12125460547956463099,"flexi_logger",false,16918385596032873125],[13077212702700853852,"base64",false,12472236778052707827],[13208667028893622512,"rand",false,10449594904853602868],[13497307427224311986,"sled",false,14919141409615820119],[13625485746686963219,"anyhow",false,5072919796021329727],[13731153033113646547,"colored",false,17962377023233702839],[13799876851028335573,"chrono",false,5896296795736015],[14427219905523166849,"skein",false,3437177760143475770],[15156847361825567345,"rustyline_derive",false,6772773541716608456],[15448801796383039847,"ini",false,485619022592367582],[16252009344366471359,"blockchain",false,13762715908787999977],[16988302369357008712,"shellexpand",false,12715705632306302407],[17917672826516349275,"lazy_static",false,14913325720830054949]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/blockchain-1e28c9d9b5e00070/dep-bin-create_burn_tx","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
2ca275fa6a340daa
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"rustc":11410426090777951712,"features":"[\"default\", \"testnet\"]","declared_features":"[\"default\", \"mainnet\", \"testnet\"]","target":13786635149744130589,"profile":13549390595166432554,"path":5127785099868230833,"deps":[[530211389790465181,"hex",false,15787634871714270279],[3705884518517614584,"rustyline",false,6319809711493747040],[3796357749340587960,"ipnetwork",false,14264577701229265917],[4410016827773394062,"serde",false,1873037467600741600],[4574336264774167712,"falcon",false,11297144044893881221],[4679662532519462650,"tokio_postgres",false,4422428846490193115],[4679886969016570272,"serde_json",false,4258190769611774111],[5031988027451808403,"rpassword",false,481357853609675155],[5070769681332304831,"once_cell",false,15744040990028390655],[5799143562311631545,"cid",false,17123766667697463431],[6462525672642925639,"nix",false,14931301615080489175],[6720279626782378166,"encrypted_images",false,17505965052352096354],[7558715456661899285,"fn_dsa",false,9016230108161233584],[8257332575724569899,"ripemd",false,16352470110992745703],[9538054652646069845,"tokio",false,18174193545733255093],[10630857666389190470,"log",false,13043676451246113783],[10697383615564341592,"rayon",false,10414372644332312112],[12125460547956463099,"flexi_logger",false,16918385596032873125],[13077212702700853852,"base64",false,12472236778052707827],[13208667028893622512,"rand",false,10449594904853602868],[13497307427224311986,"sled",false,14919141409615820119],[13625485746686963219,"anyhow",false,5072919796021329727],[13731153033113646547,"colored",false,17962377023233702839],[13799876851028335573,"chrono",false,5896296795736015],[14427219905523166849,"skein",false,3437177760143475770],[15156847361825567345,"rustyline_derive",false,6772773541716608456],[15448801796383039847,"ini",false,485619022592367582],[16252009344366471359,"blockchain",false,13762715908787999977],[16988302369357008712,"shellexpand",false,12715705632306302407],[17917672826516349275,"lazy_static",false,14913325720830054949]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/blockchain-21b2327cb8be7abb/dep-bin-unpack_torrent","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
This file has an mtime of when this was started.
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue