murray_rs/blockchain/types/
transaction.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Deserialize, Serialize, Debug)]
4pub struct PreviousOutput {
5  pub scriptpubkey: String,
6  pub scriptpubkey_asm: String,
7  pub scriptpubkey_type: String,
8  pub scriptpubkey_address: String,
9  pub value: u64,
10}
11
12#[derive(Deserialize, Serialize, Debug)]
13pub struct TransactionInput {
14  pub txid: String,
15  pub vout: u32,
16  pub prevout: PreviousOutput,
17  pub scriptsig: String,
18  pub scriptsig_asm: String,
19  pub witness: Option<Vec<String>>,
20  pub is_coinbase: bool,
21  pub sequence: u32,
22}
23
24#[derive(Deserialize, Serialize, Debug)]
25pub struct TransactionStatus {
26  pub confirmed: bool,
27  pub block_height: Option<u32>, // These fields can be Optional because the tx may have not been confirmed yet
28  pub block_hash: Option<String>,
29  pub block_time: Option<u64>,
30}
31
32#[derive(Deserialize, Serialize, Debug)]
33pub struct TransactionOutput {
34  pub scriptpubkey: String,
35  pub scriptpubkey_asm: String,
36  pub scriptpubkey_type: String,
37  pub scriptpubkey_address: String,
38  pub value: u64,
39}
40
41#[derive(Deserialize, Serialize, Debug)]
42pub struct Transaction {
43  pub txid: String,
44  pub version: u32,
45  pub locktime: u32,
46  pub vin: Vec<TransactionInput>,
47  pub vout: Vec<TransactionOutput>,
48  pub size: u32,
49  pub weight: u32,
50  pub sigops: u32,
51  pub fee: u32,
52  pub status: TransactionStatus,
53}