cyfs_base_meta/
spv.rs

1use serde::{Serialize, Deserialize};
2use cyfs_base::BuckyError;
3use cyfs_base::*;
4
5#[derive(Serialize, Deserialize)]
6pub struct RequestResult<T>
7{
8    pub err: u16,
9    pub msg: String,
10    pub result: Option<T>
11}
12
13impl <T> RequestResult<T>
14{
15    pub fn from_err(err: BuckyError) -> Self {
16        RequestResult {
17            err: err.code().into(),
18            msg: format!("{}", err),
19            result: None
20        }
21    }
22}
23
24#[derive(Serialize, Deserialize, Clone, Debug, RawEncode, RawDecode, Eq, PartialEq)]
25pub struct SPVTx {
26    pub hash: String,
27    pub number: i64,
28    pub from: String,
29    pub to: String,
30    pub coin_id: u8,
31    pub value: i64,
32    pub desc: String,
33    pub create_time: i64,
34    pub result: u32,
35    pub use_fee: u32,
36    pub nonce: i64,
37    pub gas_coin_id : u8,//用哪种coin来支付手续费
38    pub gas_price : u16, //
39    pub max_fee : u32,
40}
41
42impl <T> From<T> for RequestResult<T>
43{
44    fn from(result: T) -> Self {
45        RequestResult {
46            err: 0,
47            msg: "".to_string(),
48            result: Some(result)
49        }
50    }
51}
52
53#[derive(Serialize, Deserialize)]
54pub struct GetTxListRequest {
55    pub address_list: Vec<String>,
56    pub block_section: Option<(i64, i64)>,
57    pub offset: i64,
58    pub length: i64,
59    pub coin_id_list: Vec<String>,
60}
61
62#[derive(Serialize, Deserialize)]
63pub struct GetBlocksRequest {
64    pub start_block: i64,
65    pub end_block: i64,
66}
67
68pub const TX_STATUS_PENDING: u8 = 1;
69pub const TX_STATUS_BLOCKED: u8 = 2;
70
71#[derive(Serialize, Deserialize)]
72pub struct TxMetaData {
73    pub tx_hash: String,
74    pub create_time: String,
75    pub nonce : String,
76    pub caller: String,
77    pub gas_coin_id : u8,//用哪种coin来支付手续费
78    pub gas_price : u16, //
79    pub max_fee : u32,
80    pub result: u32,
81    pub use_fee: u32,
82    pub to: Vec<(String, u8, String)>
83}
84
85#[derive(Serialize, Deserialize)]
86pub struct TxInfo {
87    pub status: u8,
88    pub tx: TxMetaData,
89    pub block_number: Option<String>,
90    pub block_hash: Option<String>,
91    pub block_create_time: Option<String>,
92}
93
94#[derive(Serialize, Deserialize)]
95pub struct BlockInfo {
96    pub height: i64,
97    pub block_hash: String,
98    pub create_time: u64,
99    pub tx_list: Vec<TxInfo>
100}
101
102#[derive(Serialize, Deserialize)]
103pub struct ERC20ContractTx {
104    pub address: String,
105    pub tx_hash: String,
106    pub start_number: u64,
107    pub end_number: u64,
108    pub from: String,
109    pub to: String,
110}
111
112#[derive(Serialize, Deserialize, RawDecode, RawEncode, Clone)]
113pub struct ERC20ContractTxResponse {
114    pub address: String,
115    pub tx_hash: String,
116    pub from: String,
117    pub to: String,
118    pub value: u64,
119    pub height: u64,
120    pub gas_price : u64,
121    pub create_time: u64,
122    pub result: i32,
123}