mirror of
https://github.com/hinto-janai/cuprate.git
synced 2024-12-22 19:49:33 +00:00
lint/todo fixes
This commit is contained in:
parent
8d5f779ec3
commit
1a079c856e
3 changed files with 32 additions and 25 deletions
|
@ -6,15 +6,13 @@
|
||||||
//! These build on-top of [`crate::rpc::request`] functions.
|
//! These build on-top of [`crate::rpc::request`] functions.
|
||||||
|
|
||||||
use anyhow::{anyhow, Error};
|
use anyhow::{anyhow, Error};
|
||||||
use monero_serai::block::Block;
|
|
||||||
|
|
||||||
use cuprate_consensus::{BlockChainContext, BlockChainContextService};
|
|
||||||
use cuprate_helper::{
|
use cuprate_helper::{
|
||||||
cast::{u64_to_usize, usize_to_u64},
|
cast::{u64_to_usize, usize_to_u64},
|
||||||
map::split_u128_into_low_high_bits,
|
map::split_u128_into_low_high_bits,
|
||||||
};
|
};
|
||||||
use cuprate_rpc_types::misc::{BlockHeader, KeyImageSpentStatus};
|
use cuprate_rpc_types::misc::{BlockHeader, KeyImageSpentStatus};
|
||||||
use cuprate_types::{ExtendedBlockHeader, HardFork};
|
use cuprate_types::HardFork;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
rpc::request::{blockchain, blockchain_context},
|
rpc::request::{blockchain, blockchain_context},
|
||||||
|
@ -150,6 +148,7 @@ pub(super) async fn check_height(
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse a hexadecimal [`String`] as a 32-byte hash.
|
/// Parse a hexadecimal [`String`] as a 32-byte hash.
|
||||||
|
#[expect(clippy::needless_pass_by_value)]
|
||||||
pub(super) fn hex_to_hash(hex: String) -> Result<[u8; 32], Error> {
|
pub(super) fn hex_to_hash(hex: String) -> Result<[u8; 32], Error> {
|
||||||
let error = || anyhow!("Failed to parse hex representation of hash. Hex = {hex}.");
|
let error = || anyhow!("Failed to parse hex representation of hash. Hex = {hex}.");
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
//! <https://github.com/Cuprate/cuprate/pull/308>
|
//! <https://github.com/Cuprate/cuprate/pull/308>
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
|
net::{IpAddr, Ipv4Addr, SocketAddr, SocketAddrV4},
|
||||||
num::NonZero,
|
num::NonZero,
|
||||||
time::{Duration, Instant},
|
time::{Duration, Instant},
|
||||||
};
|
};
|
||||||
|
@ -12,9 +13,7 @@ use std::{
|
||||||
use anyhow::{anyhow, Error};
|
use anyhow::{anyhow, Error};
|
||||||
use monero_serai::block::Block;
|
use monero_serai::block::Block;
|
||||||
use strum::{EnumCount, VariantArray};
|
use strum::{EnumCount, VariantArray};
|
||||||
use tower::{Service, ServiceExt};
|
|
||||||
|
|
||||||
use cuprate_consensus::{BlockchainReadRequest, BlockchainResponse};
|
|
||||||
use cuprate_constants::{
|
use cuprate_constants::{
|
||||||
build::RELEASE,
|
build::RELEASE,
|
||||||
rpc::{RESTRICTED_BLOCK_COUNT, RESTRICTED_BLOCK_HEADER_RANGE},
|
rpc::{RESTRICTED_BLOCK_COUNT, RESTRICTED_BLOCK_HEADER_RANGE},
|
||||||
|
@ -129,7 +128,7 @@ pub(super) async fn map_request(
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L1790-L1804>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L1790-L1804>
|
||||||
async fn get_block_count(
|
async fn get_block_count(
|
||||||
mut state: CupratedRpcHandler,
|
mut state: CupratedRpcHandler,
|
||||||
request: GetBlockCountRequest,
|
_: GetBlockCountRequest,
|
||||||
) -> Result<GetBlockCountResponse, Error> {
|
) -> Result<GetBlockCountResponse, Error> {
|
||||||
Ok(GetBlockCountResponse {
|
Ok(GetBlockCountResponse {
|
||||||
base: ResponseBase::OK,
|
base: ResponseBase::OK,
|
||||||
|
@ -367,7 +366,7 @@ async fn get_block(
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2729-L2738>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2729-L2738>
|
||||||
async fn get_connections(
|
async fn get_connections(
|
||||||
state: CupratedRpcHandler,
|
state: CupratedRpcHandler,
|
||||||
request: GetConnectionsRequest,
|
_: GetConnectionsRequest,
|
||||||
) -> Result<GetConnectionsResponse, Error> {
|
) -> Result<GetConnectionsResponse, Error> {
|
||||||
let connections = address_book::connection_info::<ClearNet>(&mut DummyAddressBook).await?;
|
let connections = address_book::connection_info::<ClearNet>(&mut DummyAddressBook).await?;
|
||||||
|
|
||||||
|
@ -380,7 +379,7 @@ async fn get_connections(
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L501-L582>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L501-L582>
|
||||||
async fn get_info(
|
async fn get_info(
|
||||||
mut state: CupratedRpcHandler,
|
mut state: CupratedRpcHandler,
|
||||||
request: GetInfoRequest,
|
_: GetInfoRequest,
|
||||||
) -> Result<GetInfoResponse, Error> {
|
) -> Result<GetInfoResponse, Error> {
|
||||||
let restricted = state.is_restricted();
|
let restricted = state.is_restricted();
|
||||||
let context = blockchain_context::context(&mut state.blockchain_context).await?;
|
let context = blockchain_context::context(&mut state.blockchain_context).await?;
|
||||||
|
@ -403,7 +402,7 @@ async fn get_info(
|
||||||
let (bootstrap_daemon_address, was_bootstrap_ever_used) = if restricted {
|
let (bootstrap_daemon_address, was_bootstrap_ever_used) = if restricted {
|
||||||
(String::new(), false)
|
(String::new(), false)
|
||||||
} else {
|
} else {
|
||||||
todo!()
|
todo!("support bootstrap daemon")
|
||||||
};
|
};
|
||||||
let busy_syncing = blockchain_manager::syncing(&mut state.blockchain_manager).await?;
|
let busy_syncing = blockchain_manager::syncing(&mut state.blockchain_manager).await?;
|
||||||
let (cumulative_difficulty, cumulative_difficulty_top64) =
|
let (cumulative_difficulty, cumulative_difficulty_top64) =
|
||||||
|
@ -548,7 +547,12 @@ async fn set_bans(
|
||||||
request: SetBansRequest,
|
request: SetBansRequest,
|
||||||
) -> Result<SetBansResponse, Error> {
|
) -> Result<SetBansResponse, Error> {
|
||||||
for peer in request.bans {
|
for peer in request.bans {
|
||||||
let address = todo!();
|
// TODO: support non-clearnet addresses.
|
||||||
|
|
||||||
|
// <https://architecture.cuprate.org/oddities/le-ipv4.html>
|
||||||
|
let [a, b, c, d] = peer.ip.to_le_bytes();
|
||||||
|
let ip = Ipv4Addr::new(a, b, c, d);
|
||||||
|
let address = SocketAddr::V4(SocketAddrV4::new(ip, todo!("p2p port?")));
|
||||||
|
|
||||||
let ban = if peer.ban {
|
let ban = if peer.ban {
|
||||||
Some(Duration::from_secs(peer.seconds.into()))
|
Some(Duration::from_secs(peer.seconds.into()))
|
||||||
|
@ -567,12 +571,11 @@ async fn set_bans(
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2768-L2801>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2768-L2801>
|
||||||
async fn get_bans(
|
async fn get_bans(state: CupratedRpcHandler, _: GetBansRequest) -> Result<GetBansResponse, Error> {
|
||||||
state: CupratedRpcHandler,
|
|
||||||
request: GetBansRequest,
|
|
||||||
) -> Result<GetBansResponse, Error> {
|
|
||||||
let now = Instant::now();
|
let now = Instant::now();
|
||||||
|
|
||||||
|
// TODO: support non-clearnet addresses.
|
||||||
|
|
||||||
let bans = address_book::get_bans::<ClearNet>(&mut DummyAddressBook)
|
let bans = address_book::get_bans::<ClearNet>(&mut DummyAddressBook)
|
||||||
.await?
|
.await?
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
@ -588,9 +591,15 @@ async fn get_bans(
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// <https://architecture.cuprate.org/oddities/le-ipv4.html>
|
||||||
|
let ip = match ban.address.ip() {
|
||||||
|
IpAddr::V4(v4) => u32::from_le_bytes(v4.octets()),
|
||||||
|
IpAddr::V6(v6) => todo!(),
|
||||||
|
};
|
||||||
|
|
||||||
GetBan {
|
GetBan {
|
||||||
host: ban.address.to_string(),
|
host: ban.address.to_string(),
|
||||||
ip: todo!(),
|
ip,
|
||||||
seconds,
|
seconds,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -607,7 +616,7 @@ async fn banned(
|
||||||
state: CupratedRpcHandler,
|
state: CupratedRpcHandler,
|
||||||
request: BannedRequest,
|
request: BannedRequest,
|
||||||
) -> Result<BannedResponse, Error> {
|
) -> Result<BannedResponse, Error> {
|
||||||
let peer = match request.address.parse::<std::net::SocketAddr>() {
|
let peer = match request.address.parse::<SocketAddr>() {
|
||||||
Ok(p) => p,
|
Ok(p) => p,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
return Err(anyhow!(
|
return Err(anyhow!(
|
||||||
|
@ -716,7 +725,7 @@ async fn get_coinbase_tx_sum(
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2981-L2996>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2981-L2996>
|
||||||
async fn get_version(
|
async fn get_version(
|
||||||
mut state: CupratedRpcHandler,
|
mut state: CupratedRpcHandler,
|
||||||
request: GetVersionRequest,
|
_: GetVersionRequest,
|
||||||
) -> Result<GetVersionResponse, Error> {
|
) -> Result<GetVersionResponse, Error> {
|
||||||
let current_height = helper::top_height(&mut state).await?.0;
|
let current_height = helper::top_height(&mut state).await?.0;
|
||||||
let target_height = blockchain_manager::target_height(&mut state.blockchain_manager).await?;
|
let target_height = blockchain_manager::target_height(&mut state.blockchain_manager).await?;
|
||||||
|
@ -766,7 +775,7 @@ async fn get_fee_estimate(
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L3033-L3064>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L3033-L3064>
|
||||||
async fn get_alternate_chains(
|
async fn get_alternate_chains(
|
||||||
mut state: CupratedRpcHandler,
|
mut state: CupratedRpcHandler,
|
||||||
request: GetAlternateChainsRequest,
|
_: GetAlternateChainsRequest,
|
||||||
) -> Result<GetAlternateChainsResponse, Error> {
|
) -> Result<GetAlternateChainsResponse, Error> {
|
||||||
let chains = blockchain::alt_chains(&mut state.blockchain_read)
|
let chains = blockchain::alt_chains(&mut state.blockchain_read)
|
||||||
.await?
|
.await?
|
||||||
|
@ -813,7 +822,7 @@ async fn relay_tx(
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L3306-L3330>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L3306-L3330>
|
||||||
async fn sync_info(
|
async fn sync_info(
|
||||||
mut state: CupratedRpcHandler,
|
mut state: CupratedRpcHandler,
|
||||||
request: SyncInfoRequest,
|
_: SyncInfoRequest,
|
||||||
) -> Result<SyncInfoResponse, Error> {
|
) -> Result<SyncInfoResponse, Error> {
|
||||||
let height = usize_to_u64(
|
let height = usize_to_u64(
|
||||||
blockchain_context::context(&mut state.blockchain_context)
|
blockchain_context::context(&mut state.blockchain_context)
|
||||||
|
@ -854,7 +863,7 @@ async fn sync_info(
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L3332-L3350>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L3332-L3350>
|
||||||
async fn get_transaction_pool_backlog(
|
async fn get_transaction_pool_backlog(
|
||||||
mut state: CupratedRpcHandler,
|
mut state: CupratedRpcHandler,
|
||||||
request: GetTransactionPoolBacklogRequest,
|
_: GetTransactionPoolBacklogRequest,
|
||||||
) -> Result<GetTransactionPoolBacklogResponse, Error> {
|
) -> Result<GetTransactionPoolBacklogResponse, Error> {
|
||||||
let backlog = txpool::backlog(&mut state.txpool_read)
|
let backlog = txpool::backlog(&mut state.txpool_read)
|
||||||
.await?
|
.await?
|
||||||
|
@ -908,7 +917,7 @@ async fn get_output_distribution(
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L1998-L2033>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L1998-L2033>
|
||||||
async fn get_miner_data(
|
async fn get_miner_data(
|
||||||
mut state: CupratedRpcHandler,
|
mut state: CupratedRpcHandler,
|
||||||
request: GetMinerDataRequest,
|
_: GetMinerDataRequest,
|
||||||
) -> Result<GetMinerDataResponse, Error> {
|
) -> Result<GetMinerDataResponse, Error> {
|
||||||
let context = blockchain_context::context(&mut state.blockchain_context).await?;
|
let context = blockchain_context::context(&mut state.blockchain_context).await?;
|
||||||
let c = context.unchecked_blockchain_context();
|
let c = context.unchecked_blockchain_context();
|
||||||
|
@ -963,10 +972,10 @@ async fn prune_blockchain(
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2035-L2070>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2035-L2070>
|
||||||
async fn calc_pow(
|
async fn calc_pow(
|
||||||
mut state: CupratedRpcHandler,
|
mut state: CupratedRpcHandler,
|
||||||
mut request: CalcPowRequest,
|
request: CalcPowRequest,
|
||||||
) -> Result<CalcPowResponse, Error> {
|
) -> Result<CalcPowResponse, Error> {
|
||||||
let hardfork = HardFork::from_version(request.major_version)?;
|
let hardfork = HardFork::from_version(request.major_version)?;
|
||||||
let mut block_blob: Vec<u8> = hex::decode(request.block_blob)?;
|
let block_blob: Vec<u8> = hex::decode(request.block_blob)?;
|
||||||
let block = Block::read(&mut block_blob.as_slice())?;
|
let block = Block::read(&mut block_blob.as_slice())?;
|
||||||
let seed_hash = helper::hex_to_hash(request.seed_hash)?;
|
let seed_hash = helper::hex_to_hash(request.seed_hash)?;
|
||||||
|
|
||||||
|
@ -1020,7 +1029,7 @@ async fn add_aux_pow(
|
||||||
|
|
||||||
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2072-L2207>
|
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server.cpp#L2072-L2207>
|
||||||
fn add_aux_pow_inner(
|
fn add_aux_pow_inner(
|
||||||
mut state: CupratedRpcHandler,
|
state: CupratedRpcHandler,
|
||||||
request: AddAuxPowRequest,
|
request: AddAuxPowRequest,
|
||||||
) -> Result<AddAuxPowResponse, Error> {
|
) -> Result<AddAuxPowResponse, Error> {
|
||||||
let Some(non_zero_len) = NonZero::<usize>::new(request.aux_pow.len()) else {
|
let Some(non_zero_len) = NonZero::<usize>::new(request.aux_pow.len()) else {
|
||||||
|
|
|
@ -8,7 +8,6 @@ use cuprate_consensus_context::{
|
||||||
BlockChainContext, BlockChainContextRequest, BlockChainContextResponse,
|
BlockChainContext, BlockChainContextRequest, BlockChainContextResponse,
|
||||||
BlockChainContextService,
|
BlockChainContextService,
|
||||||
};
|
};
|
||||||
use cuprate_helper::cast::u64_to_usize;
|
|
||||||
use cuprate_types::{FeeEstimate, HardFork, HardForkInfo};
|
use cuprate_types::{FeeEstimate, HardFork, HardForkInfo};
|
||||||
|
|
||||||
// FIXME: use `anyhow::Error` over `tower::BoxError` in blockchain context.
|
// FIXME: use `anyhow::Error` over `tower::BoxError` in blockchain context.
|
||||||
|
|
Loading…
Reference in a new issue