A complete blockchain implementation featuring: - synord: Full node with GHOSTDAG consensus - explorer-web: Modern React blockchain explorer with 3D DAG visualization - CLI wallet and tools - Smart contract SDK and example contracts (DEX, NFT, token) - WASM crypto library for browser/mobile
78 lines
2.2 KiB
Rust
78 lines
2.2 KiB
Rust
//! Network commands.
|
|
|
|
use anyhow::Result;
|
|
|
|
use crate::client::RpcClient;
|
|
use crate::output::{self, OutputFormat};
|
|
|
|
/// Add a peer.
|
|
pub async fn add_peer(client: &RpcClient, address: &str, format: OutputFormat) -> Result<()> {
|
|
let success = client.add_peer(address).await?;
|
|
|
|
match format {
|
|
OutputFormat::Json => {
|
|
let result = serde_json::json!({
|
|
"success": success,
|
|
"address": address,
|
|
});
|
|
println!("{}", serde_json::to_string_pretty(&result)?);
|
|
}
|
|
OutputFormat::Text => {
|
|
if success {
|
|
output::print_success(&format!("Added peer: {}", address));
|
|
} else {
|
|
output::print_error(&format!("Failed to add peer: {}", address));
|
|
}
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|
|
|
|
/// Ban a peer.
|
|
pub async fn ban_peer(client: &RpcClient, peer: &str, format: OutputFormat) -> Result<()> {
|
|
let success = client.ban_peer(peer).await?;
|
|
|
|
match format {
|
|
OutputFormat::Json => {
|
|
let result = serde_json::json!({
|
|
"success": success,
|
|
"peer": peer,
|
|
});
|
|
println!("{}", serde_json::to_string_pretty(&result)?);
|
|
}
|
|
OutputFormat::Text => {
|
|
if success {
|
|
output::print_success(&format!("Banned peer: {}", peer));
|
|
} else {
|
|
output::print_error(&format!("Failed to ban peer: {}", peer));
|
|
}
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|
|
|
|
/// Unban a peer.
|
|
pub async fn unban_peer(client: &RpcClient, peer: &str, format: OutputFormat) -> Result<()> {
|
|
let success = client.unban_peer(peer).await?;
|
|
|
|
match format {
|
|
OutputFormat::Json => {
|
|
let result = serde_json::json!({
|
|
"success": success,
|
|
"peer": peer,
|
|
});
|
|
println!("{}", serde_json::to_string_pretty(&result)?);
|
|
}
|
|
OutputFormat::Text => {
|
|
if success {
|
|
output::print_success(&format!("Unbanned peer: {}", peer));
|
|
} else {
|
|
output::print_error(&format!("Failed to unban peer: {}", peer));
|
|
}
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|