BlockChainLoader.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. This file is part of cpp-ethereum.
  3. cpp-ethereum is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 3 of the License, or
  6. (at your option) any later version.
  7. cpp-ethereum is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. /** @file BlockChainLoader.h
  15. * @author Marek Kotewicz <marek@ethdev.com>
  16. * @date 2015
  17. */
  18. #pragma once
  19. #include <string>
  20. #include <json/json.h>
  21. #include <libdevcore/TransientDirectory.h>
  22. #include <libethereum/BlockChain.h>
  23. #include <libethereum/Block.h>
  24. #include <libethashseal/GenesisInfo.h>
  25. namespace dev
  26. {
  27. namespace test
  28. {
  29. /**
  30. * @brief Should be used to load test blockchain from json file
  31. * Loads the blockchain from json, creates temporary directory to store it, removes the directory on dealloc
  32. */
  33. class BlockChainLoader
  34. {
  35. public:
  36. BlockChainLoader(Json::Value const& _json, eth::Network _sealEngineNetwork = eth::Network::Test);
  37. eth::BlockChain const& bc() const { return *m_bc; }
  38. eth::State const& state() const { return m_block.state(); } // TODO remove?
  39. eth::Block const& block() const { return m_block; }
  40. private:
  41. TransientDirectory m_dir;
  42. std::unique_ptr<eth::BlockChain> m_bc;
  43. eth::Block m_block;
  44. };
  45. }
  46. }