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

in steem •  8 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!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

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!

  ·  8 years ago (edited)

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.

  ·  8 years ago (edited)

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