Steem Mining in Microsoft Windows : A Builder's Guide (Part 1)

in #steem8 years ago (edited)

This is a guide for users who like to build a Windows-based Steem miner. Many thanks to @arhag who helped me clear the last Win-build error.

Edit: A user requested the rar files be changed to zip files. These files are changed. Winrar is no longer needed.

Prerequisite

You will need to have a basic level of understanding of Microsoft Windows and Visual Studio compilation.

You will need have 64bit Microsoft Windows7 and above, at least 4GB RAM and 500GB disk space. And a good Internet connection.


Dependencies

First download the following software:

SoftwareLink
Visual Studio 2013 Express (Desktop)https://www.microsoft.com/en-sg/download/details.aspx?id=44914
CMake 2.8.12.2https://cmake.org/files/v2.8/cmake-2.8.12.2-win32-x86.zip
Boost 1.58.0http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.zip
OpenSSLhttps://www.openssl.org/source/
Doxygenhttp://www.stack.nl/~dimitri/doxygen/download.html
ActivePerl 5.16.3 for Windowshttp://www.activestate.com/activeperl/downloads
Python (2.7 or 3.x)https://www.python.org/

Note:

  • Make sure you have sufficient space for Visual Studio 2013. The download file itself is huge, taking up a few Gig of space.
  • Install VS2013 and you will need to use it to compile the rest.

Build Boost

Use this guide: http://www.boost.org/doc/libs/1_58_0/more/getting_started/windows.html

>bootstrap.bat

>b2 --build-dir=build-directory toolset=msvc-12.0  address-model=64  --build-type=complete stage

Note:

The compiled library is in this folder - \boost_1_58_0\stage\lib

Build OpenSSL

Use this guide: http://p-nand-q.com/programming/windows/building_openssl_with_visual_studio_2013.html

>Look under the section "Building the 64-bit Release Static Library"
>Change to the source directory, for example T:\openssl-src-64
>Run perl Configure VC-WIN64A --prefix=T:\Build-OpenSSL-VC64-Release-Static. This will make T:\Build-OpenSSL-VC64-Release-Static your output directory; it should be fairly obvious how you can change that.
>Run ms\do_win64a
>Run nmake -f ms\nt.mak
>Run nmake -f ms\nt.mak install 

Note:

If you need to dive deeper, you can refer to this guide - http://developer.covenanteyes.com/building-openssl-for-visual-studio/

Build Doxygen

Use this guide: http://www.stack.nl/~dimitri/doxygen/download.html

>git clone https://github.com/doxygen/doxygen.git

>cd doxygen

>cmake.exe -G "Visual Studio 12 Win64"

>Open the generated Visual Studio solution file and use it to compile doxygen

[]


> Right-click on the "ALL_BUILD" project file and click Build.

Let's Check Out Steem

I have encountered numerous obstacles with building Steem on Visual Studio 2013, namely it does not follow C++ standards closely. I am sharing with you a working build and possible pit holes to watch out for.

There are some changes needed to be make to the original Steem source codes to make it compatible with Windows. I have made the pull requests and they are pending review and approval by the developers. For now, I place the changes in btscube repository in github.

>Add CMake.exe to the PATH environment variable

>L:\mkdir steem

>cd steem

>https://github.com/btscube/steem

>cd steem

>git submodule update --init --recursive


>mkdir build

>cd build

>set BOOST_ROOT=L:\boost_1_58_0

>set OPENSSL_ROOT_DIR=L:\OpenSSL 

>set DOXYGEN_EXECUTABLE=L:\doxygen\bin\doxygen.exe

>cmake.exe -G "Visual Studio 12 Win64" -DBOOST_ROOT="$BOOST_ROOT" -DOPENSSL_ROOT_DIR="$OPENSSL_ROOT" -DDOXYGEN_EXECUTABLE="$DOXYGEN_EXECUTABLE" -DCMAKE_BUILD_TYPE=Release -DLOW_MEMORY_NODE=ON ..\steem

You should see an output as follows:

-- BUILD_STEEM_TESTNET: OFF
-- LOW_MEMORY_NODE: ON
--
--              CONFIGURING FOR LOW MEMORY NODE
--
-- Using custom FindBoost.cmake
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   thread
--   date_time
--   system
--   filesystem
--   program_options
--   signals
--   serialization
--   chrono
--   unit_test_framework
--   context
--   locale
-- Using custom FindBoost.cmake
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   coroutine
-- Configuring Steem on WIN32
-- tcl INCLUDE PATH: /include
-- Could NOT find Tclsh (missing:  TCL_TCLSH)
-- Could NOT find TCL (missing:  TCL_LIBRARY)
-- Could NOT find TCLTK (missing:  TCL_LIBRARY TK_LIBRARY TK_INCLUDE_PATH)
-- Could NOT find TK (missing:  TK_LIBRARY TK_INCLUDE_PATH)
-- tcl_library: TCL_LIBRARY-NOTFOUND
-- Configuring project fc located in: L:/stm2/steem/libraries/fc
-- Configuring fc to build on Win32
-- Using custom FindBoost.cmake
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   thread
--   date_time
--   system
--   filesystem
--   program_options
--   signals
--   serialization
--   chrono
--   unit_test_framework
--   context
--   locale
--   iostreams
-- Using custom FindBoost.cmake
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   coroutine
-- Setting up OpenSSL root and include vars to L:\OpenSSL, L:\OpenSSL/include
-- Found OpenSSL: L:/openssl/lib/ssleay32.lib;L:/openssl/lib/libeay32.lib (found version "1.0.1g")
** websocketpp

=========== Used Build Configuration =============

-- ENABLE_CPP11        = ON
-- BUILD_EXAMPLES      = OFF
-- BUILD_TESTS         = OFF

-- WEBSOCKETPP_ROOT    = L:/steem/steem/libraries/fc/vendor/websocketpp
-- WEBSOCKETPP_BIN     = L:/steem/build/libraries/fc/vendor/websocketpp/bin
-- WEBSOCKETPP_LIB     = L:/steem/build/libraries/fc/vendor/websocketpp/lib
-- Install prefix      = L:/steem/steem/libraries/fc/vendor/websocketpp/install

-- WEBSOCKETPP_BOOST_LIBS        =
-- WEBSOCKETPP_PLATFORM_LIBS     =
-- WEBSOCKETPP_PLATFORM_TLS_LIBS =

-- OPENSSL_FOUND        = TRUE
-- OPENSSL_INCLUDE_DIR     = L:\OpenSSL/include
-- OPENSSL_LIBRARIES = L:/openssl/lib/ssleay32.lib;L:/openssl/lib/libeay32.lib
-- OPENSSL_VERSION = 1.0.1g

-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
-- Readline path
-- Could NOT find Readline (missing:  Readline_INCLUDE_DIR Readline_LIBRARY)
-- eay=L:/openssl/bin/libeay32.dll
-- Finished fc module configuration...
--

             CONFIGURED FOR STEEM NETWORK


--

             CONFIGURED FOR LOW MEMORY NODE


-- Configuring done
-- Generating done
-- Build files have been written to: L:/steem/build

Note:

  • The example above uses drive L:. You may use other path location.
  • This configuration builds steem as a low-memory node, you can opt to turn it off.
  • This configuration has "ENABLE_CONTENT_PATCHING" off. You can opt to turn it on by adding this parameter to the cmake command "-ENABLE_CONTENT_PATCHING=ON"
  • You can safely ignore the error with ncurses and readline. They are not really needed.

Let's build Steem!

CMake will generate a list of files and folders for the build.

[]

>Open the Steem.sln solution

On the right plane, you will see a list of projects.

[]

>Right-click the secp256k1 project and unload it.

>Get the extra file secp256k1-zkp.zip from 
https://mega.nz/#!2Zo0GKII!sX2kIA-1hiRcjvLei1cCz7gqdCNJC9IjnUwvClrUK0o


>Extra the folder from the rar file and replace the your local subfolder eg L:\steem\steem\libraries\fc\vendor\secp256k1-zkp with it.

Note:

  • The original secp256k1 project included is slow in mining. We will use a highly optimised one from btscube github instead.

[]

>Right-click on the steemd project and build it

>Once it is successfully built, you will find steem.exe in the folder \build\programs\steemd\Release

Now we are ready to build the cli_wallet.

[]

>Right-click on the cli_wallet project and build it

>Once it is successfully built, you will find cli_wallet.exe in the folder \build\programs\cli_wallet\Release

Running the newly built Steem

I will touch on running Steem in Part 2 of the guide. You will need the following runtime components.

Steem Runtime ComponentsLink
Visual C++ Redistributable Packages for Visual Studio 2013https://www.microsoft.com/en-us/download/details.aspx?id=40784
runtimeparts.ziphttps://mega.nz/#!2Zo0GKII!sX2kIA-1hiRcjvLei1cCz7gqdCNJC9IjnUwvClrUK0o

Stay tuned for Part 2!

Sort:  

Very hard to understand and confusing. Is there any easy method to mine Steem in Windows PC?

The above is for the adventurous.

You can get the compiled version here - https://github.com/btscube/steem/releases/tag/v0.8.5b and save the trouble.

Thanks for your work! I'll check this out now. Everythings a'ready to go minin'.

Thank you, it's a good tutorial.

A little on the long side, but great article. Thanks a lot. I can finally get up and running mining STEEM. Too bad I wasn't doing this months ago ... sigh.

Don't worry man, steam is still young. You'll have plenty of time to mine and make a HUGE Profit

Cheers!

that https://github.com/btscube/steem/releases/tag/v0.8.5b, don't work. can somebody help? do config fine but still not working. some another guy, same problem. i don't mean that link, that steemd.exe.

it dont work now we wait for a new version

This is great! I have been looking for Steem code for WIndows. Thanks for sharing!

great tutorial

Fantastic work. Will save me getting a headache tomorrow when I try compiling again. Thanks for your time on this.

Thanks for making this guide! I have one problem though, when I get to actually compiling Steem.. I just cannot make it find the boost headers:

**
CMake Error at libraries/fc/CMakeModules/FindBoost.cmake:1129 (message):
Unable to find the requested Boost libraries.

Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing
Boost's headers.
Call Stack (most recent call first):
libraries/fc/CMakeLists.txt:119 (FIND_PACKAGE)
**

I compiled boost as above and put its build dir as "D:\Build\boost\boost_release".
Ive tried numerous folders and env variables (like Boost_Include_dir) and none of them ever past the find Boost check. What exactly is meant to be in the folder specified as "BOOST_ROOT"?

thanks again!

Any tips? I've even tried downloading pre-built Boost Libs and it still cannot find boost when compiling Steem. It dies at the cmake. Ive set BOOST_ROOT to various directories in the structure, thinking now this isnt a "cant find problem" but something else??

Also, in the section above about your changes to the Steem source and Git Hub.. you seem to be missing a step as you just list the URL. Assume its a Git checkout command thats missing?

Warning! mining STEEM is not possible anymore.
Save your time.

Can I mine STEEM?
No. Proof of work mining has been removed from Steem.
https://steemit.com/faq.html#Can_I_mine_STEEM