OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
parsec/agent/runners/evm/format.cpp
Go to the documentation of this file.
1// Copyright (c) 2022 MIT Digital Currency Initiative,
2// Federal Reserve Bank of Boston
3// Distributed under the MIT software license, see the accompanying
4// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6#include "format.hpp"
7
9
10namespace cbdc {
13 -> serializer& {
14 return ser << acc.m_balance << acc.m_nonce;
15 }
16
18 -> serializer& {
19 return deser >> acc.m_balance >> acc.m_nonce;
20 }
21
22 auto operator<<(serializer& ser, const evmc::address& addr)
23 -> serializer& {
24 ser.write(addr.bytes, sizeof(addr.bytes));
25 return ser;
26 }
27
28 auto operator>>(serializer& deser, evmc::address& addr) -> serializer& {
29 deser.read(addr.bytes, sizeof(addr.bytes));
30 return deser;
31 }
32
33 auto operator<<(serializer& ser, const evmc::bytes32& b) -> serializer& {
34 ser.write(b.bytes, sizeof(b.bytes));
35 return ser;
36 }
37
38 auto operator>>(serializer& deser, evmc::bytes32& b) -> serializer& {
39 deser.read(b.bytes, sizeof(b.bytes));
40 return deser;
41 }
42
44 -> serializer& {
45 return ser << s.m_v << s.m_r << s.m_s;
46 }
48 -> serializer& {
49 return deser >> s.m_v >> s.m_r >> s.m_s;
50 }
51
54 -> serializer& {
55 return ser << at.m_address << at.m_storage_keys;
56 }
57
60 -> serializer& {
61 return deser >> at.m_address >> at.m_storage_keys;
62 }
63
65 -> serializer& {
66 return ser << tx.m_type << tx.m_to << tx.m_value << tx.m_nonce
67 << tx.m_gas_price << tx.m_gas_limit << tx.m_gas_tip_cap
68 << tx.m_gas_fee_cap << tx.m_input << tx.m_access_list
69 << tx.m_sig;
70 }
71
73 -> serializer& {
74 return deser >> tx.m_type >> tx.m_to >> tx.m_value >> tx.m_nonce
75 >> tx.m_gas_price >> tx.m_gas_limit >> tx.m_gas_tip_cap
76 >> tx.m_gas_fee_cap >> tx.m_input >> tx.m_access_list >> tx.m_sig;
77 }
78
81 -> serializer& {
82 return ser << tx.m_from << tx.m_tx;
83 }
84
87 return deser >> tx.m_from >> tx.m_tx;
88 }
89
91 -> serializer& {
92 return ser << l.m_addr << l.m_data << l.m_topics;
93 }
94
96 -> serializer& {
97 return deser >> l.m_addr >> l.m_data >> l.m_topics;
98 }
99
102 -> serializer& {
103 return ser << r.m_tx << r.m_create_address << r.m_gas_used << r.m_logs
104 << r.m_output_data << r.m_ticket_number << r.m_timestamp
105 << r.m_success;
106 }
107
110 return deser >> r.m_tx >> r.m_create_address >> r.m_gas_used
111 >> r.m_logs >> r.m_output_data >> r.m_ticket_number
112 >> r.m_timestamp >> r.m_success;
113 }
114
116 -> serializer& {
117 return ser << k.m_addr << uint8_t{};
118 }
119
121 -> serializer& {
122 uint8_t b{};
123 return deser >> k.m_addr >> b;
124 }
125
128 -> serializer& {
129 return ser << k.m_addr << k.m_key;
130 }
132 -> serializer& {
133 return deser >> k.m_addr >> k.m_key;
134 }
135
138 -> serializer& {
139 return deser >> b.m_ticket_number >> b.m_transactions;
140 }
143 -> serializer& {
144 return ser << b.m_ticket_number << b.m_transactions;
145 }
146
149 return deser >> lq.m_addresses >> lq.m_from_block >> lq.m_to_block
150 >> lq.m_topics;
151 }
154 -> serializer& {
155 return ser << lq.m_addresses << lq.m_from_block << lq.m_to_block
156 << lq.m_topics;
157 }
158
161 return deser >> idx.m_ticket_number >> idx.m_txid >> idx.m_logs;
162 }
165 -> serializer& {
166 return ser << idx.m_ticket_number << idx.m_txid << idx.m_logs;
167 }
168}
Interface for serializing objects into and out of raw bytes representations.
auto operator>>(serializer &deser, parsec::agent::rpc::request &req) -> serializer &
auto operator<<(serializer &ser, const parsec::agent::rpc::request &req) -> serializer &
Type for tracking storage key accesses between accounts.
Describes the parameters of a query on EVM logs - used to transfer these parameters from the getLogs ...
EVM pretend block is a pairing of the blocknumber (equal to the ticket number) and the transactions (...