TARAXA
data.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <libdevcore/Common.h>
4 #include <libdevcore/Guards.h>
5 #include <libdevcore/Log.h>
6 #include <libdevcore/SHA3.h>
7 
9 #include "common/types.hpp"
11 
12 namespace taraxa {
13 class PbftBlock;
14 }
15 
16 namespace taraxa::final_chain {
17 
23 using LogBlooms = std::vector<LogBloom>;
24 using Nonce = dev::h64;
25 
32  uint64_t gas_used = 0;
34 
35  dev::bytes serializeForDB() const;
36 
38 };
39 
41  BlockHeader() = default;
42  BlockHeader(std::string&& raw_header_data);
43  BlockHeader(std::string&& raw_header_data, const PbftBlock& pbft, uint64_t gas_limit);
44 
45  void setFromPbft(const PbftBlock& pbft);
46 
47  static h256 const& unclesHash();
48 
49  static Nonce const& nonce();
50 
51  static u256 const& difficulty();
52 
53  static h256 const& mixHash();
54 
55  dev::bytes ethereumRlp() const;
56 
59  uint64_t gas_limit = 0;
60  uint64_t timestamp = 0;
63 };
64 
65 static constexpr auto c_bloomIndexSize = 16;
66 static constexpr auto c_bloomIndexLevels = 2;
67 
68 using BlocksBlooms = std::array<LogBloom, c_bloomIndexSize>;
69 
70 struct LogEntry {
74 
76 
77  LogBloom bloom() const;
78 };
79 
80 using LogEntries = std::vector<LogEntry>;
81 
83  uint8_t status_code = 0;
84  uint64_t gas_used = 0;
85  uint64_t cumulative_gas_used = 0;
87  std::optional<Address> new_contract_address;
88 
90 
91  LogBloom bloom() const;
92 };
93 
94 using TransactionReceipts = std::vector<TransactionReceipt>;
95 
98  uint32_t position = 0;
99  bool is_system = false;
100 };
101 
102 struct NewBlock {
104  uint64_t timestamp;
105  std::vector<h256> dag_blk_hashes;
107 };
108 
110  std::shared_ptr<BlockHeader const> final_chain_blk;
113 };
114 
117 } // namespace taraxa::final_chain
Definition: FixedHash.h:35
#define HAS_RLP_FIELDS
Definition: encoding_rlp.hpp:208
h256 transactions_root
Definition: data.hpp:29
std::shared_ptr< BlockHeader const > final_chain_blk
Definition: data.hpp:110
uint32_t position
Definition: data.hpp:98
h256 state_root
Definition: data.hpp:28
h256s topics
Definition: data.hpp:72
bool is_system
Definition: data.hpp:99
uint64_t timestamp
Definition: data.hpp:60
EthBlockNumber number
Definition: data.hpp:61
LogEntries logs
Definition: data.hpp:86
HAS_RLP_FIELDS LogBloom bloom() const
Definition: data.cpp:62
BlockHeader(std::string &&raw_header_data)
static Nonce const & nonce()
Definition: data.cpp:35
static h256 const & unclesHash()
Definition: data.cpp:33
Address address
Definition: data.hpp:71
std::optional< Address > new_contract_address
Definition: data.hpp:87
static h256 const & mixHash()
Definition: data.cpp:39
SharedTransactions trxs
Definition: data.hpp:111
uint8_t status_code
Definition: data.hpp:83
EthBlockNumber period
Definition: data.hpp:97
TransactionReceipts trx_receipts
Definition: data.hpp:112
h256 hash
Definition: data.hpp:106
dev::bytes ethereumRlp() const
Definition: data.cpp:41
bytes extra_data
Definition: data.hpp:62
void setFromPbft(const PbftBlock &pbft)
Definition: data.cpp:26
HAS_RLP_FIELDS LogBloom bloom() const
Definition: data.cpp:51
uint64_t gas_used
Definition: data.hpp:84
bytes data
Definition: data.hpp:73
u256 total_reward
Definition: data.hpp:33
static u256 const & difficulty()
Definition: data.cpp:37
h256 hash
Definition: data.hpp:57
dev::bytes serializeForDB() const
Definition: data.cpp:11
h256 parent_hash
Definition: data.hpp:27
Address author
Definition: data.hpp:58
h256 receipts_root
Definition: data.hpp:30
addr_t author
Definition: data.hpp:103
uint64_t cumulative_gas_used
Definition: data.hpp:85
uint64_t gas_limit
Definition: data.hpp:59
std::vector< h256 > dag_blk_hashes
Definition: data.hpp:105
uint64_t gas_used
Definition: data.hpp:32
LogBloom log_bloom
Definition: data.hpp:31
uint64_t timestamp
Definition: data.hpp:104
std::vector< LogEntry > LogEntries
Definition: data.hpp:80
std::array< LogBloom, c_bloomIndexSize > BlocksBlooms
Definition: data.hpp:68
static constexpr auto c_bloomIndexSize
Definition: data.hpp:65
std::vector< LogBloom > LogBlooms
Definition: data.hpp:23
std::vector< TransactionReceipt > TransactionReceipts
Definition: data.hpp:94
static constexpr auto c_bloomIndexLevels
Definition: data.hpp:66
Definition: data.hpp:40
Definition: data.hpp:70
Definition: data.hpp:102
The PbftBlock class is a PBFT block class that includes PBFT block hash, previous PBFT block hash,...
Definition: pbft_block.hpp:21
std::vector< h256 > h256s
Definition: FixedHash.h:458
std::vector<::byte > bytes
Definition: Common.h:46
FixedHash< 8 > h64
Definition: FixedHash.h:456
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u256
Definition: Common.h:98
FixedHash< 256 > h2048
Definition: FixedHash.h:449
Definition: dag_block_proposer.hpp:21
Definition: config.hpp:8
uint64_t EthBlockNumber
Definition: types.hpp:23
std::vector< SharedTransaction > SharedTransactions
Definition: transaction.hpp:81