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