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