data types and responses from daemon json rpc interface
parent
2f6600101e
commit
12ea1038f1
@ -0,0 +1,236 @@
|
|||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct RPCPayload {
|
||||||
|
pub jsonrpc: String,
|
||||||
|
pub id: String,
|
||||||
|
pub method: Option<String>,
|
||||||
|
pub params: Option<RPCParams>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for RPCPayload {
|
||||||
|
fn default() -> RPCPayload {
|
||||||
|
RPCPayload {
|
||||||
|
jsonrpc: "2.0".to_string(),
|
||||||
|
id: "0".to_string(),
|
||||||
|
method: None,
|
||||||
|
params: None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct RPCParams {
|
||||||
|
pub hash: Option<String>,
|
||||||
|
pub txs_hashes: Option<Vec<String>>,
|
||||||
|
pub height: Option<String>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for RPCParams {
|
||||||
|
fn default() -> RPCParams {
|
||||||
|
RPCParams {
|
||||||
|
hash: None,
|
||||||
|
txs_hashes: None,
|
||||||
|
height: None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct GetInfo {
|
||||||
|
pub jsonrpc: String,
|
||||||
|
pub id: String,
|
||||||
|
pub result: GetInfoResult
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct GetInfoResult {
|
||||||
|
pub alt_blocks_count: u32,
|
||||||
|
pub block_size_limit: u32,
|
||||||
|
pub block_size_median: u32,
|
||||||
|
pub block_weight_limit: u32,
|
||||||
|
pub block_weight_median: u64,
|
||||||
|
pub bootstrap_daemon_address: String,
|
||||||
|
pub credits: u32,
|
||||||
|
pub cumulative_difficulty: u64,
|
||||||
|
pub cumulative_difficulty_top64: u32,
|
||||||
|
pub database_size: u64,
|
||||||
|
pub difficulty: u64,
|
||||||
|
pub difficulty_top64: u32,
|
||||||
|
pub free_space: u64,
|
||||||
|
pub grey_peerlist_size: u32,
|
||||||
|
pub height: u32,
|
||||||
|
pub height_without_bootstrap: u32,
|
||||||
|
pub incoming_connections_count: u32,
|
||||||
|
pub mainnet: bool,
|
||||||
|
pub nettype: String,
|
||||||
|
pub offline: bool,
|
||||||
|
pub outgoing_connections_count: u32,
|
||||||
|
pub rpc_connections_count: u32,
|
||||||
|
pub stagenet: bool,
|
||||||
|
pub start_time: u32,
|
||||||
|
pub status: String,
|
||||||
|
pub target: u32,
|
||||||
|
pub target_height: u32,
|
||||||
|
pub testnet: bool,
|
||||||
|
pub top_block_hash: String,
|
||||||
|
pub top_hash: String,
|
||||||
|
pub tx_count: u32,
|
||||||
|
pub tx_pool_size: u32,
|
||||||
|
pub untrusted: bool,
|
||||||
|
pub update_available: bool,
|
||||||
|
pub version: String,
|
||||||
|
pub was_bootstrap_ever_used: bool,
|
||||||
|
pub white_peerlist_size: u32,
|
||||||
|
pub wide_cumulative_difficulty: String,
|
||||||
|
pub wide_difficulty: String
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct BlockByHeaderHash {
|
||||||
|
pub id: String,
|
||||||
|
pub jsonrpc: String,
|
||||||
|
pub result: BlockByHeaderHashResult
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct BlockByHeaderHashResult {
|
||||||
|
pub status: String,
|
||||||
|
pub untrusted: bool,
|
||||||
|
pub block_header: BlockHeader
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct BlockHeader {
|
||||||
|
pub block_size: u32,
|
||||||
|
pub depth: u32,
|
||||||
|
pub difficulty: u64,
|
||||||
|
pub hash: String,
|
||||||
|
pub height: u32,
|
||||||
|
pub major_version: u8,
|
||||||
|
pub minor_version: u8,
|
||||||
|
pub miner_tx_hash: Option<String>,
|
||||||
|
pub nonce: u32,
|
||||||
|
pub num_txes: u32,
|
||||||
|
pub orphan_status: bool,
|
||||||
|
pub prev_hash: String,
|
||||||
|
pub reward: u64,
|
||||||
|
pub timestamp: i64
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct GetTransactions {
|
||||||
|
pub txs: Vec<GetTransactionsTxs>
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct GetTransactionsTxs {
|
||||||
|
pub block_height: Option<u32>,
|
||||||
|
pub block_timestamp: Option<i64>,
|
||||||
|
pub double_spend_seen: bool,
|
||||||
|
pub in_pool: bool,
|
||||||
|
pub output_indices: Option<Vec<u32>>,
|
||||||
|
pub as_json: String,
|
||||||
|
pub as_json_full: Option<TransactionJSON>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GetTransactionsTxs {
|
||||||
|
pub fn process(&mut self) {
|
||||||
|
self.as_json_full = Some(serde_json::from_str(&self.as_json).unwrap())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct GetBlock {
|
||||||
|
pub id: String,
|
||||||
|
pub jsonrpc: String,
|
||||||
|
pub result: GetBlockResult
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct GetBlockResult {
|
||||||
|
pub block_header: BlockHeader,
|
||||||
|
pub credits: u8,
|
||||||
|
pub miner_tx_hash: String,
|
||||||
|
pub tx_hashes: Option<Vec<String>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct GetTransactionPool {
|
||||||
|
pub credits: u32,
|
||||||
|
pub spent_key_images: Option<Vec<SpentKeyImages>>,
|
||||||
|
pub status: String,
|
||||||
|
pub top_hash: String,
|
||||||
|
pub transactions: Option<Vec<Transactions>>
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct SpentKeyImages {
|
||||||
|
pub id_hash: String,
|
||||||
|
pub txs_hashes: Vec<String>
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct Transactions {
|
||||||
|
pub blob_size: u32,
|
||||||
|
pub do_not_relay: bool,
|
||||||
|
pub double_spend_seen: bool,
|
||||||
|
pub fee: u64,
|
||||||
|
pub id_hash: String,
|
||||||
|
pub kept_by_block: bool,
|
||||||
|
pub last_failed_height: u32,
|
||||||
|
pub last_failed_id_hash: String,
|
||||||
|
pub last_relayed_time: i64,
|
||||||
|
pub max_used_block_height: u32,
|
||||||
|
pub max_used_block_id_hash: String,
|
||||||
|
pub receive_time: i64,
|
||||||
|
pub relayed: bool,
|
||||||
|
pub tx_blob: String,
|
||||||
|
pub tx_json: String,
|
||||||
|
pub tx_json_full: Option<TransactionJSON>,
|
||||||
|
pub weight: u32
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Transactions {
|
||||||
|
pub fn process(&mut self) {
|
||||||
|
self.tx_json_full = Some(serde_json::from_str(&self.tx_json).unwrap())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct TransactionJSON {
|
||||||
|
pub version: u32,
|
||||||
|
pub unlock_time: u64,
|
||||||
|
pub vin: Vec<TransactionInputs>,
|
||||||
|
pub vout: Vec<TransactionOutputs>,
|
||||||
|
pub extra: Vec<u32>,
|
||||||
|
pub rct_signatures: RingSignatures
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct TransactionInputs {
|
||||||
|
pub key: Option<PreviousTransactionKey>
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct PreviousTransactionKey {
|
||||||
|
pub amount: u64,
|
||||||
|
pub key_offsets: Vec<u32>,
|
||||||
|
pub k_image: String
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct TransactionOutputs {
|
||||||
|
pub amount: u64,
|
||||||
|
pub target: OutputStealthAddress
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct OutputStealthAddress {
|
||||||
|
pub key: String
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Hash, Eq, PartialEq, Debug, Clone)]
|
||||||
|
pub struct RingSignatures {
|
||||||
|
pub r#type: u32,
|
||||||
|
pub txnFee: Option<u64>,
|
||||||
|
pub outPk: Option<Vec<String>>
|
||||||
|
}
|
Loading…
Reference in New Issue