TARAXA
transaction.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <string>
5 #include <vector>
6 
7 #include "TransactionObject.h"
10 
11 namespace graphql::taraxa {
12 
13 class Transaction final : public std::enable_shared_from_this<Transaction> {
14  public:
15  explicit Transaction(std::shared_ptr<::taraxa::final_chain::FinalChain> final_chain,
16  std::shared_ptr<::taraxa::TransactionManager> trx_manager,
17  std::function<std::shared_ptr<object::Block>(::taraxa::EthBlockNumber)>,
18  std::shared_ptr<::taraxa::Transaction> transaction) noexcept;
19 
20  response::Value getHash() const noexcept;
21  response::Value getNonce() const noexcept;
22  std::optional<int> getIndex() const noexcept;
23  std::shared_ptr<object::Account> getFrom(std::optional<response::Value>&& blockArg) const;
24  std::shared_ptr<object::Account> getTo(std::optional<response::Value>&& blockArg) const;
25  response::Value getValue() const noexcept;
26  response::Value getGasPrice() const noexcept;
27  response::Value getGas() const noexcept;
28  response::Value getInputData() const noexcept;
29  std::shared_ptr<object::Block> getBlock() const;
30  std::optional<response::Value> getStatus() const noexcept;
31  std::optional<response::Value> getGasUsed() const noexcept;
32  std::optional<response::Value> getCumulativeGasUsed() const noexcept;
33  std::shared_ptr<object::Account> getCreatedContract(std::optional<response::Value>&& blockArg) const noexcept;
34  std::optional<std::vector<std::shared_ptr<object::Log>>> getLogs() const noexcept;
35  response::Value getR() const noexcept;
36  response::Value getS() const noexcept;
37  response::Value getV() const noexcept;
38 
39  private:
40  std::shared_ptr<::taraxa::final_chain::FinalChain> final_chain_;
41  std::shared_ptr<::taraxa::TransactionManager> trx_manager_;
42  std::function<std::shared_ptr<object::Block>(::taraxa::EthBlockNumber)> get_block_by_num_;
43  std::shared_ptr<::taraxa::Transaction> transaction_;
44  // Caching for performance
45  mutable std::optional<::taraxa::final_chain::TransactionReceipt> receipt_;
46  mutable std::optional<::taraxa::final_chain::TransactionLocation> location_;
47 };
48 
49 } // namespace graphql::taraxa
Definition: transaction.hpp:13
std::optional< response::Value > getStatus() const noexcept
Definition: transaction.cpp:78
std::shared_ptr<::taraxa::TransactionManager > trx_manager_
Definition: transaction.hpp:41
std::optional<::taraxa::final_chain::TransactionLocation > location_
Definition: transaction.hpp:46
response::Value getS() const noexcept
Definition: transaction.cpp:128
std::shared_ptr< object::Account > getCreatedContract(std::optional< response::Value > &&blockArg) const noexcept
Definition: transaction.cpp:102
std::optional<::taraxa::final_chain::TransactionReceipt > receipt_
Definition: transaction.hpp:45
std::shared_ptr< object::Account > getTo(std::optional< response::Value > &&blockArg) const
Definition: transaction.cpp:46
std::shared_ptr<::taraxa::Transaction > transaction_
Definition: transaction.hpp:43
std::optional< response::Value > getCumulativeGasUsed() const noexcept
Definition: transaction.cpp:94
std::optional< response::Value > getGasUsed() const noexcept
Definition: transaction.cpp:86
std::shared_ptr< object::Account > getFrom(std::optional< response::Value > &&blockArg) const
Definition: transaction.cpp:35
response::Value getHash() const noexcept
Definition: transaction.cpp:23
std::shared_ptr<::taraxa::final_chain::FinalChain > final_chain_
Definition: transaction.hpp:40
Transaction(std::shared_ptr<::taraxa::final_chain::FinalChain > final_chain, std::shared_ptr<::taraxa::TransactionManager > trx_manager, std::function< std::shared_ptr< object::Block >(::taraxa::EthBlockNumber)>, std::shared_ptr<::taraxa::Transaction > transaction) noexcept
Definition: transaction.cpp:14
response::Value getR() const noexcept
Definition: transaction.cpp:126
response::Value getInputData() const noexcept
Definition: transaction.cpp:66
std::optional< int > getIndex() const noexcept
Definition: transaction.cpp:27
response::Value getGasPrice() const noexcept
Definition: transaction.cpp:60
response::Value getV() const noexcept
Definition: transaction.cpp:130
response::Value getValue() const noexcept
Definition: transaction.cpp:58
std::optional< std::vector< std::shared_ptr< object::Log > > > getLogs() const noexcept
Definition: transaction.cpp:111
response::Value getNonce() const noexcept
Definition: transaction.cpp:25
response::Value getGas() const noexcept
Definition: transaction.cpp:62
std::shared_ptr< object::Block > getBlock() const
Definition: transaction.cpp:70
std::function< std::shared_ptr< object::Block >::taraxa::EthBlockNumber)> get_block_by_num_
Definition: transaction.hpp:42
Definition: account.hpp:10
uint64_t EthBlockNumber
Definition: types.hpp:23