diff --git a/libethcore/Ethash.cpp b/libethcore/Ethash.cpp
deleted file mode 100644
index a6720850e..000000000
--- a/libethcore/Ethash.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- This file is part of cpp-ethereum.
-
- cpp-ethereum is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- cpp-ethereum is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with cpp-ethereum. If not, see .
-*/
-/** @file Ethash.cpp
- * @author Gav Wood
- * @date 2014
- */
-
-#include "Ethash.h"
-#include "EthashAux.h"
-
-namespace dev
-{
-namespace eth
-{
-
-h256 const& Ethash::BlockHeaderRaw::seedHash() const
-{
- if (!m_seedHash)
- m_seedHash = EthashAux::seedHash((unsigned)m_number);
- return m_seedHash;
-}
-
-}
-}
diff --git a/libethcore/Ethash.h b/libethcore/Ethash.h
deleted file mode 100644
index fc989f624..000000000
--- a/libethcore/Ethash.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- This file is part of cpp-ethereum.
-
- cpp-ethereum is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- cpp-ethereum is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with cpp-ethereum. If not, see .
-*/
-/** @file Ethash.h
- * @author Gav Wood
- * @date 2014
- *
- * A proof of work algorithm.
- */
-
-#pragma once
-
-#include
-#include
-#include
-#include "Common.h"
-#include "Miner.h"
-#include "Farm.h"
-
-class ethash_cl_miner;
-class ethash_cuda_miner;
-
-namespace dev
-{
-
-class RLP;
-class RLPStream;
-
-namespace eth
-{
-
-class BlockInfo;
-class EthashCLHook;
-class EthashCUDAHook;
-
-class Ethash
-{
-public:
- using Nonce = h64;
-
- class BlockHeaderRaw: public BlockInfo
- {
-
- public:
- h256 const& seedHash() const;
- Nonce const& nonce() const { return m_nonce; }
-
- protected:
- BlockHeaderRaw() = default;
- BlockHeaderRaw(BlockInfo const& _bi): BlockInfo(_bi) {}
-
- void clear() { m_mixHash = h256(); m_nonce = Nonce(); }
-
- private:
- Nonce m_nonce;
- h256 m_mixHash;
-
- mutable h256 m_seedHash;
- };
- using BlockHeader = BlockHeaderPolished;
-};
-
-}
-}
diff --git a/libethcore/EthashAux.cpp b/libethcore/EthashAux.cpp
index fae8ce2e1..e83e8a493 100644
--- a/libethcore/EthashAux.cpp
+++ b/libethcore/EthashAux.cpp
@@ -33,6 +33,7 @@
#include
#include "BlockInfo.h"
#include "Exceptions.h"
+
using namespace std;
using namespace chrono;
using namespace dev;
@@ -48,6 +49,13 @@ const unsigned EthashProofOfWork::defaultGlobalWorkSizeMultiplier = 4096; // * C
const unsigned EthashProofOfWork::defaultMSPerBatch = 0;
const EthashProofOfWork::WorkPackage EthashProofOfWork::NullWorkPackage = EthashProofOfWork::WorkPackage();
+h256 const& Ethash::BlockHeaderRaw::seedHash() const
+{
+ if (!m_seedHash)
+ m_seedHash = EthashAux::seedHash((unsigned)m_number);
+ return m_seedHash;
+}
+
EthashAux::~EthashAux()
{
}
diff --git a/libethcore/EthashAux.h b/libethcore/EthashAux.h
index e41c6f130..1970f0bea 100644
--- a/libethcore/EthashAux.h
+++ b/libethcore/EthashAux.h
@@ -25,16 +25,42 @@
#include
#include
#include
-#include "Ethash.h"
+#include "BlockInfo.h"
namespace dev
{
namespace eth
{
-
struct DAGChannel: public LogChannel { static const char* name(); static const int verbosity = 1; };
+class Ethash
+{
+public:
+ using Nonce = h64;
+
+ class BlockHeaderRaw: public BlockInfo
+ {
+
+ public:
+ h256 const& seedHash() const;
+ Nonce const& nonce() const { return m_nonce; }
+
+ protected:
+ BlockHeaderRaw() = default;
+ BlockHeaderRaw(BlockInfo const& _bi): BlockInfo(_bi) {}
+
+ void clear() { m_mixHash = h256(); m_nonce = Nonce(); }
+
+ private:
+ Nonce m_nonce;
+ h256 m_mixHash;
+
+ mutable h256 m_seedHash;
+ };
+ using BlockHeader = BlockHeaderPolished;
+};
+
/// Proof of work definition for Ethash.
struct EthashProofOfWork
{
diff --git a/libethcore/EthashCUDAMiner.h b/libethcore/EthashCUDAMiner.h
index ed8b8200c..e5217d8b6 100644
--- a/libethcore/EthashCUDAMiner.h
+++ b/libethcore/EthashCUDAMiner.h
@@ -28,10 +28,14 @@ along with cpp-ethereum. If not, see .
#include "EthashAux.h"
#include "Miner.h"
+class ethash_cuda_miner;
+
namespace dev
{
namespace eth
{
+class EthashCUDAHook;
+
class EthashCUDAMiner : public GenericMiner, Worker
{
friend class dev::eth::EthashCUDAHook;
diff --git a/libethcore/EthashGPUMiner.cpp b/libethcore/EthashGPUMiner.cpp
index aa6f4adda..e9376f854 100644
--- a/libethcore/EthashGPUMiner.cpp
+++ b/libethcore/EthashGPUMiner.cpp
@@ -27,6 +27,7 @@
#include
#include
#include
+
using namespace std;
using namespace dev;
using namespace eth;
diff --git a/libethcore/EthashGPUMiner.h b/libethcore/EthashGPUMiner.h
index 49efd652b..6e39bb747 100644
--- a/libethcore/EthashGPUMiner.h
+++ b/libethcore/EthashGPUMiner.h
@@ -24,14 +24,17 @@
#pragma once
#if ETH_ETHASHCL
-#include "libdevcore/Worker.h"
+#include
#include "EthashAux.h"
#include "Miner.h"
+class ethash_cl_miner;
+
namespace dev
{
namespace eth
{
+class EthashCLHook;
class EthashGPUMiner: public GenericMiner, Worker
{