miner.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef MINER_H
  2. #define MINER_H
  3. #include <QObject>
  4. #include <QRunnable>
  5. #include <QMutex>
  6. #include <array>
  7. #include <chrono>
  8. #ifdef _WIN32
  9. #include <ws2tcpip.h>
  10. #else
  11. #include <arpa/inet.h>
  12. #endif
  13. #include "widget.h"
  14. const size_t KEYSIZE = 32;
  15. const size_t ADDRIPV6 = 16;
  16. typedef std::array<uint8_t, KEYSIZE> Key;
  17. typedef std::array<uint8_t, ADDRIPV6> Address;
  18. struct KeysBox
  19. {
  20. Key PublicKey;
  21. Key PrivateKey;
  22. };
  23. class Miner : public QObject, public QRunnable
  24. {
  25. Q_OBJECT
  26. public:
  27. Miner(Widget* w = 0);
  28. static void dropCounters();
  29. signals:
  30. void setLog(QString, quint64, quint64, quint64);
  31. void setAddr(QString);
  32. private:
  33. Widget *window;
  34. void initializeLogFile();
  35. void logStatistics();
  36. void logKeys(const Address& raw, const KeysBox keys);
  37. QString getBase32(const Address& rawAddr);
  38. QString pickupStringForMeshname(QString str);
  39. QString pickupMeshnameForOutput(QString str);
  40. QString keyToString(const Key& key);
  41. QString hexArrayToString(const uint8_t* bytes, int length);
  42. QString getAddress(const Address& rawAddr);
  43. KeysBox getKeyPair();
  44. void getRawAddress(int lErase, Key InvertedPublicKey, Address& rawAddr);
  45. Key bitwiseInverse(const Key& key);
  46. int getOnes(const Key& value);
  47. void processFortuneKey(const KeysBox& keys);
  48. static std::time_t m_sygstartedin; // для вывода времени работы
  49. static int m_countsize; // определяет периодичность вывода счетчика
  50. static std::atomic<quint64> m_totalcount; // общий счетчик
  51. static std::atomic<quint64> m_countfortune; // счетчик нахождений
  52. static std::chrono::steady_clock::duration m_blocks_duration;
  53. static QMutex m_mtx;
  54. protected:
  55. void run() override;
  56. };
  57. #endif // MINER_H