QtIotaBlock 0.4.1
Library with block types on IOTA
qessences.hpp
1 #pragma once
2 
3 #include "block/carray.hpp"
4 #include "block/qinputs.hpp"
5 #include "block/qoutputs.hpp"
6 #include <QByteArray>
7 #include <QDataStream>
8 #include <QJsonArray>
9 #include <QJsonObject>
10 #include <QJsonValue>
11 
12 namespace qiota
13 {
14 namespace qblocks
15 {
16 
17 class Payload;
18 
19 class Transaction_Essence;
20 
21 class Essence
22 {
23  public:
24  enum types : quint8
25  {
26  Transaction_typ = 1
27  };
28  Essence(types typ);
29  template <class from_type> static std::shared_ptr<const Essence> from_(from_type &val);
30 
31  static std::shared_ptr<const Essence> Transaction(const quint64 &network_id_m, const pvector<const Input> &inputs_m,
32  const c_array &inputs_commitment_m,
33  const pvector<const Output> &outputs_m,
34  const std::shared_ptr<const Payload> &payload_m = nullptr);
35  virtual void serialize(QDataStream &out) const;
36  virtual QJsonObject get_Json(void) const;
37 
38  types type(void) const
39  {
40  return type_m;
41  }
42  QByteArray get_hash(void) const;
43 
44  private:
45  const types type_m;
46 };
47 
49 {
50  public:
51  Transaction_Essence(const quint64 &network_id_m, const pvector<const Input> &inputs_m,
52  const c_array &inputs_commitment_m, const pvector<const Output> &outputs_m,
53  const std::shared_ptr<const Payload> &payload_m = nullptr);
54  Transaction_Essence(const QJsonValue &val);
56  void serialize(QDataStream &out) const;
57  QJsonObject get_Json(void) const;
58 
59  private:
60  quint64 network_id_; // The unique value denoting whether the block was meant for mainnet, shimmer, testnet, or a
61  // private network.
62  pvector<const Input> inputs_;
63  c_array
64  inputs_commitment_; // BLAKE2b-256 hash serving as a commitment to the serialized outputs referenced by Inputs.
65  pvector<const Output> outputs_;
67 };
68 
69 }; // namespace qblocks
70 }; // namespace qiota
Definition: qessences.hpp:22
static std::shared_ptr< const Essence > from_(from_type &val)
Definition: qessences.cpp:20
Essence(types typ)
Definition: qessences.cpp:13
virtual QJsonObject get_Json(void) const
Definition: qessences.cpp:9
QByteArray get_hash(void) const
Definition: qessences.cpp:14
types type(void) const
Definition: qessences.hpp:38
virtual void serialize(QDataStream &out) const
Definition: qessences.cpp:8
static std::shared_ptr< const Essence > Transaction(const quint64 &network_id_m, const pvector< const Input > &inputs_m, const c_array &inputs_commitment_m, const pvector< const Output > &outputs_m, const std::shared_ptr< const Payload > &payload_m=nullptr)
Definition: qessences.cpp:36
types
Definition: qessences.hpp:25
@ Transaction_typ
Definition: qessences.hpp:26
Definition: qessences.hpp:49
QJsonObject get_Json(void) const
Definition: qessences.cpp:106
Transaction_Essence(const quint64 &network_id_m, const pvector< const Input > &inputs_m, const c_array &inputs_commitment_m, const pvector< const Output > &outputs_m, const std::shared_ptr< const Payload > &payload_m=nullptr)
Definition: qessences.cpp:44
void serialize(QDataStream &out) const
Definition: qessences.cpp:84
Byte Array that takes care of storing the objects in serialized form.
Definition: carray.hpp:30
Definition: carray.hpp:22