Electroneum
wallet_light_rpc.h
Go to the documentation of this file.
1 // Copyright (c) 2014-2018, The Monero Project
2 //
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without modification, are
6 // permitted provided that the following conditions are met:
7 //
8 // 1. Redistributions of source code must retain the above copyright notice, this list of
9 // conditions and the following disclaimer.
10 //
11 // 2. Redistributions in binary form must reproduce the above copyright notice, this list
12 // of conditions and the following disclaimer in the documentation and/or other
13 // materials provided with the distribution.
14 //
15 // 3. Neither the name of the copyright holder nor the names of its contributors may be
16 // used to endorse or promote products derived from this software without specific
17 // prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22 // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27 // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 //
29 // Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
30 
31 #pragma once
33 #include "crypto/hash.h"
34 
35 namespace tools
36 {
37  //-----------------------------------------------
39  {
40  struct request_t
41  {
42  std::string address;
43  std::string view_key;
44 
45  BEGIN_KV_SERIALIZE_MAP()
46  KV_SERIALIZE(address)
47  KV_SERIALIZE(view_key)
48  END_KV_SERIALIZE_MAP()
49  };
50  typedef epee::misc_utils::struct_init<request_t> request;
51 
52  struct spent_output {
53  uint64_t amount;
54  std::string key_image;
55  std::string tx_pub_key;
56  uint64_t out_index;
57  uint32_t mixin;
58 
59 
60  BEGIN_KV_SERIALIZE_MAP()
61  KV_SERIALIZE(amount)
62  KV_SERIALIZE(key_image)
63  KV_SERIALIZE(tx_pub_key)
64  KV_SERIALIZE(out_index)
65  KV_SERIALIZE(mixin)
66  END_KV_SERIALIZE_MAP()
67  };
68 
69  struct transaction
70  {
71  uint64_t id;
72  std::string hash;
73  uint64_t timestamp;
74  uint64_t total_received;
75  uint64_t total_sent;
76  uint64_t unlock_time;
77  uint64_t height;
78  std::list<spent_output> spent_outputs;
79  std::string payment_id;
80  bool coinbase;
81  bool mempool;
82  uint32_t mixin;
83 
84  BEGIN_KV_SERIALIZE_MAP()
85  KV_SERIALIZE(id)
86  KV_SERIALIZE(hash)
87  KV_SERIALIZE(timestamp)
88  KV_SERIALIZE(total_received)
89  KV_SERIALIZE(total_sent)
90  KV_SERIALIZE(unlock_time)
91  KV_SERIALIZE(height)
92  KV_SERIALIZE(spent_outputs)
93  KV_SERIALIZE(payment_id)
94  KV_SERIALIZE(coinbase)
95  KV_SERIALIZE(mempool)
96  KV_SERIALIZE(mixin)
97  END_KV_SERIALIZE_MAP()
98  };
99 
100 
101  struct response_t
102  {
103  //std::list<std::string> txs_as_json;
104  uint64_t total_received;
105  uint64_t total_received_unlocked = 0; // OpenMonero only
106  uint64_t scanned_height;
107  std::vector<transaction> transactions;
110  std::string status;
111  BEGIN_KV_SERIALIZE_MAP()
112  KV_SERIALIZE(total_received)
113  KV_SERIALIZE(total_received_unlocked)
114  KV_SERIALIZE(scanned_height)
115  KV_SERIALIZE(transactions)
116  KV_SERIALIZE(blockchain_height)
117  KV_SERIALIZE(scanned_block_height)
118  KV_SERIALIZE(status)
119  END_KV_SERIALIZE_MAP()
120  };
121  typedef epee::misc_utils::struct_init<response_t> response;
122  };
123 
124  //-----------------------------------------------
126  {
127  struct request_t
128  {
129  std::string address;
130  std::string view_key;
131 
132  BEGIN_KV_SERIALIZE_MAP()
133  KV_SERIALIZE(address)
134  KV_SERIALIZE(view_key)
135  END_KV_SERIALIZE_MAP()
136  };
137  typedef epee::misc_utils::struct_init<request_t> request;
138 
139  struct spent_output
140  {
141  uint64_t amount;
142  std::string key_image;
143  std::string tx_pub_key;
144  uint64_t out_index;
145  uint32_t mixin;
146 
147  BEGIN_KV_SERIALIZE_MAP()
148  KV_SERIALIZE(amount)
149  KV_SERIALIZE(key_image)
150  KV_SERIALIZE(tx_pub_key)
151  KV_SERIALIZE(out_index)
152  KV_SERIALIZE(mixin)
153  END_KV_SERIALIZE_MAP()
154  };
155 
156  struct response_t
157  {
158  uint64_t locked_funds;
159  uint64_t total_received;
160  uint64_t total_sent;
161  uint64_t scanned_height;
163  uint64_t start_height;
166  std::list<spent_output> spent_outputs;
167  BEGIN_KV_SERIALIZE_MAP()
168  KV_SERIALIZE(locked_funds)
169  KV_SERIALIZE(total_received)
170  KV_SERIALIZE(total_sent)
171  KV_SERIALIZE(scanned_height)
172  KV_SERIALIZE(scanned_block_height)
173  KV_SERIALIZE(start_height)
174  KV_SERIALIZE(transaction_height)
175  KV_SERIALIZE(blockchain_height)
176  KV_SERIALIZE(spent_outputs)
177  END_KV_SERIALIZE_MAP()
178  };
179  typedef epee::misc_utils::struct_init<response_t> response;
180  };
181 
182  //-----------------------------------------------
184  {
185  struct request_t
186  {
187  std::string amount;
188  std::string address;
189  std::string view_key;
190  // OpenMonero specific
191  uint64_t mixin;
192  bool use_dust;
193  std::string dust_threshold;
194 
195  BEGIN_KV_SERIALIZE_MAP()
196  KV_SERIALIZE(amount)
197  KV_SERIALIZE(address)
198  KV_SERIALIZE(view_key)
199  KV_SERIALIZE(mixin)
200  KV_SERIALIZE(use_dust)
201  KV_SERIALIZE(dust_threshold)
202  END_KV_SERIALIZE_MAP()
203  };
204  typedef epee::misc_utils::struct_init<request_t> request;
205 
206 
207  struct output {
208  uint64_t amount;
209  std::string public_key;
210  uint64_t index;
211  uint64_t global_index;
212  std::string rct;
213  std::string tx_hash;
214  std::string tx_pub_key;
215  std::string tx_prefix_hash;
216  std::vector<std::string> spend_key_images;
217  uint64_t timestamp;
218  uint64_t height;
219 
220 
221  BEGIN_KV_SERIALIZE_MAP()
222  KV_SERIALIZE(amount)
223  KV_SERIALIZE(public_key)
224  KV_SERIALIZE(index)
225  KV_SERIALIZE(global_index)
226  KV_SERIALIZE(rct)
227  KV_SERIALIZE(tx_hash)
228  KV_SERIALIZE(tx_pub_key)
229  KV_SERIALIZE(tx_prefix_hash)
230  KV_SERIALIZE(spend_key_images)
231  KV_SERIALIZE(timestamp)
232  KV_SERIALIZE(height)
233  END_KV_SERIALIZE_MAP()
234  };
235 
236  struct response_t
237  {
238  uint64_t amount;
239  std::list<output> outputs;
240  uint64_t per_kb_fee;
241  std::string status;
242  std::string reason;
243  BEGIN_KV_SERIALIZE_MAP()
244  KV_SERIALIZE(amount)
245  KV_SERIALIZE(outputs)
246  KV_SERIALIZE(per_kb_fee)
247  KV_SERIALIZE(status)
248  KV_SERIALIZE(reason)
249  END_KV_SERIALIZE_MAP()
250  };
251  typedef epee::misc_utils::struct_init<response_t> response;
252  };
253  //-----------------------------------------------
255  {
256  struct request_t
257  {
258  std::string address;
259  std::string view_key;
261 
262  BEGIN_KV_SERIALIZE_MAP()
263  KV_SERIALIZE(address)
264  KV_SERIALIZE(view_key)
265  KV_SERIALIZE(create_account)
266  END_KV_SERIALIZE_MAP()
267  };
268  typedef epee::misc_utils::struct_init<request_t> request;
269 
270  struct response_t
271  {
272  std::string status;
273  std::string reason;
275 
276  BEGIN_KV_SERIALIZE_MAP()
277  KV_SERIALIZE(status)
278  KV_SERIALIZE(reason)
279  KV_SERIALIZE(new_address)
280  END_KV_SERIALIZE_MAP()
281  };
282  typedef epee::misc_utils::struct_init<response_t> response;
283  };
284  //-----------------------------------------------
286  {
287  struct request_t
288  {
289  std::string address;
290  std::string view_key;
291 
292  BEGIN_KV_SERIALIZE_MAP()
293  KV_SERIALIZE(address)
294  KV_SERIALIZE(view_key)
295  END_KV_SERIALIZE_MAP()
296  };
297  typedef epee::misc_utils::struct_init<request_t> request;
298 
299  struct response_t
300  {
301  std::string payment_id;
302  uint64_t import_fee;
305  std::string payment_address;
306  std::string status;
307 
308  BEGIN_KV_SERIALIZE_MAP()
309  KV_SERIALIZE(payment_id)
310  KV_SERIALIZE(import_fee)
311  KV_SERIALIZE(new_request)
312  KV_SERIALIZE(request_fulfilled)
313  KV_SERIALIZE(payment_address)
314  KV_SERIALIZE(status)
315  END_KV_SERIALIZE_MAP()
316  };
317  typedef epee::misc_utils::struct_init<response_t> response;
318  };
319  //-----------------------------------------------
320 }
uint64_t height
Definition: blockchain.cpp:91
POD_CLASS public_key
Definition: crypto.h:76
POD_CLASS key_image
Definition: crypto.h:102
POD_CLASS hash
Definition: hash.h:50
Definition: cryptonote_format_utils.h:44
Definition: bulletproofs.cc:63
Various Tools.
Definition: apply_permutation.h:40
Definition: wallet_light_rpc.h:128
std::string address
Definition: wallet_light_rpc.h:129
std::string view_key
Definition: wallet_light_rpc.h:130
Definition: wallet_light_rpc.h:157
uint64_t locked_funds
Definition: wallet_light_rpc.h:158
uint64_t total_sent
Definition: wallet_light_rpc.h:160
uint64_t scanned_block_height
Definition: wallet_light_rpc.h:162
uint64_t start_height
Definition: wallet_light_rpc.h:163
std::list< spent_output > spent_outputs
Definition: wallet_light_rpc.h:166
uint64_t blockchain_height
Definition: wallet_light_rpc.h:165
uint64_t total_received
Definition: wallet_light_rpc.h:159
uint64_t scanned_height
Definition: wallet_light_rpc.h:161
uint64_t transaction_height
Definition: wallet_light_rpc.h:164
Definition: wallet_light_rpc.h:140
uint64_t amount
Definition: wallet_light_rpc.h:141
std::string key_image
Definition: wallet_light_rpc.h:142
uint64_t out_index
Definition: wallet_light_rpc.h:144
std::string tx_pub_key
Definition: wallet_light_rpc.h:143
uint32_t mixin
Definition: wallet_light_rpc.h:145
Definition: wallet_light_rpc.h:126
epee::misc_utils::struct_init< response_t > response
Definition: wallet_light_rpc.h:179
epee::misc_utils::struct_init< request_t > request
Definition: wallet_light_rpc.h:137
Definition: wallet_light_rpc.h:41
std::string view_key
Definition: wallet_light_rpc.h:43
std::string address
Definition: wallet_light_rpc.h:42
Definition: wallet_light_rpc.h:102
uint64_t blockchain_height
Definition: wallet_light_rpc.h:108
uint64_t total_received
Definition: wallet_light_rpc.h:104
std::vector< transaction > transactions
Definition: wallet_light_rpc.h:107
uint64_t scanned_block_height
Definition: wallet_light_rpc.h:109
uint64_t scanned_height
Definition: wallet_light_rpc.h:106
std::string status
Definition: wallet_light_rpc.h:110
Definition: wallet_light_rpc.h:52
uint64_t out_index
Definition: wallet_light_rpc.h:56
uint32_t mixin
Definition: wallet_light_rpc.h:57
uint64_t amount
Definition: wallet_light_rpc.h:53
std::string tx_pub_key
Definition: wallet_light_rpc.h:55
std::string key_image
Definition: wallet_light_rpc.h:54
Definition: wallet_light_rpc.h:70
uint64_t total_sent
Definition: wallet_light_rpc.h:75
std::list< spent_output > spent_outputs
Definition: wallet_light_rpc.h:78
bool mempool
Definition: wallet_light_rpc.h:81
uint64_t id
Definition: wallet_light_rpc.h:71
uint64_t total_received
Definition: wallet_light_rpc.h:74
uint64_t height
Definition: wallet_light_rpc.h:77
std::string hash
Definition: wallet_light_rpc.h:72
uint64_t timestamp
Definition: wallet_light_rpc.h:73
uint64_t unlock_time
Definition: wallet_light_rpc.h:76
std::string payment_id
Definition: wallet_light_rpc.h:79
bool coinbase
Definition: wallet_light_rpc.h:80
uint32_t mixin
Definition: wallet_light_rpc.h:82
Definition: wallet_light_rpc.h:39
epee::misc_utils::struct_init< response_t > response
Definition: wallet_light_rpc.h:121
epee::misc_utils::struct_init< request_t > request
Definition: wallet_light_rpc.h:50
Definition: wallet_light_rpc.h:207
std::string tx_prefix_hash
Definition: wallet_light_rpc.h:215
uint64_t timestamp
Definition: wallet_light_rpc.h:217
uint64_t amount
Definition: wallet_light_rpc.h:208
uint64_t index
Definition: wallet_light_rpc.h:210
std::string tx_hash
Definition: wallet_light_rpc.h:213
std::vector< std::string > spend_key_images
Definition: wallet_light_rpc.h:216
std::string public_key
Definition: wallet_light_rpc.h:209
uint64_t global_index
Definition: wallet_light_rpc.h:211
std::string rct
Definition: wallet_light_rpc.h:212
uint64_t height
Definition: wallet_light_rpc.h:218
std::string tx_pub_key
Definition: wallet_light_rpc.h:214
Definition: wallet_light_rpc.h:186
std::string dust_threshold
Definition: wallet_light_rpc.h:193
bool use_dust
Definition: wallet_light_rpc.h:192
std::string amount
Definition: wallet_light_rpc.h:187
uint64_t mixin
Definition: wallet_light_rpc.h:191
std::string view_key
Definition: wallet_light_rpc.h:189
std::string address
Definition: wallet_light_rpc.h:188
Definition: wallet_light_rpc.h:237
uint64_t per_kb_fee
Definition: wallet_light_rpc.h:240
std::list< output > outputs
Definition: wallet_light_rpc.h:239
uint64_t amount
Definition: wallet_light_rpc.h:238
std::string reason
Definition: wallet_light_rpc.h:242
std::string status
Definition: wallet_light_rpc.h:241
Definition: wallet_light_rpc.h:184
epee::misc_utils::struct_init< response_t > response
Definition: wallet_light_rpc.h:251
epee::misc_utils::struct_init< request_t > request
Definition: wallet_light_rpc.h:204
Definition: wallet_light_rpc.h:288
std::string address
Definition: wallet_light_rpc.h:289
std::string view_key
Definition: wallet_light_rpc.h:290
std::string payment_id
Definition: wallet_light_rpc.h:301
bool request_fulfilled
Definition: wallet_light_rpc.h:304
std::string status
Definition: wallet_light_rpc.h:306
std::string payment_address
Definition: wallet_light_rpc.h:305
bool new_request
Definition: wallet_light_rpc.h:303
uint64_t import_fee
Definition: wallet_light_rpc.h:302
Definition: wallet_light_rpc.h:286
epee::misc_utils::struct_init< request_t > request
Definition: wallet_light_rpc.h:297
epee::misc_utils::struct_init< response_t > response
Definition: wallet_light_rpc.h:317
Definition: wallet_light_rpc.h:257
std::string address
Definition: wallet_light_rpc.h:258
std::string view_key
Definition: wallet_light_rpc.h:259
bool create_account
Definition: wallet_light_rpc.h:260
Definition: wallet_light_rpc.h:271
std::string status
Definition: wallet_light_rpc.h:272
std::string reason
Definition: wallet_light_rpc.h:273
bool new_address
Definition: wallet_light_rpc.h:274
Definition: wallet_light_rpc.h:255
epee::misc_utils::struct_init< request_t > request
Definition: wallet_light_rpc.h:268
epee::misc_utils::struct_init< response_t > response
Definition: wallet_light_rpc.h:282