mirror of
https://github.com/Cuprate/cuprate.git
synced 2024-12-22 03:29:25 +00:00
rpc: add JSON doc-tests (#232)
Some checks are pending
Audit / audit (push) Waiting to run
CI / fmt (push) Waiting to run
CI / typo (push) Waiting to run
CI / ci (macos-latest, stable, bash) (push) Waiting to run
CI / ci (ubuntu-latest, stable, bash) (push) Waiting to run
CI / ci (windows-latest, stable-x86_64-pc-windows-gnu, msys2 {0}) (push) Waiting to run
Deny / audit (push) Waiting to run
Doc / build (push) Waiting to run
Doc / deploy (push) Blocked by required conditions
Some checks are pending
Audit / audit (push) Waiting to run
CI / fmt (push) Waiting to run
CI / typo (push) Waiting to run
CI / ci (macos-latest, stable, bash) (push) Waiting to run
CI / ci (ubuntu-latest, stable, bash) (push) Waiting to run
CI / ci (windows-latest, stable-x86_64-pc-windows-gnu, msys2 {0}) (push) Waiting to run
Deny / audit (push) Waiting to run
Doc / build (push) Waiting to run
Doc / deploy (push) Blocked by required conditions
* fixed-bytes: add `serde`, document feature flags * fixed-bytes: add derives * rpc: add `as _` syntax to macro * rpc: use `ByteArrayVec` and `ContainerAsBlob` for binary types * fixed-bytes: re-add derives * rpc-types: dedup default value within macro * readme: fixed bytes section * types: custom epee - `BlockCompleteEntry` * types: custom epee - `KeyImageSpentStatus` * types: custom epee - `PoolInfoExtent` * types: add `Status::Other(String)` variant * types: custom epee - `TxEntry`, add `read_epee_field` macro * bin: custom epee - `GetBlocks` * types: add `serde.rs` * misc: make `TxEntry` an `enum`, impl serde * misc: `unimplemented!()` for `TxEntry`'s epee * types: add `BlockCompleteEntry` * rpc: replace `BlockCompleteEntry` with `cuprate-types` * types: document `BlockCompleteEntry` * bin: fix `number_of_fields` for `GetBlocksResponse` * misc: add `Distribution` * distribution: add todo * misc fixes * readme: add `(De)serialization invariants` * distribution: compress variants * types: add `block_complete_entry.rs` * net: fix imports * p2p: fix imports * turn off default-features * p2p: fix imports * misc fixes * Update net/wire/Cargo.toml Co-authored-by: Boog900 <boog900@tutanota.com> * distribution: module doc * wire: re-export types * test-utils: add `crate::rpc::types` module * test-utils: conditional json doc-tests * bin: use enum for `GetBlocksResponse` * misc: use lowercase for stringify * json: add test data, fix macro doc tests * json: add all data * other: add all data * bin: add skeleton * docs * move type to correct file * remove duplicated fields for custom epee * rpc: `client/{client,constants}.rs` -> `client.rs` * lib.rs: remove `clippy::module_inception` * macros: add json doc test macro * json: add some tests * json: add doc-test for all types * add all other JSON doc-tests * move doc-test macros to files * base: add doc-tests * json: TODO distribution test --------- Co-authored-by: Boog900 <boog900@tutanota.com>
This commit is contained in:
parent
7416164b19
commit
a2bca1b889
10 changed files with 1677 additions and 102 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -764,6 +764,8 @@ version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cuprate-epee-encoding",
|
"cuprate-epee-encoding",
|
||||||
"cuprate-fixed-bytes",
|
"cuprate-fixed-bytes",
|
||||||
|
"cuprate-json-rpc",
|
||||||
|
"cuprate-test-utils",
|
||||||
"cuprate-types",
|
"cuprate-types",
|
||||||
"monero-serai",
|
"monero-serai",
|
||||||
"paste",
|
"paste",
|
||||||
|
|
|
@ -23,5 +23,8 @@ paste = { workspace = true }
|
||||||
serde = { workspace = true, optional = true }
|
serde = { workspace = true, optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
cuprate-test-utils = { path = "../../test-utils" }
|
||||||
|
cuprate-json-rpc = { path = "../json-rpc" }
|
||||||
|
|
||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
pretty_assertions = { workspace = true }
|
pretty_assertions = { workspace = true }
|
|
@ -57,6 +57,64 @@ pub struct ResponseBase {
|
||||||
pub untrusted: bool,
|
pub untrusted: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ResponseBase {
|
||||||
|
/// `const` version of [`Default::default`].
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use cuprate_rpc_types::{misc::*, base::*};
|
||||||
|
///
|
||||||
|
/// let new = ResponseBase::new();
|
||||||
|
/// assert_eq!(new, ResponseBase {
|
||||||
|
/// status: Status::Ok,
|
||||||
|
/// untrusted: false,
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
pub const fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
status: Status::Ok,
|
||||||
|
untrusted: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns OK and trusted [`Self`].
|
||||||
|
///
|
||||||
|
/// This is the most common version of [`Self`].
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use cuprate_rpc_types::{misc::*, base::*};
|
||||||
|
///
|
||||||
|
/// let ok = ResponseBase::ok();
|
||||||
|
/// assert_eq!(ok, ResponseBase {
|
||||||
|
/// status: Status::Ok,
|
||||||
|
/// untrusted: false,
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
pub const fn ok() -> Self {
|
||||||
|
Self {
|
||||||
|
status: Status::Ok,
|
||||||
|
untrusted: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Same as [`Self::ok`] but with [`Self::untrusted`] set to `true`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use cuprate_rpc_types::{misc::*, base::*};
|
||||||
|
///
|
||||||
|
/// let ok_untrusted = ResponseBase::ok_untrusted();
|
||||||
|
/// assert_eq!(ok_untrusted, ResponseBase {
|
||||||
|
/// status: Status::Ok,
|
||||||
|
/// untrusted: true,
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
pub const fn ok_untrusted() -> Self {
|
||||||
|
Self {
|
||||||
|
status: Status::Ok,
|
||||||
|
untrusted: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "epee")]
|
#[cfg(feature = "epee")]
|
||||||
epee_object! {
|
epee_object! {
|
||||||
ResponseBase,
|
ResponseBase,
|
||||||
|
@ -80,6 +138,74 @@ pub struct AccessResponseBase {
|
||||||
pub top_hash: String,
|
pub top_hash: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl AccessResponseBase {
|
||||||
|
/// Creates a new [`Self`] with default values.
|
||||||
|
///
|
||||||
|
/// Since RPC payment is semi-deprecated, [`Self::credits`]
|
||||||
|
/// and [`Self::top_hash`] will always be set to the default
|
||||||
|
/// values.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use cuprate_rpc_types::{misc::*, base::*};
|
||||||
|
///
|
||||||
|
/// let new = AccessResponseBase::new(ResponseBase::ok());
|
||||||
|
/// assert_eq!(new, AccessResponseBase {
|
||||||
|
/// response_base: ResponseBase::ok(),
|
||||||
|
/// credits: 0,
|
||||||
|
/// top_hash: "".into(),
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
pub const fn new(response_base: ResponseBase) -> Self {
|
||||||
|
Self {
|
||||||
|
response_base,
|
||||||
|
credits: 0,
|
||||||
|
top_hash: String::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns OK and trusted [`Self`].
|
||||||
|
///
|
||||||
|
/// This is the most common version of [`Self`].
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use cuprate_rpc_types::{misc::*, base::*};
|
||||||
|
///
|
||||||
|
/// let ok = AccessResponseBase::ok();
|
||||||
|
/// assert_eq!(ok, AccessResponseBase {
|
||||||
|
/// response_base: ResponseBase::ok(),
|
||||||
|
/// credits: 0,
|
||||||
|
/// top_hash: "".into(),
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
pub const fn ok() -> Self {
|
||||||
|
Self {
|
||||||
|
response_base: ResponseBase::ok(),
|
||||||
|
credits: 0,
|
||||||
|
top_hash: String::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Same as [`Self::ok`] but with `untrusted` set to `true`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use cuprate_rpc_types::{misc::*, base::*};
|
||||||
|
///
|
||||||
|
/// let ok_untrusted = AccessResponseBase::ok_untrusted();
|
||||||
|
/// assert_eq!(ok_untrusted, AccessResponseBase {
|
||||||
|
/// response_base: ResponseBase::ok_untrusted(),
|
||||||
|
/// credits: 0,
|
||||||
|
/// top_hash: "".into(),
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
pub const fn ok_untrusted() -> Self {
|
||||||
|
Self {
|
||||||
|
response_base: ResponseBase::ok_untrusted(),
|
||||||
|
credits: 0,
|
||||||
|
top_hash: String::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "epee")]
|
#[cfg(feature = "epee")]
|
||||||
epee_object! {
|
epee_object! {
|
||||||
AccessResponseBase,
|
AccessResponseBase,
|
||||||
|
|
|
@ -53,6 +53,12 @@ pub(crate) fn default_zero<T: From<u8>>() -> T {
|
||||||
T::from(0)
|
T::from(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Default `1` value used in request/response types.
|
||||||
|
#[inline]
|
||||||
|
pub(crate) fn default_one<T: From<u8>>() -> T {
|
||||||
|
T::from(1)
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------- Tests
|
//---------------------------------------------------------------------------------------------------- Tests
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -22,7 +22,7 @@ use crate::{
|
||||||
CORE_RPC_STATUS_BUSY, CORE_RPC_STATUS_NOT_MINING, CORE_RPC_STATUS_OK,
|
CORE_RPC_STATUS_BUSY, CORE_RPC_STATUS_NOT_MINING, CORE_RPC_STATUS_OK,
|
||||||
CORE_RPC_STATUS_PAYMENT_REQUIRED,
|
CORE_RPC_STATUS_PAYMENT_REQUIRED,
|
||||||
},
|
},
|
||||||
defaults::default_zero,
|
defaults::{default_string, default_zero},
|
||||||
macros::monero_definition_link,
|
macros::monero_definition_link,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -51,9 +51,9 @@ macro_rules! define_struct_and_impl_epee {
|
||||||
)*
|
)*
|
||||||
}
|
}
|
||||||
) => {
|
) => {
|
||||||
$( #[$struct_attr] )*
|
|
||||||
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||||
|
$( #[$struct_attr] )*
|
||||||
pub struct $struct_name {
|
pub struct $struct_name {
|
||||||
$(
|
$(
|
||||||
$( #[$field_attr] )*
|
$( #[$field_attr] )*
|
||||||
|
@ -142,7 +142,9 @@ define_struct_and_impl_epee! {
|
||||||
rpc_port: u16,
|
rpc_port: u16,
|
||||||
send_count: u64,
|
send_count: u64,
|
||||||
send_idle_time: u64,
|
send_idle_time: u64,
|
||||||
ssl: bool,
|
// Exists in the original definition, but isn't
|
||||||
|
// used or (de)serialized for RPC purposes.
|
||||||
|
// ssl: bool,
|
||||||
state: String,
|
state: String,
|
||||||
support_flags: u32,
|
support_flags: u32,
|
||||||
}
|
}
|
||||||
|
@ -156,7 +158,9 @@ define_struct_and_impl_epee! {
|
||||||
)]
|
)]
|
||||||
/// Used in [`crate::json::SetBansRequest`].
|
/// Used in [`crate::json::SetBansRequest`].
|
||||||
SetBan {
|
SetBan {
|
||||||
|
#[cfg_attr(feature = "serde", serde(default = "default_string"))]
|
||||||
host: String,
|
host: String,
|
||||||
|
#[cfg_attr(feature = "serde", serde(default = "default_zero"))]
|
||||||
ip: u32,
|
ip: u32,
|
||||||
ban: bool,
|
ban: bool,
|
||||||
seconds: u32,
|
seconds: u32,
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
//---------------------------------------------------------------------------------------------------- Import
|
//---------------------------------------------------------------------------------------------------- Import
|
||||||
use crate::{
|
use crate::{
|
||||||
base::{AccessResponseBase, ResponseBase},
|
base::{AccessResponseBase, ResponseBase},
|
||||||
defaults::{default_false, default_string, default_true},
|
defaults::{default_false, default_string, default_true, default_vec, default_zero},
|
||||||
macros::define_request_and_response,
|
macros::define_request_and_response,
|
||||||
misc::{
|
misc::{
|
||||||
GetOutputsOut, KeyImageSpentStatus, OutKey, Peer, PublicNode, SpentKeyImageInfo, Status,
|
GetOutputsOut, KeyImageSpentStatus, OutKey, Peer, PublicNode, SpentKeyImageInfo, Status,
|
||||||
|
@ -13,6 +13,81 @@ use crate::{
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------- Macro
|
||||||
|
/// Adds a (de)serialization doc-test to a type in `other.rs`.
|
||||||
|
///
|
||||||
|
/// It expects a const string from `cuprate_test_utils::rpc::data`
|
||||||
|
/// and the expected value it should (de)serialize into/from.
|
||||||
|
///
|
||||||
|
/// It tests that the provided const JSON string can properly
|
||||||
|
/// (de)serialize into the expected value.
|
||||||
|
///
|
||||||
|
/// See below for example usage. This macro is only used in this file.
|
||||||
|
macro_rules! serde_doc_test {
|
||||||
|
// This branch _only_ tests that the type can be deserialize
|
||||||
|
// from the string, not that any value is correct.
|
||||||
|
//
|
||||||
|
// Practically, this is used for structs that have
|
||||||
|
// many values that are complicated to test, e.g. `GET_TRANSACTIONS_RESPONSE`.
|
||||||
|
//
|
||||||
|
// HACK:
|
||||||
|
// The type itself doesn't need to be specified because it happens
|
||||||
|
// to just be the `CamelCase` version of the provided const.
|
||||||
|
(
|
||||||
|
// `const` string from `cuprate_test_utils::rpc::data`.
|
||||||
|
$cuprate_test_utils_rpc_const:ident
|
||||||
|
) => {
|
||||||
|
paste::paste! {
|
||||||
|
concat!(
|
||||||
|
"```rust\n",
|
||||||
|
"use cuprate_test_utils::rpc::data::other::*;\n",
|
||||||
|
"use cuprate_rpc_types::{misc::*, base::*, other::*};\n",
|
||||||
|
"use serde_json::{Value, from_str, from_value};\n",
|
||||||
|
"\n",
|
||||||
|
"let string = from_str::<",
|
||||||
|
stringify!([<$cuprate_test_utils_rpc_const:camel>]),
|
||||||
|
">(",
|
||||||
|
stringify!($cuprate_test_utils_rpc_const),
|
||||||
|
").unwrap();\n",
|
||||||
|
"```\n",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// This branch tests that the type can be deserialize
|
||||||
|
// from the string AND that values are correct.
|
||||||
|
(
|
||||||
|
// `const` string from `cuprate_test_utils::rpc::data`
|
||||||
|
// v
|
||||||
|
$cuprate_test_utils_rpc_const:ident => $expected:expr
|
||||||
|
// ^
|
||||||
|
// Expected value as an expression
|
||||||
|
) => {
|
||||||
|
paste::paste! {
|
||||||
|
concat!(
|
||||||
|
"```rust\n",
|
||||||
|
"use cuprate_test_utils::rpc::data::other::*;\n",
|
||||||
|
"use cuprate_rpc_types::{misc::*, base::*, other::*};\n",
|
||||||
|
"use serde_json::{Value, from_str, from_value};\n",
|
||||||
|
"\n",
|
||||||
|
"// The expected data.\n",
|
||||||
|
"let expected = ",
|
||||||
|
stringify!($expected),
|
||||||
|
";\n",
|
||||||
|
"\n",
|
||||||
|
"let string = from_str::<",
|
||||||
|
stringify!([<$cuprate_test_utils_rpc_const:camel>]),
|
||||||
|
">(",
|
||||||
|
stringify!($cuprate_test_utils_rpc_const),
|
||||||
|
").unwrap();\n",
|
||||||
|
"\n",
|
||||||
|
"assert_eq!(string, expected);\n",
|
||||||
|
"```\n",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------- Definitions
|
//---------------------------------------------------------------------------------------------------- Definitions
|
||||||
define_request_and_response! {
|
define_request_and_response! {
|
||||||
get_height,
|
get_height,
|
||||||
|
@ -20,6 +95,14 @@ define_request_and_response! {
|
||||||
core_rpc_server_commands_defs.h => 138..=160,
|
core_rpc_server_commands_defs.h => 138..=160,
|
||||||
GetHeight,
|
GetHeight,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_HEIGHT_RESPONSE => GetHeightResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
hash: "68bb1a1cff8e2a44c3221e8e1aff80bc6ca45d06fa8eff4d2a3a7ac31d4efe3f".into(),
|
||||||
|
height: 3195160,
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
hash: String,
|
hash: String,
|
||||||
height: u64,
|
height: u64,
|
||||||
|
@ -31,6 +114,15 @@ define_request_and_response! {
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 370..=451,
|
core_rpc_server_commands_defs.h => 370..=451,
|
||||||
GetTransactions,
|
GetTransactions,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_TRANSACTIONS_REQUEST => GetTransactionsRequest {
|
||||||
|
txs_hashes: vec!["d6e48158472848e6687173a91ae6eebfa3e1d778e65252ee99d7515d63090408".into()],
|
||||||
|
decode_as_json: false,
|
||||||
|
prune: false,
|
||||||
|
split: false,
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
txs_hashes: Vec<String>,
|
txs_hashes: Vec<String>,
|
||||||
// FIXME: this is documented as optional but it isn't serialized as an optional
|
// FIXME: this is documented as optional but it isn't serialized as an optional
|
||||||
|
@ -40,11 +132,13 @@ define_request_and_response! {
|
||||||
prune: bool = default_false(), "default_false",
|
prune: bool = default_false(), "default_false",
|
||||||
split: bool = default_false(), "default_false",
|
split: bool = default_false(), "default_false",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(GET_TRANSACTIONS_RESPONSE)]
|
||||||
AccessResponseBase {
|
AccessResponseBase {
|
||||||
txs_as_hex: Vec<String>,
|
txs_as_hex: Vec<String> = default_vec::<String>(), "default_vec",
|
||||||
txs_as_json: Vec<String>,
|
txs_as_json: Vec<String> = default_vec::<String>(), "default_vec",
|
||||||
missed_tx: Vec<String>,
|
missed_tx: Vec<String> = default_vec::<String>(), "default_vec",
|
||||||
txs: Vec<TxEntry>,
|
txs: Vec<TxEntry> = default_vec::<TxEntry>(), "default_vec",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,6 +148,13 @@ define_request_and_response! {
|
||||||
core_rpc_server_commands_defs.h => 288..=308,
|
core_rpc_server_commands_defs.h => 288..=308,
|
||||||
GetAltBlocksHashes,
|
GetAltBlocksHashes,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_ALT_BLOCKS_HASHES_RESPONSE => GetAltBlocksHashesResponse {
|
||||||
|
base: AccessResponseBase::ok(),
|
||||||
|
blks_hashes: vec!["8ee10db35b1baf943f201b303890a29e7d45437bd76c2bd4df0d2f2ee34be109".into()],
|
||||||
|
}
|
||||||
|
)]
|
||||||
AccessResponseBase {
|
AccessResponseBase {
|
||||||
blks_hashes: Vec<String>,
|
blks_hashes: Vec<String>,
|
||||||
}
|
}
|
||||||
|
@ -63,10 +164,27 @@ define_request_and_response! {
|
||||||
is_key_image_spent,
|
is_key_image_spent,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 454..=484,
|
core_rpc_server_commands_defs.h => 454..=484,
|
||||||
|
|
||||||
IsKeyImageSpent,
|
IsKeyImageSpent,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
IS_KEY_IMAGE_SPENT_REQUEST => IsKeyImageSpentRequest {
|
||||||
|
key_images: vec![
|
||||||
|
"8d1bd8181bf7d857bdb281e0153d84cd55a3fcaa57c3e570f4a49f935850b5e3".into(),
|
||||||
|
"7319134bfc50668251f5b899c66b005805ee255c136f0e1cecbb0f3a912e09d4".into()
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
key_images: Vec<String>,
|
key_images: Vec<String>,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
IS_KEY_IMAGE_SPENT_RESPONSE => IsKeyImageSpentResponse {
|
||||||
|
base: AccessResponseBase::ok(),
|
||||||
|
spent_status: vec![1, 1],
|
||||||
|
}
|
||||||
|
)]
|
||||||
AccessResponseBase {
|
AccessResponseBase {
|
||||||
/// FIXME: These are [`KeyImageSpentStatus`] in [`u8`] form.
|
/// FIXME: These are [`KeyImageSpentStatus`] in [`u8`] form.
|
||||||
spent_status: Vec<u8>,
|
spent_status: Vec<u8>,
|
||||||
|
@ -77,19 +195,54 @@ define_request_and_response! {
|
||||||
send_raw_transaction,
|
send_raw_transaction,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 370..=451,
|
core_rpc_server_commands_defs.h => 370..=451,
|
||||||
|
|
||||||
SendRawTransaction,
|
SendRawTransaction,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SEND_RAW_TRANSACTION_REQUEST => SendRawTransactionRequest {
|
||||||
|
tx_as_hex: "dc16fa8eaffe1484ca9014ea050e13131d3acf23b419f33bb4cc0b32b6c49308".into(),
|
||||||
|
do_not_relay: false,
|
||||||
|
do_sanity_checks: true,
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
tx_as_hex: String,
|
tx_as_hex: String,
|
||||||
do_not_relay: bool = default_false(), "default_false",
|
do_not_relay: bool = default_false(), "default_false",
|
||||||
do_sanity_checks: bool = default_true(), "default_true",
|
do_sanity_checks: bool = default_true(), "default_true",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SEND_RAW_TRANSACTION_RESPONSE => SendRawTransactionResponse {
|
||||||
|
base: AccessResponseBase {
|
||||||
|
response_base: ResponseBase {
|
||||||
|
status: Status::Other("Failed".into()),
|
||||||
|
untrusted: false,
|
||||||
|
},
|
||||||
|
credits: 0,
|
||||||
|
top_hash: "".into(),
|
||||||
|
},
|
||||||
|
double_spend: false,
|
||||||
|
fee_too_low: false,
|
||||||
|
invalid_input: false,
|
||||||
|
invalid_output: false,
|
||||||
|
low_mixin: false,
|
||||||
|
not_relayed: false,
|
||||||
|
overspend: false,
|
||||||
|
reason: "".into(),
|
||||||
|
sanity_check_failed: false,
|
||||||
|
too_big: false,
|
||||||
|
too_few_outputs: false,
|
||||||
|
tx_extra_too_big: false,
|
||||||
|
nonzero_unlock_time: false,
|
||||||
|
}
|
||||||
|
)]
|
||||||
AccessResponseBase {
|
AccessResponseBase {
|
||||||
double_spend: bool,
|
double_spend: bool,
|
||||||
fee_too_low: bool,
|
fee_too_low: bool,
|
||||||
invalid_input: bool,
|
invalid_input: bool,
|
||||||
invalid_output: bool,
|
invalid_output: bool,
|
||||||
low_mixin: bool,
|
low_mixin: bool,
|
||||||
nonzero_unlock_time: bool,
|
nonzero_unlock_time: bool = default_false(), "default_false",
|
||||||
not_relayed: bool,
|
not_relayed: bool,
|
||||||
overspend: bool,
|
overspend: bool,
|
||||||
reason: String,
|
reason: String,
|
||||||
|
@ -104,13 +257,29 @@ define_request_and_response! {
|
||||||
start_mining,
|
start_mining,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 665..=691,
|
core_rpc_server_commands_defs.h => 665..=691,
|
||||||
|
|
||||||
StartMining,
|
StartMining,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
START_MINING_REQUEST => StartMiningRequest {
|
||||||
|
do_background_mining: false,
|
||||||
|
ignore_battery: true,
|
||||||
|
miner_address: "47xu3gQpF569au9C2ajo5SSMrWji6xnoE5vhr94EzFRaKAGw6hEGFXYAwVADKuRpzsjiU1PtmaVgcjUJF89ghGPhUXkndHc".into(),
|
||||||
|
threads_count: 1
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
miner_address: String,
|
miner_address: String,
|
||||||
threads_count: u64,
|
threads_count: u64,
|
||||||
do_background_mining: bool,
|
do_background_mining: bool,
|
||||||
ignore_battery: bool,
|
ignore_battery: bool,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
START_MINING_RESPONSE => StartMiningResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {}
|
ResponseBase {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,6 +289,12 @@ define_request_and_response! {
|
||||||
core_rpc_server_commands_defs.h => 825..=843,
|
core_rpc_server_commands_defs.h => 825..=843,
|
||||||
StopMining,
|
StopMining,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
STOP_MINING_RESPONSE => StopMiningResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {}
|
ResponseBase {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,6 +304,27 @@ define_request_and_response! {
|
||||||
core_rpc_server_commands_defs.h => 846..=895,
|
core_rpc_server_commands_defs.h => 846..=895,
|
||||||
MiningStatus,
|
MiningStatus,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
MINING_STATUS_RESPONSE => MiningStatusResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
active: false,
|
||||||
|
address: "".into(),
|
||||||
|
bg_idle_threshold: 0,
|
||||||
|
bg_ignore_battery: false,
|
||||||
|
bg_min_idle_seconds: 0,
|
||||||
|
bg_target: 0,
|
||||||
|
block_reward: 0,
|
||||||
|
block_target: 120,
|
||||||
|
difficulty: 292022797663,
|
||||||
|
difficulty_top64: 0,
|
||||||
|
is_background_mining_enabled: false,
|
||||||
|
pow_algorithm: "RandomX".into(),
|
||||||
|
speed: 0,
|
||||||
|
threads_count: 0,
|
||||||
|
wide_difficulty: "0x43fdea455f".into(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
active: bool,
|
active: bool,
|
||||||
address: String,
|
address: String,
|
||||||
|
@ -154,6 +350,12 @@ define_request_and_response! {
|
||||||
core_rpc_server_commands_defs.h => 898..=916,
|
core_rpc_server_commands_defs.h => 898..=916,
|
||||||
SaveBc,
|
SaveBc,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SAVE_BC_RESPONSE => SaveBcResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {}
|
ResponseBase {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,11 +363,79 @@ define_request_and_response! {
|
||||||
get_peer_list,
|
get_peer_list,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1369..=1417,
|
core_rpc_server_commands_defs.h => 1369..=1417,
|
||||||
|
|
||||||
GetPeerList,
|
GetPeerList,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_PEER_LIST_REQUEST => GetPeerListRequest {
|
||||||
|
public_only: true,
|
||||||
|
include_blocked: false,
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
public_only: bool = default_true(), "default_true",
|
public_only: bool = default_true(), "default_true",
|
||||||
include_blocked: bool = default_false(), "default_false",
|
include_blocked: bool = default_false(), "default_false",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_PEER_LIST_RESPONSE => GetPeerListResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
gray_list: vec![
|
||||||
|
Peer {
|
||||||
|
host: "161.97.193.0".into(),
|
||||||
|
id: 18269586253849566614,
|
||||||
|
ip: 12673441,
|
||||||
|
last_seen: 0,
|
||||||
|
port: 18080,
|
||||||
|
rpc_port: 0,
|
||||||
|
rpc_credits_per_hash: 0,
|
||||||
|
pruning_seed: 0,
|
||||||
|
},
|
||||||
|
Peer {
|
||||||
|
host: "193.142.4.2".into(),
|
||||||
|
id: 10865563782170056467,
|
||||||
|
ip: 33853121,
|
||||||
|
last_seen: 0,
|
||||||
|
port: 18085,
|
||||||
|
pruning_seed: 387,
|
||||||
|
rpc_port: 19085,
|
||||||
|
rpc_credits_per_hash: 0,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
white_list: vec![
|
||||||
|
Peer {
|
||||||
|
host: "78.27.98.0".into(),
|
||||||
|
id: 11368279936682035606,
|
||||||
|
ip: 6429518,
|
||||||
|
last_seen: 1721246387,
|
||||||
|
port: 18080,
|
||||||
|
pruning_seed: 384,
|
||||||
|
rpc_port: 0,
|
||||||
|
rpc_credits_per_hash: 0,
|
||||||
|
},
|
||||||
|
Peer {
|
||||||
|
host: "67.4.163.2".into(),
|
||||||
|
id: 16545113262826842499,
|
||||||
|
ip: 44237891,
|
||||||
|
last_seen: 1721246387,
|
||||||
|
port: 18080,
|
||||||
|
rpc_port: 0,
|
||||||
|
rpc_credits_per_hash: 0,
|
||||||
|
pruning_seed: 0,
|
||||||
|
},
|
||||||
|
Peer {
|
||||||
|
host: "70.52.75.3".into(),
|
||||||
|
id: 3863337548778177169,
|
||||||
|
ip: 55260230,
|
||||||
|
last_seen: 1721246387,
|
||||||
|
port: 18080,
|
||||||
|
rpc_port: 18081,
|
||||||
|
rpc_credits_per_hash: 0,
|
||||||
|
pruning_seed: 0,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
white_list: Vec<Peer>,
|
white_list: Vec<Peer>,
|
||||||
gray_list: Vec<Peer>,
|
gray_list: Vec<Peer>,
|
||||||
|
@ -177,10 +447,22 @@ define_request_and_response! {
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1450..=1470,
|
core_rpc_server_commands_defs.h => 1450..=1470,
|
||||||
SetLogHashRate,
|
SetLogHashRate,
|
||||||
|
|
||||||
#[derive(Copy)]
|
#[derive(Copy)]
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_LOG_HASH_RATE_REQUEST => SetLogHashRateRequest {
|
||||||
|
visible: true,
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
visible: bool,
|
visible: bool = default_false(), "default_false",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_LOG_HASH_RATE_RESPONSE => SetLogHashRateResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {}
|
ResponseBase {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,11 +470,24 @@ define_request_and_response! {
|
||||||
set_log_level,
|
set_log_level,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1450..=1470,
|
core_rpc_server_commands_defs.h => 1450..=1470,
|
||||||
|
|
||||||
SetLogLevel,
|
SetLogLevel,
|
||||||
|
|
||||||
#[derive(Copy)]
|
#[derive(Copy)]
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_LOG_LEVEL_REQUEST => SetLogLevelRequest {
|
||||||
|
level: 1
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
level: u8,
|
level: u8,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_LOG_LEVEL_RESPONSE => SetLogLevelResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {}
|
ResponseBase {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,10 +495,24 @@ define_request_and_response! {
|
||||||
set_log_categories,
|
set_log_categories,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1494..=1517,
|
core_rpc_server_commands_defs.h => 1494..=1517,
|
||||||
|
|
||||||
SetLogCategories,
|
SetLogCategories,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_LOG_CATEGORIES_REQUEST => SetLogCategoriesRequest {
|
||||||
|
categories: "*:INFO".into(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
categories: String = default_string(), "default_string",
|
categories: String = default_string(), "default_string",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_LOG_CATEGORIES_RESPONSE => SetLogCategoriesResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
categories: "*:INFO".into(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
categories: String,
|
categories: String,
|
||||||
}
|
}
|
||||||
|
@ -213,13 +522,29 @@ define_request_and_response! {
|
||||||
set_bootstrap_daemon,
|
set_bootstrap_daemon,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1785..=1812,
|
core_rpc_server_commands_defs.h => 1785..=1812,
|
||||||
|
|
||||||
SetBootstrapDaemon,
|
SetBootstrapDaemon,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_BOOTSTRAP_DAEMON_REQUEST => SetBootstrapDaemonRequest {
|
||||||
|
address: "http://getmonero.org:18081".into(),
|
||||||
|
username: String::new(),
|
||||||
|
password: String::new(),
|
||||||
|
proxy: String::new(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
address: String,
|
address: String,
|
||||||
username: String,
|
username: String = default_string(), "default_string",
|
||||||
password: String,
|
password: String = default_string(), "default_string",
|
||||||
proxy: String,
|
proxy: String = default_string(), "default_string",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_BOOTSTRAP_DAEMON_RESPONSE => SetBootstrapDaemonResponse {
|
||||||
|
status: Status::Ok,
|
||||||
|
}
|
||||||
|
)]
|
||||||
Response {
|
Response {
|
||||||
status: Status,
|
status: Status,
|
||||||
}
|
}
|
||||||
|
@ -229,8 +554,11 @@ define_request_and_response! {
|
||||||
get_transaction_pool,
|
get_transaction_pool,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1569..=1591,
|
core_rpc_server_commands_defs.h => 1569..=1591,
|
||||||
|
|
||||||
GetTransactionPool,
|
GetTransactionPool,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(GET_TRANSACTION_POOL_RESPONSE)]
|
||||||
AccessResponseBase {
|
AccessResponseBase {
|
||||||
transactions: Vec<TxInfo>,
|
transactions: Vec<TxInfo>,
|
||||||
spent_key_images: Vec<SpentKeyImageInfo>,
|
spent_key_images: Vec<SpentKeyImageInfo>,
|
||||||
|
@ -241,8 +569,41 @@ define_request_and_response! {
|
||||||
get_transaction_pool_stats,
|
get_transaction_pool_stats,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1712..=1732,
|
core_rpc_server_commands_defs.h => 1712..=1732,
|
||||||
|
|
||||||
GetTransactionPoolStats,
|
GetTransactionPoolStats,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_TRANSACTION_POOL_STATS_RESPONSE => GetTransactionPoolStatsResponse {
|
||||||
|
base: AccessResponseBase::ok(),
|
||||||
|
pool_stats: TxpoolStats {
|
||||||
|
bytes_max: 11843,
|
||||||
|
bytes_med: 2219,
|
||||||
|
bytes_min: 1528,
|
||||||
|
bytes_total: 144192,
|
||||||
|
fee_total: 7018100000,
|
||||||
|
histo: vec![
|
||||||
|
TxpoolHisto { bytes: 11219, txs: 4 },
|
||||||
|
TxpoolHisto { bytes: 9737, txs: 5 },
|
||||||
|
TxpoolHisto { bytes: 8757, txs: 4 },
|
||||||
|
TxpoolHisto { bytes: 14763, txs: 4 },
|
||||||
|
TxpoolHisto { bytes: 15007, txs: 6 },
|
||||||
|
TxpoolHisto { bytes: 15924, txs: 6 },
|
||||||
|
TxpoolHisto { bytes: 17869, txs: 8 },
|
||||||
|
TxpoolHisto { bytes: 10894, txs: 5 },
|
||||||
|
TxpoolHisto { bytes: 38485, txs: 10 },
|
||||||
|
TxpoolHisto { bytes: 1537, txs: 1 },
|
||||||
|
],
|
||||||
|
histo_98pc: 186,
|
||||||
|
num_10m: 0,
|
||||||
|
num_double_spends: 0,
|
||||||
|
num_failing: 0,
|
||||||
|
num_not_relayed: 0,
|
||||||
|
oldest: 1721261651,
|
||||||
|
txs_total: 53
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)]
|
||||||
AccessResponseBase {
|
AccessResponseBase {
|
||||||
pool_stats: TxpoolStats,
|
pool_stats: TxpoolStats,
|
||||||
}
|
}
|
||||||
|
@ -252,9 +613,16 @@ define_request_and_response! {
|
||||||
stop_daemon,
|
stop_daemon,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1814..=1831,
|
core_rpc_server_commands_defs.h => 1814..=1831,
|
||||||
|
|
||||||
StopDaemon,
|
StopDaemon,
|
||||||
Request {},
|
Request {},
|
||||||
ResponseBase {
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
STOP_DAEMON_RESPONSE => StopDaemonResponse {
|
||||||
|
status: Status::Ok,
|
||||||
|
}
|
||||||
|
)]
|
||||||
|
Response {
|
||||||
status: Status,
|
status: Status,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -263,8 +631,17 @@ define_request_and_response! {
|
||||||
get_limit,
|
get_limit,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1852..=1874,
|
core_rpc_server_commands_defs.h => 1852..=1874,
|
||||||
|
|
||||||
GetLimit,
|
GetLimit,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_LIMIT_RESPONSE => GetLimitResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
limit_down: 1280000,
|
||||||
|
limit_up: 1280000,
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
limit_down: u64,
|
limit_down: u64,
|
||||||
limit_up: u64,
|
limit_up: u64,
|
||||||
|
@ -275,11 +652,27 @@ define_request_and_response! {
|
||||||
set_limit,
|
set_limit,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1876..=1903,
|
core_rpc_server_commands_defs.h => 1876..=1903,
|
||||||
|
|
||||||
SetLimit,
|
SetLimit,
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_LIMIT_REQUEST => SetLimitRequest {
|
||||||
|
limit_down: 1024,
|
||||||
|
limit_up: 0,
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
limit_down: i64,
|
// FIXME: These may need to be `Option<i64>`.
|
||||||
limit_up: i64,
|
limit_down: i64 = default_zero::<i64>(), "default_zero",
|
||||||
|
limit_up: i64 = default_zero::<i64>(), "default_zero",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
SET_LIMIT_RESPONSE => SetLimitResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
limit_down: 1024,
|
||||||
|
limit_up: 128,
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
limit_down: i64,
|
limit_down: i64,
|
||||||
limit_up: i64,
|
limit_up: i64,
|
||||||
|
@ -290,11 +683,26 @@ define_request_and_response! {
|
||||||
out_peers,
|
out_peers,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1876..=1903,
|
core_rpc_server_commands_defs.h => 1876..=1903,
|
||||||
|
|
||||||
OutPeers,
|
OutPeers,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
OUT_PEERS_REQUEST => OutPeersRequest {
|
||||||
|
out_peers: 3232235535,
|
||||||
|
set: true,
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
set: bool = default_true(), "default_true",
|
set: bool = default_true(), "default_true",
|
||||||
out_peers: u32,
|
out_peers: u32,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
OUT_PEERS_RESPONSE => OutPeersResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
out_peers: 3232235535,
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
out_peers: u32,
|
out_peers: u32,
|
||||||
}
|
}
|
||||||
|
@ -304,8 +712,20 @@ define_request_and_response! {
|
||||||
get_net_stats,
|
get_net_stats,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 793..=822,
|
core_rpc_server_commands_defs.h => 793..=822,
|
||||||
|
|
||||||
GetNetStats,
|
GetNetStats,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_NET_STATS_RESPONSE => GetNetStatsResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
start_time: 1721251858,
|
||||||
|
total_bytes_in: 16283817214,
|
||||||
|
total_bytes_out: 34225244079,
|
||||||
|
total_packets_in: 5981922,
|
||||||
|
total_packets_out: 3627107,
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
start_time: u64,
|
start_time: u64,
|
||||||
total_packets_in: u64,
|
total_packets_in: u64,
|
||||||
|
@ -319,11 +739,43 @@ define_request_and_response! {
|
||||||
get_outs,
|
get_outs,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 567..=609,
|
core_rpc_server_commands_defs.h => 567..=609,
|
||||||
|
|
||||||
GetOuts,
|
GetOuts,
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_OUTS_REQUEST => GetOutsRequest {
|
||||||
|
outputs: vec![
|
||||||
|
GetOutputsOut { amount: 1, index: 0 },
|
||||||
|
GetOutputsOut { amount: 1, index: 1 },
|
||||||
|
],
|
||||||
|
get_txid: true
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
outputs: Vec<GetOutputsOut>,
|
outputs: Vec<GetOutputsOut>,
|
||||||
get_txid: bool,
|
get_txid: bool,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_OUTS_RESPONSE => GetOutsResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
outs: vec![
|
||||||
|
OutKey {
|
||||||
|
height: 51941,
|
||||||
|
key: "08980d939ec297dd597119f498ad69fed9ca55e3a68f29f2782aae887ef0cf8e".into(),
|
||||||
|
mask: "1738eb7a677c6149228a2beaa21bea9e3370802d72a3eec790119580e02bd522".into(),
|
||||||
|
txid: "9d651903b80fb70b9935b72081cd967f543662149aed3839222511acd9100601".into(),
|
||||||
|
unlocked: true
|
||||||
|
},
|
||||||
|
OutKey {
|
||||||
|
height: 51945,
|
||||||
|
key: "454fe46c405be77625fa7e3389a04d3be392346983f27603561ac3a3a74f4a75".into(),
|
||||||
|
mask: "1738eb7a677c6149228a2beaa21bea9e3370802d72a3eec790119580e02bd522".into(),
|
||||||
|
txid: "230bff732dc5f225df14fff82aadd1bf11b3fb7ad3a03413c396a617e843f7d0".into(),
|
||||||
|
unlocked: true
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
outs: Vec<OutKey>,
|
outs: Vec<OutKey>,
|
||||||
}
|
}
|
||||||
|
@ -333,11 +785,31 @@ define_request_and_response! {
|
||||||
update,
|
update,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 2324..=2359,
|
core_rpc_server_commands_defs.h => 2324..=2359,
|
||||||
|
|
||||||
Update,
|
Update,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
UPDATE_REQUEST => UpdateRequest {
|
||||||
|
command: "check".into(),
|
||||||
|
path: "".into(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
command: String,
|
command: String,
|
||||||
path: String = default_string(), "default_string",
|
path: String = default_string(), "default_string",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
UPDATE_RESPONSE => UpdateResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
auto_uri: "".into(),
|
||||||
|
hash: "".into(),
|
||||||
|
path: "".into(),
|
||||||
|
update: false,
|
||||||
|
user_uri: "".into(),
|
||||||
|
version: "".into(),
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
auto_uri: String,
|
auto_uri: String,
|
||||||
hash: String,
|
hash: String,
|
||||||
|
@ -352,35 +824,62 @@ define_request_and_response! {
|
||||||
pop_blocks,
|
pop_blocks,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 2722..=2745,
|
core_rpc_server_commands_defs.h => 2722..=2745,
|
||||||
|
|
||||||
PopBlocks,
|
PopBlocks,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
POP_BLOCKS_REQUEST => PopBlocksRequest {
|
||||||
|
nblocks: 6
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
nblocks: u64,
|
nblocks: u64,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
POP_BLOCKS_RESPONSE => PopBlocksResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
height: 76482,
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
height: u64,
|
height: u64,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
define_request_and_response! {
|
|
||||||
UNDOCUMENTED_ENDPOINT,
|
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
|
||||||
core_rpc_server_commands_defs.h => 2798..=2823,
|
|
||||||
GetTxIdsLoose,
|
|
||||||
Request {
|
|
||||||
txid_template: String,
|
|
||||||
num_matching_bits: u32,
|
|
||||||
},
|
|
||||||
ResponseBase {
|
|
||||||
txids: Vec<String>,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
define_request_and_response! {
|
define_request_and_response! {
|
||||||
UNDOCUMENTED_ENDPOINT,
|
UNDOCUMENTED_ENDPOINT,
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1615..=1635,
|
core_rpc_server_commands_defs.h => 1615..=1635,
|
||||||
|
|
||||||
GetTransactionPoolHashes,
|
GetTransactionPoolHashes,
|
||||||
Request {},
|
Request {},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_TRANSACTION_POOL_HASHES_RESPONSE => GetTransactionPoolHashesResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
tx_hashes: vec![
|
||||||
|
"aa928aed888acd6152c60194d50a4df29b0b851be6169acf11b6a8e304dd6c03".into(),
|
||||||
|
"794345f321a98f3135151f3056c0fdf8188646a8dab27de971428acf3551dd11".into(),
|
||||||
|
"1e9d2ae11f2168a228942077483e70940d34e8658c972bbc3e7f7693b90edf17".into(),
|
||||||
|
"7375c928f261d00f07197775eb0bfa756e5f23319819152faa0b3c670fe54c1b".into(),
|
||||||
|
"2e4d5f8c5a45498f37fb8b6ca4ebc1efa0c371c38c901c77e66b08c072287329".into(),
|
||||||
|
"eee6d596cf855adfb10e1597d2018e3a61897ac467ef1d4a5406b8d20bfbd52f".into(),
|
||||||
|
"59c574d7ba9bb4558470f74503c7518946a85ea22c60fccfbdec108ce7d8f236".into(),
|
||||||
|
"0d57bec1e1075a9e1ac45cf3b3ced1ad95ccdf2a50ce360190111282a0178655".into(),
|
||||||
|
"60d627b2369714a40009c07d6185ebe7fa4af324fdfa8d95a37a936eb878d062".into(),
|
||||||
|
"661d7e728a901a8cb4cf851447d9cd5752462687ed0b776b605ba706f06bdc7d".into(),
|
||||||
|
"b80e1f09442b00b3fffe6db5d263be6267c7586620afff8112d5a8775a6fc58e".into(),
|
||||||
|
"974063906d1ddfa914baf85176b0f689d616d23f3d71ed4798458c8b4f9b9d8f".into(),
|
||||||
|
"d2575ae152a180be4981a9d2fc009afcd073adaa5c6d8b022c540a62d6c905bb".into(),
|
||||||
|
"3d78aa80ee50f506683bab9f02855eb10257a08adceda7cbfbdfc26b10f6b1bb".into(),
|
||||||
|
"8b5bc125bdb73b708500f734501d55088c5ac381a0879e1141634eaa72b6a4da".into(),
|
||||||
|
"11c06f4d2f00c912ca07313ed2ea5366f3cae914a762bed258731d3d9e3706df".into(),
|
||||||
|
"b3644dc7c9a3a53465fe80ad3769e516edaaeb7835e16fdd493aac110d472ae1".into(),
|
||||||
|
"ed2478ad793b923dbf652c8612c40799d764e5468897021234a14a37346bc6ee".into()
|
||||||
|
],
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
tx_hashes: Vec<String>,
|
tx_hashes: Vec<String>,
|
||||||
}
|
}
|
||||||
|
@ -391,14 +890,43 @@ define_request_and_response! {
|
||||||
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
cc73fe71162d564ffda8e549b79a350bca53c454 =>
|
||||||
core_rpc_server_commands_defs.h => 1419..=1448,
|
core_rpc_server_commands_defs.h => 1419..=1448,
|
||||||
GetPublicNodes,
|
GetPublicNodes,
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_PUBLIC_NODES_REQUEST => GetPublicNodesRequest {
|
||||||
|
gray: false,
|
||||||
|
white: true,
|
||||||
|
include_blocked: false,
|
||||||
|
}
|
||||||
|
)]
|
||||||
Request {
|
Request {
|
||||||
gray: bool = default_false(), "default_false",
|
gray: bool = default_false(), "default_false",
|
||||||
white: bool = default_true(), "default_true",
|
white: bool = default_true(), "default_true",
|
||||||
include_blocked: bool = default_false(), "default_false",
|
include_blocked: bool = default_false(), "default_false",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
#[doc = serde_doc_test!(
|
||||||
|
GET_PUBLIC_NODES_RESPONSE => GetPublicNodesResponse {
|
||||||
|
base: ResponseBase::ok(),
|
||||||
|
gray: vec![],
|
||||||
|
white: vec![
|
||||||
|
PublicNode {
|
||||||
|
host: "70.52.75.3".into(),
|
||||||
|
last_seen: 1721246387,
|
||||||
|
rpc_credits_per_hash: 0,
|
||||||
|
rpc_port: 18081,
|
||||||
|
},
|
||||||
|
PublicNode {
|
||||||
|
host: "zbjkbsxc5munw3qusl7j2hpcmikhqocdf4pqhnhtpzw5nt5jrmofptid.onion:18083".into(),
|
||||||
|
last_seen: 1720186288,
|
||||||
|
rpc_credits_per_hash: 0,
|
||||||
|
rpc_port: 18089,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)]
|
||||||
ResponseBase {
|
ResponseBase {
|
||||||
gray: Vec<PublicNode>,
|
gray: Vec<PublicNode> = default_vec::<PublicNode>(), "default_vec",
|
||||||
white: Vec<PublicNode>,
|
white: Vec<PublicNode> = default_vec::<PublicNode>(), "default_vec",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -771,7 +771,7 @@ r#"{
|
||||||
"id": "0",
|
"id": "0",
|
||||||
"method": "get_output_histogram",
|
"method": "get_output_histogram",
|
||||||
"params": {
|
"params": {
|
||||||
"amounts": ["20000000000"]
|
"amounts": [20000000000]
|
||||||
}
|
}
|
||||||
}"#;
|
}"#;
|
||||||
Response =
|
Response =
|
||||||
|
@ -1106,13 +1106,17 @@ r#"{
|
||||||
"id": "0",
|
"id": "0",
|
||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
"result": {
|
"result": {
|
||||||
|
"credits": 0,
|
||||||
"distributions": [{
|
"distributions": [{
|
||||||
"amount": 2628780000,
|
"amount": 2628780000,
|
||||||
"base": 0,
|
"base": 0,
|
||||||
"distribution": "",
|
"distribution": "",
|
||||||
"start_height": 1462078
|
"start_height": 1462078,
|
||||||
|
"binary": false
|
||||||
}],
|
}],
|
||||||
"status": "OK"
|
"status": "OK",
|
||||||
|
"top_hash": "",
|
||||||
|
"untrusted": false
|
||||||
}
|
}
|
||||||
}"#;
|
}"#;
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,11 +234,13 @@ define_request_and_response! {
|
||||||
set_log_hash_rate (other),
|
set_log_hash_rate (other),
|
||||||
SET_LOG_HASH_RATE: &str,
|
SET_LOG_HASH_RATE: &str,
|
||||||
Request =
|
Request =
|
||||||
r#"{}"#;
|
r#"{
|
||||||
|
"visible": true
|
||||||
|
}"#;
|
||||||
Response =
|
Response =
|
||||||
r#"
|
r#"
|
||||||
{
|
{
|
||||||
"status": "OK"
|
"status": "OK",
|
||||||
"untrusted": false
|
"untrusted": false
|
||||||
}"#;
|
}"#;
|
||||||
}
|
}
|
||||||
|
@ -252,7 +254,7 @@ r#"{
|
||||||
}"#;
|
}"#;
|
||||||
Response =
|
Response =
|
||||||
r#"{
|
r#"{
|
||||||
"status": "OK"
|
"status": "OK",
|
||||||
"untrusted": false
|
"untrusted": false
|
||||||
}"#;
|
}"#;
|
||||||
}
|
}
|
||||||
|
@ -673,7 +675,7 @@ r#"{
|
||||||
"limit_down": 1280000,
|
"limit_down": 1280000,
|
||||||
"limit_up": 1280000,
|
"limit_up": 1280000,
|
||||||
"status": "OK",
|
"status": "OK",
|
||||||
"untrusted": true
|
"untrusted": false
|
||||||
}"#;
|
}"#;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -688,7 +690,7 @@ r#"{
|
||||||
r#"{
|
r#"{
|
||||||
"limit_down": 1024,
|
"limit_down": 1024,
|
||||||
"limit_up": 128,
|
"limit_up": 128,
|
||||||
"status": "OK"
|
"status": "OK",
|
||||||
"untrusted": false
|
"untrusted": false
|
||||||
}"#;
|
}"#;
|
||||||
}
|
}
|
||||||
|
@ -712,13 +714,15 @@ define_request_and_response! {
|
||||||
get_net_stats (other),
|
get_net_stats (other),
|
||||||
GET_NET_STATS: &str,
|
GET_NET_STATS: &str,
|
||||||
Request =
|
Request =
|
||||||
r#"{
|
r#"{}"#;
|
||||||
"in_peers": 3232235535
|
|
||||||
}"#;
|
|
||||||
Response =
|
Response =
|
||||||
r#"{
|
r#"{
|
||||||
"in_peers": 3232235535,
|
"start_time": 1721251858,
|
||||||
"status": "OK",
|
"status": "OK",
|
||||||
|
"total_bytes_in": 16283817214,
|
||||||
|
"total_bytes_out": 34225244079,
|
||||||
|
"total_packets_in": 5981922,
|
||||||
|
"total_packets_out": 3627107,
|
||||||
"untrusted": false
|
"untrusted": false
|
||||||
}"#;
|
}"#;
|
||||||
}
|
}
|
||||||
|
@ -804,7 +808,26 @@ r#"{
|
||||||
"credits": 0,
|
"credits": 0,
|
||||||
"status": "OK",
|
"status": "OK",
|
||||||
"top_hash": "",
|
"top_hash": "",
|
||||||
"tx_hashes": ["aa928aed888acd6152c60194d50a4df29b0b851be6169acf11b6a8e304dd6c03","794345f321a98f3135151f3056c0fdf8188646a8dab27de971428acf3551dd11","1e9d2ae11f2168a228942077483e70940d34e8658c972bbc3e7f7693b90edf17","7375c928f261d00f07197775eb0bfa756e5f23319819152faa0b3c670fe54c1b","2e4d5f8c5a45498f37fb8b6ca4ebc1efa0c371c38c901c77e66b08c072287329","eee6d596cf855adfb10e1597d2018e3a61897ac467ef1d4a5406b8d20bfbd52f","59c574d7ba9bb4558470f74503c7518946a85ea22c60fccfbdec108ce7d8f236","0d57bec1e1075a9e1ac45cf3b3ced1ad95ccdf2a50ce360190111282a0178655","60d627b2369714a40009c07d6185ebe7fa4af324fdfa8d95a37a936eb878d062","661d7e728a901a8cb4cf851447d9cd5752462687ed0b776b605ba706f06bdc7d","b80e1f09442b00b3fffe6db5d263be6267c7586620afff8112d5a8775a6fc58e","974063906d1ddfa914baf85176b0f689d616d23f3d71ed4798458c8b4f9b9d8f","d2575ae152a180be4981a9d2fc009afcd073adaa5c6d8b022c540a62d6c905bb","3d78aa80ee50f506683bab9f02855eb10257a08adceda7cbfbdfc26b10f6b1bb","8b5bc125bdb73b708500f734501d55088c5ac381a0879e1141634eaa72b6a4da","11c06f4d2f00c912ca07313ed2ea5366f3cae914a762bed258731d3d9e3706df","b3644dc7c9a3a53465fe80ad3769e516edaaeb7835e16fdd493aac110d472ae1","ed2478ad793b923dbf652c8612c40799d764e5468897021234a14a37346bc6ee"],
|
"tx_hashes": [
|
||||||
|
"aa928aed888acd6152c60194d50a4df29b0b851be6169acf11b6a8e304dd6c03",
|
||||||
|
"794345f321a98f3135151f3056c0fdf8188646a8dab27de971428acf3551dd11",
|
||||||
|
"1e9d2ae11f2168a228942077483e70940d34e8658c972bbc3e7f7693b90edf17",
|
||||||
|
"7375c928f261d00f07197775eb0bfa756e5f23319819152faa0b3c670fe54c1b",
|
||||||
|
"2e4d5f8c5a45498f37fb8b6ca4ebc1efa0c371c38c901c77e66b08c072287329",
|
||||||
|
"eee6d596cf855adfb10e1597d2018e3a61897ac467ef1d4a5406b8d20bfbd52f",
|
||||||
|
"59c574d7ba9bb4558470f74503c7518946a85ea22c60fccfbdec108ce7d8f236",
|
||||||
|
"0d57bec1e1075a9e1ac45cf3b3ced1ad95ccdf2a50ce360190111282a0178655",
|
||||||
|
"60d627b2369714a40009c07d6185ebe7fa4af324fdfa8d95a37a936eb878d062",
|
||||||
|
"661d7e728a901a8cb4cf851447d9cd5752462687ed0b776b605ba706f06bdc7d",
|
||||||
|
"b80e1f09442b00b3fffe6db5d263be6267c7586620afff8112d5a8775a6fc58e",
|
||||||
|
"974063906d1ddfa914baf85176b0f689d616d23f3d71ed4798458c8b4f9b9d8f",
|
||||||
|
"d2575ae152a180be4981a9d2fc009afcd073adaa5c6d8b022c540a62d6c905bb",
|
||||||
|
"3d78aa80ee50f506683bab9f02855eb10257a08adceda7cbfbdfc26b10f6b1bb",
|
||||||
|
"8b5bc125bdb73b708500f734501d55088c5ac381a0879e1141634eaa72b6a4da",
|
||||||
|
"11c06f4d2f00c912ca07313ed2ea5366f3cae914a762bed258731d3d9e3706df",
|
||||||
|
"b3644dc7c9a3a53465fe80ad3769e516edaaeb7835e16fdd493aac110d472ae1",
|
||||||
|
"ed2478ad793b923dbf652c8612c40799d764e5468897021234a14a37346bc6ee"
|
||||||
|
],
|
||||||
"untrusted": false
|
"untrusted": false
|
||||||
}"#;
|
}"#;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,4 +18,5 @@ extend-exclude = [
|
||||||
"/misc/gpg_keys/",
|
"/misc/gpg_keys/",
|
||||||
"cryptonight/",
|
"cryptonight/",
|
||||||
"/test-utils/src/rpc/data/json.rs",
|
"/test-utils/src/rpc/data/json.rs",
|
||||||
|
"rpc/types/src/json.rs",
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in a new issue