Pages:
Author

Topic: Coin making guides (Read 6506 times)

copper member
Activity: 134
Merit: 1
August 29, 2019, 07:34:56 AM
#52
Im providing coin build services, mobile wallets Pm for info

Ok, I figured it out I think.

So here now is what I have, I have CXX in a build folder of the Wallet, Boostrapped, all Libraries, all Paths, I have the PATH set to the Cmake Bin so I can >cmake.exe and I have the Submodule of the Coin in the Wallet src folder and I am getting Qt 5.9 right now
newbie
Activity: 1
Merit: 0
October 07, 2018, 10:45:21 AM
#51
Another service: https://stefa.me
member
Activity: 98
Merit: 11
December 19, 2017, 09:12:14 PM
#50
Here is my Config.json file, what could possibly being causing this not to let me create a wallet in the final compile? And I have the Daemon running on 2 computers, but I am waiting a few hours just to see if they ever find each other.

Code:
{
    "base_coin": {
        "name": "bytecoin",
        "git": "https://github.com/amjuarez/bytecoin.git"
    },
    "core": {
        "SEED_NODES": [
            "165.227.xxx.xxx:47145",
            "165.227.xxx.xxx:47145"
        ],
        "EMISSION_SPEED_FACTOR": 18,
        "DIFFICULTY_TARGET": 120,
        "CRYPTONOTE_DISPLAY_DECIMAL_POINT": 12,
        "MONEY_SUPPLY": "18446744073709551615",
        "GENESIS_BLOCK_REWARD": "0",
        "DEFAULT_DUST_THRESHOLD": 1000000,
        "MINIMUM_FEE": 1000000,
        "CRYPTONOTE_MINED_MONEY_UNLOCK_WINDOW": 10,
        "CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE": 100000,
        "MAX_TRANSACTION_SIZE_LIMIT": 100000,
        "CRYPTONOTE_PUBLIC_ADDRESS_BASE58_PREFIX": 86,
        "DIFFICULTY_CUT_V1": 60,
        "DIFFICULTY_CUT_V2": 60,
        "DIFFICULTY_CUT": 0,
        "DIFFICULTY_LAG_V1": 15,
        "DIFFICULTY_LAG_V2": 15,
        "DIFFICULTY_LAG": 0,
        "DIFFICULTY_WINDOW_V1": 720,
        "DIFFICULTY_WINDOW_V2": 720,
        "DIFFICULTY_WINDOW": 17,
        "ZAWY_DIFFICULTY_V3": 1,
        "ZAWY_DIFFICULTY_DIFFICULTY_BLOCK_VERSION": 3,
        "P2P_DEFAULT_PORT": 13200,
        "RPC_DEFAULT_PORT": 13171,
        "BYTECOIN_NETWORK": "9714f3c1-b06f-16e9-adce-3e6723dbfcd1",
        "CRYPTONOTE_NAME": "xxxxCoin",
        "DAEMON_NAME": "xxxxCoind",
        "GENESIS_COINBASE_TX_HEX": "010a01ff0001ffffffffffff0f029b2e4c0281c0b02e7c53291a94d1d0cbff8883f8024f5142ee494ffbbd0880712101b8fa97bd629d191fd8e1ce348de0b27abc5182cce772c27d37cac2d63bd10745",
        "CHECKPOINTS": "0, 010a01ff0001ffffffffffff0f029b2e4c0281c0b02e7c53291a94d1d0cbff8883f8024f5142ee494ffbbd0880712101b8fa97bd629d191fd8e1ce348de0b27abc5182cce772c27d37cac2d63bd10745",
        "MAX_BLOCK_SIZE_INITIAL": 100000
    },
    "extensions": [
        "core/bytecoin.json",
        "print-genesis-tx.json"
    ]
member
Activity: 98
Merit: 11
December 11, 2017, 01:34:26 PM
#49
Ok, so, I finished Compiling last night.

The first time, it went to like 50% then some random error. Fixed it. Then it went to 100% and ended right at the executable and said there was no file with the name of my coin. Then I realized that the Symbolic Link I created had an extra folder, because the git had an extra folder. So it was saying "That file doesn't exist".

I figured that out, and now I have the compiler running at 100%, and spitting stuff out.

But the first time, I got 4 things, Connectivity_Tool, Walletd, Minderd and SimpleWallet. They are like desktop icons, and it says they are "executable files" but the computer can't find anything to open then with on linux or windows.

So I tried deleting the build folder and starting fresh, kind of like you do with the Cache. And what came out of that was just 1 single executable that has the name of the coin, and when you click it the splash image comes up, but nothing happens.

So today, I might start from scratch and try to make the coin that way.
member
Activity: 98
Merit: 11
December 10, 2017, 05:31:34 AM
#48
Ok, so there is something about the qt5gui Libraries, I fixed all the other stuff, then moved out of src into the main wallet folder, and now both cmakelists and makefile executions are bringing up qt5gui Library errors. And I found the Libraries it says it can't find, and this was the same exact last problem I had on Windows.

I found this on a Bitcoin thread and put it on Github so it is easier to download. I am about to try this, then go read more about qt5 and qt5gui_dir errors and everything. But once this is done this is it. It's fininsh.
https://github.com/MahatmaJapa/AltcoinCompiler
member
Activity: 98
Merit: 11
December 10, 2017, 02:51:34 AM
#47
Ok, so I am on the very very last step.

So, Cryptonote had a bug, and it was corrected here
https://github.com/cryptonotefoundation/cryptonote/commit/531dacc47d686c158fad47e9bb72f6802edcce89

But I don't know where to put that line of code. I am trying to figure it out right now but if anyone can figure out where that goes, post it here.
member
Activity: 98
Merit: 11
December 09, 2017, 03:05:32 AM
#46
Alright, so on 1 Computer I am using the XMD Coin guide and building the Wallet, and on the other Computer I am using a big mixture of guides and am trying to compile the Wallet, but the Wallet already has a Compiled Coin. And on both, I am getting "Access Denied" and then a popup that says "This app can not run on your PC".

And then when I move the directory to the cmake bin, and do cmake, it just does like a normal command. But when I do it in the Wallet, or in the Coin on the other Computer. It says "This app can not run on your PC".

So I think this means that I need Linux. I already tried signing off and signing back on. And I have all the right libraries, and I already have done a build, I just had it pointed at the Cmake bin folder in the command line, so it made a weird file.

Now I am pointing at the Wallet, which was giving me error messages before, and now I am getting a "This app can't run on your PC" message. So I am pretty sure that it this is it. I probably just need to redo the Wallet part on Ubuntu.

If anyone knows why Windows would say that, let me know. And there is more info in the Bytecoin thread link.
member
Activity: 98
Merit: 11
December 08, 2017, 03:21:59 PM
#45
Ok, I figured it out I think.

So here now is what I have, I have CXX in a build folder of the Wallet, Boostrapped, all Libraries, all Paths, I have the PATH set to the Cmake Bin so I can >cmake.exe and I have the Submodule of the Coin in the Wallet src folder and I am getting Qt 5.9 right now
member
Activity: 98
Merit: 11
December 08, 2017, 12:56:42 PM
#44
Ok, so finally. I actually made a Coin, now I am making a Wallet. I used Cryptonote.
https://bytecointalk.org/showthread.php?tid=1218

Can anyone help with the last part.

I did the Build with the "ALL_BUILD" and all that, and I got 3 Files out:

miniupnpc.dll
miniupnpc.exp
miniupnpc.lib

What are these and how do they become a Wallet?


I am trying this guide also too now.
https://github.com/upggr/xmd-coin
member
Activity: 114
Merit: 10
September 05, 2017, 01:44:23 PM
#43
Any of these guides from 2017 I am wanting to to fork the latest ltc or dash. Everything appears to be hardcoded or something.
member
Activity: 98
Merit: 11
September 05, 2017, 10:30:30 AM
#42
Ok, I am now taking a Programming class. So I will know a little bit more about coding very soon. If anyone wants to use these guides, or talk about making a coin, send me a message. I am going to create a few more threads in order to promote the creation of new softwares around Cryptocurrency.
member
Activity: 98
Merit: 11
April 22, 2017, 08:41:24 PM
#41
Sorry I have not gotten through this guide yet, something came up from my job and I am having to type up a bunch of stuff from a meeting we had. I will finish testing this guide tonight and at the latest get all the way through it tomorrow morning. I will go through a few more guides tomorrow also. I am just having to type up like 20 pages from a meeting we had, and it is taking up a lot of my time today.
member
Activity: 98
Merit: 11
April 22, 2017, 04:29:33 PM
#40
3rd Guide

Here is a link to the guide
https://bitcointalksearch.org/topic/building-headless-bitcoin-and-bitcoin-qt-on-windows-149479

Ok, so I am trying to do this guide now, which is a Windows build, and while everything is downloading fine, I already think I ran into a problem, but I have not done any compiling or anything yet, I am not sure.

The guide says:

Quote
1.3. Ensure that mingw-builds bin folder is set in your PATH environment variable. On Windows 7 your path should look something like:
Code:
C:\mingw32\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

But that path does not exist in mine, there is no System/SystemRoot/System32 or anything like that in my mingw32\bin folder, but I guess I will figure out if it works soon enough.

Here is the whole guide: (there may be more on later pages of the thread, but as I am going through the guide if those come up I will add that to this thread)


Quote
Hi all, I recently went through the process of building bitcoind on windows.
I found the official build-msw.txt to be a bit lacking, so I thought that documenting the steps here on the forums could save some time to people wanting to compile their own windows binary. Wink

Please note this is mostly for testing purposes. Always use official executables on production environments.
The following instructions are intended for use with version 0.9.4. See additional notes if compiling 0.10rc4 or an older 0.8.6 branch.

1. Prepare your build system.
I strongly suggest setting up a clean windows virtual machine via Virtualbox or similar.

1.1 Install msys shell:
http[Suspicious link removed]/download
From MinGW installation manager -> All packages -> MSYS
mark the following for installation:

msys-base-bin
msys-autoconf-bin
msys-automake-bin
msys-libtool-bin

then click on Installation -> Apply changes

Make sure no mingw packages are checked for installation or present from a previous install. Only the above msys packages should be installed. Also make sure that msys-gcc and msys-w32api packages are not installed.

1.2 Install MinGW-builds project toolchain:
Download http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/4.9.2/threads-posix/dwarf/i686-4.9.2-release-posix-dwarf-rt_v3-rev1.7z/download
and unpack it to C:\

1.3. Ensure that mingw-builds bin folder is set in your PATH environment variable. On Windows 7 your path should look something like:
Code:
C:\mingw32\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

1.4 Additional checks:
C:\MinGW\bin should contain nothing but mingw-get.exe.
Your gcc -v output should be:
Code:
 gcc -v
Using built-in specs.
COLLECT_GCC=c:\mingw32\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/mingw32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../../../src/gcc-4.9.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw492/i686-492-posix-dwarf-rt_v3-rev1/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw492/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-posix-dwarf-rev1, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw492/i686-492-posix-dwarf-rt_v3-rev1/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw492/i686-492-posix-dwarf-rt_v3-rev1/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw492/i686-492-posix-dwarf-rt_v3-rev1/mingw32/opt/lib -L/c/mingw492/prerequisites/i686-zlib-static/lib -L/c/mingw492/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'
Thread model: posix
gcc version 4.9.2 (i686-posix-dwarf-rev1, Built by MinGW-W64 project)

2. Download, unpack and build required dependencies.
I'll save them in c:\deps folder.

2.1 OpenSSL: http://www.openssl.org/source/openssl-1.0.1l.tar.gz
From a MinGw shell (C:\MinGW\msys\1.0\msys.bat), unpack the source archive with tar (this will avoid symlink issues) then configure and make:
Code:
cd /c/deps/
tar xvfz openssl-1.0.1l.tar.gz
cd openssl-1.0.1l
./Configure no-zlib no-shared no-dso no-krb5 no-camellia no-capieng no-cast no-cms no-dtls1 no-gost no-gmp no-heartbeats no-idea no-jpake no-md2 no-mdc2 no-rc5 no-rdrand no-rfc3779 no-rsax no-sctp no-seed no-sha0 no-static_engine no-whirlpool no-rc2 no-rc4 no-ssl2 no-ssl3 mingw
make

2.2 Berkeley DB: http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz
We'll use version 4.8 to preserve binary wallet compatibility.
From a MinGW shell unpack the source archive, configure and make:
Code:
cd /c/deps/
tar xvfz db-4.8.30.NC.tar.gz
cd db-4.8.30.NC/build_unix
../dist/configure --enable-mingw --enable-cxx --disable-shared --disable-replication
make

2.3 Boost: http://sourceforge.net/projects/boost/files/boost/1.57.0/
Download either the zip or the 7z archive, unpack boost inside your C:\deps folder, then bootstrap and compile from a Windows command prompt:
Code:
cd C:\deps\boost_1_57_0\
bootstrap.bat mingw
b2 --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc variant=release link=static threading=multi runtime-link=static stage

This will compile the required boost libraries and put them into the stage folder (C:\deps\boost_1_57_0\stage).
Note: make sure you don't use tarballs, as unix EOL markers can break batch files.

2.4 Miniupnpc: http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.9.20150206.tar.gz
Unpack Miniupnpc to C:\deps, rename containing folder from "miniupnpc-1.9.20150206" to "miniupnpc" then from a Windows command prompt:
Code:
cd C:\deps\miniupnpc
mingw32-make -f Makefile.mingw init upnpc-static

2.5 protoc and libprotobuf:
Download https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
Then from msys shell
Code:
tar xvfz protobuf-2.6.1.tar.gz
cd /c/deps/protobuf-2.6.1
configure --disable-shared
make

2.6 qrencode:
Download and unpack http://download.sourceforge.net/libpng/libpng-1.6.16.tar.gz inside your deps folder then configure and make:
Code:
cd /c/deps/libpng-1.6.16
configure --disable-shared
make
cp .libs/libpng16.a .libs/libpng.a

Download and unpack http://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz inside your deps folder then configure and make:
Code:
cd /c/deps/qrencode-3.4.4

LIBS="../libpng-1.6.16/.libs/libpng.a ../../mingw32/i686-w64-mingw32/lib/libz.a" \
png_CFLAGS="-I../libpng-1.6.16" \
png_LIBS="-L../libpng-1.6.16/.libs" \
configure --enable-static --disable-shared --without-tools

make

2.7 Qt 5 libraries:
Qt must be configured with ssl and zlib support.
Download and unpack Qt base and tools sources:
http://download.qt-project.org/official_releases/qt/5.3/5.3.2/submodules/qtbase-opensource-src-5.3.2.7z
http://download.qt-project.org/official_releases/qt/5.3/5.3.2/submodules/qttools-opensource-src-5.3.2.7z
Then from a windows command prompt (note that the following assumes qtbase has been unpacked to C:\Qt\5.3.2 and qttools have been unpacked to C:\Qt\qttools-opensource-src-5.3.2):
Code:
set INCLUDE=C:\deps\libpng-1.6.16;C:\deps\openssl-1.0.1l\include
set LIB=C:\deps\libpng-1.6.16\.libs;C:\deps\openssl-1.0.1l

cd C:\Qt\5.3.2
configure.bat -release -opensource -confirm-license -static -make libs -no-sql-sqlite -no-opengl -system-zlib -qt-pcre -no-icu -no-gif -system-libpng -no-libjpeg -no-freetype -no-angle -no-vcproj -openssl -no-dbus -no-audio-backend -no-wmf-backend -no-qml-debug

mingw32-make

set PATH=%PATH%;C:\Qt\5.3.2\bin

cd C:\Qt\qttools-opensource-src-5.3.2
qmake qttools.pro
mingw32-make

Note: consider using -j switch with mingw32-make to speed up compilation process. On a quad core -j4 or -j5 should give the best results.


3. Download and unpack Bitcoin 0.9.4 from git https://github.com/bitcoin/bitcoin/archive/v0.9.4.zip

From msys shell configure and make bitcoin:
Code:
cd /c/bitcoin-0.9.4

./autogen.sh

CPPFLAGS="-I/c/deps/db-4.8.30.NC/build_unix \
-I/c/deps/openssl-1.0.1l/include \
-I/c/deps \
-I/c/deps/protobuf-2.6.1/src \
-I/c/deps/libpng-1.6.16 \
-I/c/deps/qrencode-3.4.4" \
LDFLAGS="-L/c/deps/db-4.8.30.NC/build_unix \
-L/c/deps/openssl-1.0.1l \
-L/c/deps/miniupnpc \
-L/c/deps/protobuf-2.6.1/src/.libs \
-L/c/deps/libpng-1.6.16/.libs \
-L/c/deps/qrencode-3.4.4/.libs" \
BOOST_ROOT=/c/deps/boost_1_57_0 \
./configure \
--disable-upnp-default \
--disable-tests \
--with-qt-incdir=/c/Qt/5.3.2/include \
--with-qt-libdir=/c/Qt/5.3.2/lib \
--with-qt-plugindir=/c/Qt/5.3.2/plugins \
--with-qt-bindir=/c/Qt/5.3.2/bin \
--with-protoc-bindir=/c/deps/protobuf-2.6.1/src

make

strip src/bitcoin-cli.exe
strip src/bitcoind.exe
strip src/qt/bitcoin-qt.exe

Additional notes:
64 bit binaries
64 bit binaries can be compiled by using the following toolchain:
http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-posix/seh/x86_64-4.9.2-release-posix-seh-rt_v3-rev1.7z/download

All dependencies must be rebuilt with the above toolchain.
Openssl should be configured for:
Code:
mingw64
instead of:
Code:
mingw

Bitcoin v0.10rc4
Since v0.10 Bitcoin depends on gmp: https://gmplib.org/download/gmp/gmp-6.0.0a.tar.xz
Compile it in a msys shell
Code:
tar xvf gmp-6.0.0a.tar.xz
cd /c/deps/gmp-6.0.0
./configure --disable-shared
make


Then add relevant CPPFLAGS and LDFLAGS when configuring Bitcoin:
Code:
CPPFLAGS="-I/c/deps/db-4.8.30.NC/build_unix \
-I/c/deps/openssl-1.0.1l/include \
-I/c/deps \
-I/c/deps/protobuf-2.6.1/src \
-I/c/deps/libpng-1.6.16 \
-I/c/deps/qrencode-3.4.4 \
-I/c/deps/gmp-6.0.0" \
LDFLAGS="-L/c/deps/db-4.8.30.NC/build_unix \
-L/c/deps/openssl-1.0.1l \
-L/c/deps/miniupnpc \
-L/c/deps/protobuf-2.6.1/src/.libs \
-L/c/deps/libpng-1.6.16/.libs \
-L/c/deps/qrencode-3.4.4/.libs \
-L/c/deps/gmp-6.0.0/.libs" \
BOOST_ROOT=/c/deps/boost_1_57_0 \
./configure \
--disable-upnp-default \
--disable-tests \
--with-qt-incdir=/c/Qt/5.3.2/include \
--with-qt-libdir=/c/Qt/5.3.2/lib \
--with-qt-plugindir=/c/Qt/5.3.2/plugins \
--with-qt-bindir=/c/Qt/5.3.2/bin \
--with-protoc-bindir=/c/deps/protobuf-2.6.1/src

ompiling with unit tests
In order to build unit tests you will need the following:
-boost
Boost must be configured with --with-test option also.

-hexdump
To generate test data an hexdump like program is needed.
Download and unpack https://github.com/wahern/hexdump then compile hexdump.exe by running:
Code:
gcc -std=gnu99 -g -O2 -Wall -Wextra -Werror -Wno-unused-variable -Wno-unused-parameter hexdump.c -DHEXDUMP_MAIN -o hexdump.exe

Do not forget to add hexdump folder to your PATH environment variable.

-bitcoin
In order to work with the previously compiled hexdump version Makefile must be patched (src/Makefile.test.include if v0.10, src/Makefile.include if v0.9):
Code:
--- src/Makefile.test.include	Tue Dec 23 20:14:37 2014
+++ src/Makefile.test.include Sat Jan 10 16:53:56 2015
@@ -111,7 +111,7 @@
  @$(MKDIR_P) $(@D)
  @echo "namespace json_tests{" > $@
  @echo "static unsigned const char $(*F)[] = {" >> $@
- @$(HEXDUMP) -v -e '8/1 "0x%02x, "' -e '"\n"' $< | $(SED) -e 's/0x  ,//g' >> $@
+ @$(HEXDUMP) -e '8/1 "0x%02x, "' $< | $(SED) -e 's/0x  ,//g' >> $@
  @echo "};};" >> $@
  @echo "Generated $@"
 
@@ -119,6 +119,6 @@
  @$(MKDIR_P) $(@D)
  @echo "namespace alert_tests{" > $@
  @echo "static unsigned const char $(*F)[] = {" >> $@
- @$(HEXDUMP) -v -e '8/1 "0x%02x, "' -e '"\n"' $< | $(SED) -e 's/0x  ,//g' >> $@
+ @$(HEXDUMP) -e '8/1 "0x%02x, "' $< | $(SED) -e 's/0x  ,//g' >> $@
  @echo "};};" >> $@
  @echo "Generated $@"

bitcoin must be configured without --disable-tests option.






Additional notes for older Bitcoin 0.8.6 (may be useful for Bitcoin based altcoins)
msys-autoconf, msys-automake and msys-libtool at step 1.1 are not needed. You can skip steps 2.5 and 2.7.
Note that openssl v1.0.1k and later may lead to consesus forks:
http://sourceforge.net/p/bitcoin/mailman/message/33221963/

Compile bitcoind 0.8.6: https://github.com/bitcoin/bitcoin/archive/v0.8.6.zip

With a texteditor edit BOOST_SUFFIX, INCLUDEPATHS and LIBPATHS in your C:\bitcoin-0.8.6\src\makefile.mingw according to your dependencies location:
Code:
BOOST_SUFFIX?=-mgw49-mt-s-1_57

INCLUDEPATHS= \
 -I"$(CURDIR)" \
 -I"/c/deps/boost_1_57_0" \
 -I"/c/deps/db-4.8.30.NC/build_unix" \
 -I"/c/deps/openssl-1.0.1j/include"
 
LIBPATHS= \
 -L"$(CURDIR)/leveldb" \
 -L"/c/deps/boost_1_57_0/stage/lib" \
 -L"/c/deps/db-4.8.30.NC/build_unix" \
 -L"/c/deps/openssl-1.0.1j"

and add -static option to LDFLAGS in makefile.mingw to compile a statically linked executable.
Code:
LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static

makefile.mingw patch:
Code:
--- makefile.mingw	Thu Dec 05 14:11:26 2013
+++ makefile.mingw Thu Jun 19 20:00:00 2014
@@ -21,15 +21,19 @@
 USE_IPV6:=1
 
 DEPSDIR?=/usr/local
-BOOST_SUFFIX?=-mgw46-mt-sd-1_52
+BOOST_SUFFIX?=-mgw49-mt-s-1_57
 
 INCLUDEPATHS= \
  -I"$(CURDIR)" \
- -I"$(DEPSDIR)/include"
-
+ -I"/c/deps/boost_1_57_0" \
+ -I"/c/deps/db-4.8.30.NC/build_unix" \
+ -I"/c/deps/openssl-1.0.1j/include"
+
 LIBPATHS= \
  -L"$(CURDIR)/leveldb" \
- -L"$(DEPSDIR)/lib"
+ -L"/c/deps/boost_1_57_0/stage/lib" \
+ -L"/c/deps/db-4.8.30.NC/build_unix" \
+ -L"/c/deps/openssl-1.0.1j"
 
 LIBS= \
  -l leveldb \
@@ -47,7 +51,7 @@
 DEBUGFLAGS=-g
 CFLAGS=-mthreads -O2 -w -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
 # enable: ASLR, DEP and large address aware
-LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware
+LDFLAGS=-Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-aware -static
 
 TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)
 

Upnp support is disabled by default. If you want to compile with upnp support set
Code:
USE_UPNP:=1

and add miniupnpc path to INCLUDEPATHS and LIBPATHS:
Code:
INCLUDEPATHS= \
 -I"$(CURDIR)" \
 -I"/c/deps/boost_1_57_0" \
 -I"/c/deps" \
 -I"/c/deps/db-4.8.30.NC/build_unix" \
 -I"/c/deps/openssl-1.0.1j/include"
 
LIBPATHS= \
 -L"$(CURDIR)/leveldb" \
 -L"/c/deps/boost_1_57_0/stage/lib" \
 -L"/c/deps/miniupnpc" \
 -L"/c/deps/db-4.8.30.NC/build_unix" \
 -L"/c/deps/openssl-1.0.1j"

From Msys shell compile bitcoind:
Code:
cd /c/bitcoin-0.8.6/src
make -f makefile.mingw
strip bitcoind.exe

Compile bitcoin-qt 0.8.6 with Qt 4.8:
Download and unpack http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.zip
Note that due to a bug in qt 4.8.6 you will need to explicitly enable windows styles: https://bugreports.qt-project.org/browse/QTBUG-38706
Assuming qt sources have been unpacked to C:\Qt\4.8.6, from a windows command prompt:
Code:
cd C:\Qt\4.8.6
configure -release -opensource -confirm-license -static -no-sql-sqlite -no-qt3support -no-opengl -qt-zlib -no-gif -qt-libpng -qt-libmng -no-libtiff -qt-libjpeg -no-dsp -no-vcproj -no-openssl -no-dbus -no-phonon -no-phonon-backend -no-multimedia -no-audio-backend -no-webkit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde -nomake demos -nomake examples
mingw32-make

Note that if you skipped bitcoind compilation or if you have cleaned up your source folder you will need to compile libleveldb.a and libmemenv.a libraries before proceeding.
From msys shell:
Code:
cd /C/bitcoin-0.8.6/src/leveldb
TARGET_OS=NATIVE_WINDOWS make libleveldb.a libmemenv.a

Comment out genleveldb.commands for win32
Code:
    LIBS += -lshlwapi
    #genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
}

flags for static build:
Code:
CONFIG += static

Code:
win32:QMAKE_LFLAGS *= -Wl,--large-address-aware -static

bitcoin-qt.pro patch:
Code:
--- bitcoin-qt.pro	Thu Dec 05 14:11:26 2013
+++ bitcoin-qt.pro Thu Jun 19 20:00:00 2014
@@ -7,6 +7,7 @@
 DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE
 CONFIG += no_include_pwd
 CONFIG += thread
+CONFIG += static
 
 # for boost 1.37, add -mt to the boost libraries
 # use: qmake BOOST_LIB_SUFFIX=-mt
@@ -17,6 +18,17 @@
 # Dependency library locations can be customized with:
 #    BOOST_INCLUDE_PATH, BOOST_LIB_PATH, BDB_INCLUDE_PATH,
 #    BDB_LIB_PATH, OPENSSL_INCLUDE_PATH and OPENSSL_LIB_PATH respectively
+BOOST_LIB_SUFFIX=-mgw49-mt-s-1_57
+BOOST_INCLUDE_PATH=C:/deps/boost_1_57_0
+BOOST_LIB_PATH=C:/deps/boost_1_57_0/stage/lib
+BDB_INCLUDE_PATH=C:/deps/db-4.8.30.NC/build_unix
+BDB_LIB_PATH=C:/deps/db-4.8.30.NC/build_unix
+OPENSSL_INCLUDE_PATH=C:/deps/openssl-1.0.1j/include
+OPENSSL_LIB_PATH=C:/deps/openssl-1.0.1j
+MINIUPNPC_INCLUDE_PATH=C:/deps/
+MINIUPNPC_LIB_PATH=C:/deps/miniupnpc
+QRENCODE_INCLUDE_PATH=C:/deps/qrencode-3.4.4
+QRENCODE_LIB_PATH=C:/deps/qrencode-3.4.4/.libs
 
 OBJECTS_DIR = build
 MOC_DIR = build
@@ -47,7 +59,7 @@
 # for extra security on Windows: enable ASLR and DEP via GCC linker flags
 win32:QMAKE_LFLAGS *= -Wl,--dynamicbase -Wl,--nxcompat
 # on Windows: enable GCC large address aware linker flag
-win32:QMAKE_LFLAGS *= -Wl,--large-address-aware
+win32:QMAKE_LFLAGS *= -Wl,--large-address-aware -static
 
 # use: qmake "USE_QRCODE=1"
 # libqrencode (http://fukuchi.org/works/qrencode/index.en.html) must be installed for support
@@ -109,7 +121,7 @@
         QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib)
     }
     LIBS += -lshlwapi
-    genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
+    #genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
 }
 genleveldb.target = $$PWD/src/leveldb/libleveldb.a
 genleveldb.depends = FORCE


From a windows command prompt configure and make:
Code:
set PATH=%PATH%;C:\Qt\4.8.6\bin
cd C:\bitcoin-0.8.6\
qmake "USE_QRCODE=1" "USE_UPNP=1" "USE_IPV6=1" bitcoin-qt.pro
mingw32-make -f Makefile.Release

Last updated on 08/02/2015
bitcoin 0.9.4
toolchain: i686-4.9.2-release-posix-dwarf-rt_v3-rev1
openssl-1.0.1l
libpng-1.6.16
miniupnpc-1.9.20150206.tar.gz

10/01/2015
compiling unit tests

30/11/2014
toolchain: i686-4.9.2-release-posix-dwarf-rt_v3-rev0
boost_1_57_0
protobuf-2.6.1
libpng-1.6.15
miniupnpc-1.9.20141128
gmp-6.0.0a for current master

28/10/2014
openssl-1.0.1j
libpng-1.6.14
do not build unnecessary openssl ciphers and protocols
use BOOST_ROOT when configuring bitcoin

28/09/2014
toolchain: i686-4.9.1-release-posix-dwarf-rt_v3-rev1
bitcoin 0.9.3
miniupnpc-1.9.20140911 https://github.com/bitcoin/bitcoin/commit/9f7f504efca27c7d390f121410846b45c1732761
qt5.3.2

10/08/2014
update toolchain i686-4.9.1-release-posix-dwarf-rt_v3-rev0
update dependencies openssl-1.0.1i qrencode-3.4.4 qt4.8.6

02/7/2014
qt5.3.1

20/6/2014
bitcoin 0.9.2.1
mingw-builds 4.9.0 rev2
openssl-1.0.1h
qt5.3
libpng-1.6.12
removed older instructions about bitcoin 0.8.6 with qt5

25/5/2014:
update toolchain
added makefile patch commit

23/4/2014:
removed python and activestate perl as they are not needed with current qt config options,
use -openssl-linked instead of -openssl (see src\network\ssl\qsslsocket_openssl_symbols.cpp for more info),
do not compile shared libraries when building dependencies,
libpng 1.6.10.
member
Activity: 98
Merit: 11
April 22, 2017, 12:32:58 PM
#39
I am going to post all of the important information from all these guides I have been posting, and try out as many of them as I can, and post if they worked for me or not.

1st Guide

Ok, so this first link is the guide I used before, and the links following it are the video tutorials that make up the guide, this is the only guide I know of that has videos, I will look for more today though.
https://bitcointalksearch.org/topic/ann-learncoin-lern-scrypt-clone-coin-with-tutorial-on-how-its-made-1278734

The problem I had with this guide is that when compiling it comes up with the '-lboost_system' error. Everyone on google says that this isn't actually a compiling error, but a linking error, and means that when compiling that the compiler doesn't know to look in the right library. Everyone seems to also think it is an easy fix, and there are various solutions to it on google (such as adding '-mt' to the end of each library in the make file) but none of them seemed to work for me, maybe that will work for you though. If you do use this guide, make sure you read the things under each video in the "read more" section, as there is a lot of information there.


Quote
Episode 1:
Introduction / Explanations / OS Setup / Cloning
https://www.youtube.com/watch?v=86jqAfySi64&list=PL3VHTMe_nFkyQKRus_py1WIRQr7FG2009

Episode 2
More cloning and generating merkle root
https://www.youtube.com/watch?v=ENaTmbh8Xuw&feature=youtu.be

Episode 3
Hashing the genesis block
https://www.youtube.com/watch?v=3Jp65Uq_U30&feature=youtu.be

Episode 4:
Creating some "artwork"
https://www.youtube.com/watch?v=1z_ONhDseVE&feature=youtu.be

Episode 5:
Compiling for Windows and uploading to github
https://www.youtube.com/watch?v=YF3oE5uIP64&feature=youtu.be

Episode 6:
Seeing it all running and pool starting
https://www.youtube.com/watch?v=kVPcmirqyOY&feature=youtu.be

2nd Guide

I have not used this second guide, but it is basically the same as the first one, and it doesn't even include the dependencies, which means if I were to use it, it would probably end up with the same error, as I still have not gotten the '-lboost_system' error to stop happening. I will try this one later, but I am on a Windows machine right now so I plan on trying a Windows build.

Quote
This guide outlines the steps to manually generate a genesis block and start a new blockchain. Once the genesis block is generated, two nodes must be used to start the blockchain. This guide will show you how to do this on one machine, using two data directories and two instances of the daemon. Please note that it is also possible to do this using two physical or virtual machines.
Install Dependencies and Mini-UPnP

If Peershares has never been run on your machine, be sure to follow the Dependency and Mini-UPnP installation steps, located on the Linux wiki page: https://github.com/Peershares/Peershares/wiki/Linux
Clean-up Prior Work

If you have already been using your machine to test Peershares builds, it's a good idea to delete your prior working folders and start fresh.

$ rm -r ~/.peershares
$ rm -r ~/Peershares

Clone the Peershares Github Repository

$ git clone https://github.com/Peershares/Peershares.git

Get the current unix epoch time from the command line, or, from using a site like Epoch Converter.

$ date +%s

We'll use this in a few minutes, so copy it down.
Edit main.cpp

$ cd ~/Peershares/src/
$ (text editor) main.cpp

Be sure to turn on line numbering in your text editor. Edit the following lines ...

Main.cpp:L2260 - Change the value for the constant, pszTimestamp, to something unique, up to 91 characters:

const char* pszTimestamp = "YOUR CUSTOM, VERIFIABLE TIMESTAMP GOES HERE";

Main.cpp:L2261 - Change nTimeGenesis value to current epoch time (captured in the previous step). For example, when this guide was written, the epoch time was 1395169964, so it would be inserted as so:

unsigned int nTimeGenesis=1395169964;

Main.cpp:L2262 - Make sure that nNonceGenesis=0

Main.cpp:L2266 - For the TestNet genesis block, change the value for the constant, pszTimestamp, to something unique (same length rules apply as the previous timestamp string):

Main.cpp:L2267 - Change nTimeGenesis value to current epoch time stamp. This can match the value you used for the previous nTimeGenesis variable, or you can use the epoch time for when you modified this step, either is appropriate.

Main.cpp:L2268 - Make sure that nNonceGenesis=0

Complete set of changes from the previous steps:

if (fTestNet)
  {
    pszTimestamp="YOUR CUSTOM, VERIFIABLE TESTNET TIMESTAMP GOES HERE";
    nTimeGenesis=1395170250;
    nNonceGenesis=0;
  }

Save the file and exit.
Compile the daemon

$ make -f makefile.unix

Run the daemon

$ ./peersharesd --daemon

It should start and run for a few seconds then stop with an error. This error is our notification that the new genesis block has been generated. That was for real-net. Now lets generate one for testnet.

$ ./peersharesd --daemon -testnet

It will start and run for a few seconds then stop with an error like the first one. We now have two debug.log files located at: ~/.peershares/debug.log and ~/.peershares/testnet/debug.log. You will find an entry in both of these files starting with 'PPCoin Found Genesis Block:'. Under that entry, you will find values for 'genesis hash=', 'merkle root=' and 'nNonce=' ... We need those three values from both real-net and testnet debug.log files.
Edit main.cpp and kernel.cpp

$ cd ~/Peershares/src/
$ (text editor) main.cpp

Edit the following lines ...

Main.cpp:L24 - Change the value for the constant, hashGenesisBlockOfficial, to the new genesis hash value from debug.log. Paste the value in-between the quotation marks, after the leading 0x :

static const uint256 hashGenesisBlockOfficial("0x00000053229d58cdda911f4188240d4843f6bca1d8978d3349d87c38976463dd");

Main.cpp:L25 - Change the value for the constant, hashGenesisBlockTestNet, to the new genesis hash value from TestNet debug.log. Paste the value in-between the quotation marks, after the leading 0x :

static const uint256 hashGenesisBlockTestNet ("0x00000053229d58cdda911f4188240d4843f6bca1d8978d3349d87c38976463dd");

Main.cpp:L2262 - Change the value for nNonceGenesis to the new nNonce value from debug.log:

unsigned int nNonceGenesis=236800;

Main.cpp:L2268 - Change the value for nNonceGenesis to the new nNonce value from the TestNet debug.log:

unsigned int nNonceGenesis=236800;

Main.cpp:L2312 - Change the value for block.hashMerkleRoot == uint256, to the new merkle root hash value from debug.log. Paste the value in-between the quotation marks, after the leading 0x :

assert(block.hashMerkleRoot == uint256("0xf0e9ac2cef9820c036e397c738ae5cea91df3724f5418eb6a7450350f2702278"));

Main.cpp:L2314 - Change the value for block.hashMerkleRoot == uint256, to the new merkle root hash value from TestNet debug.log. Paste the value in-between the quotation marks, after the leading 0x :

assert(block.hashMerkleRoot == uint256("0xf0e9ac2cef9820c036e397c738ae5cea91df3724f5418eb6a7450350f2702278"));

Save and exit main.cpp ... Open kernel.cpp:

$ (text editor) kernel.cpp

nProtocolV03SwitchTime and nProtocolV03TestSwitchTime need to be set to a time in the future, after PoS starts. So just set these to several days in advance. Use the Epoch Converter to get the correct value.

Kernel.cpp:L14 - Change the value for nProtocolV03SwitchTime to the to the correct future time. Edit the number after the '=' sign and update the comment to reflect what it was changed to:

unsigned int nProtocolV03SwitchTime     = 1394841600; // 2014-03-15 00:00:00 UTC

Kernel.cpp:L15 - Change the value for nProtocolV03TestSwitchTime to the to the correct future time. Edit the number after the '=' sign and update the comment to reflect what it was changed to:

unsigned int nProtocolV03TestSwitchTime = 1396224000; // 2014-03-31 00:00:00 UTC

Save and exit kernel.cpp
Recompile the daemon

$ make -f makefile.unix BDB_INCLUDE_PATH="/usr/local/BerkeleyDB.4.8/include" BDB_LIB_PATH="/usr/local/BerkeleyDB.4.8/lib"

Remove and recreate working folder

Add a 2nd working folder for instance2, which is needed to start the blockchain.

$ rm -r ~/.peershares/
$ mkdir ~/.peershares/
$ mkdir ~/.peershares2/

Move the newly recompiled daemon to working folder

$ mv ppcoind ~/.peershares

Create conf file and start instance 1

$ cd ~/.peershares
$ touch peershares.conf
$ (text editor) peershares.conf

Add the following lines to the conf file and save:

server=1
rpcallowip=127.0.0.1
listen=1
rpcuser=
rpcpassword=
dnsseed=0
port=9090
rpcport=9091
gen=1

Run the daemon

$ ./ppcoind --daemon

If it stops with an error about blkindex.dat when it is run for the first time, simply run it again and it should work. This is a known issue on the first run attempt.
Copy and rename daemon to 2nd instance

$ cp ppcoind ~/.peershares2/ppcoind2

Create conf file for 2nd instance

$ cd ~/.peershares2
$ touch peershares.conf
$ (text editor) peershares.conf

Add the following lines to the conf file and save:

server=1
rpcuser=
rpcpassword=
port=19090
rpcport=19091
gen=1

Run the 2nd instance of the daemon

We must specify the data directory so that the 2nd instance doesn't try to use '~/.peershares' and we must also specify that we want to connect to the IP address of our first instance, which, in this case, is localhost. Be sure to replace with your username. Note that datadir and connect commands can be added to your conf file to simplify things.

$ ./ppcoind2 --daemon -datadir=/home//.peershares2 -connect=127.0.0.1:9090

If either instance stops with an error about blkindex.dat when it is run for the first time, kill the instance and run again with the same command. It should work on the 2nd try. This is a known issue.

At this point, your new blockchain should be started and both instances should be generating PoW blocks. Check status with:

$ ./ppcoind getinfo
$ ./ppcoind getmininginfo
$ (text editor) debug.log

Or from the 2nd instance dir

$ ./ppcoind2 getinfo
$ ./ppcoind2 getmininginfo

If you wish to start a testnet, add testnet=1 to your conf files, stop and restart the daemons.

Note: If difficulty settings are changed in Main.cpp:L37 and Main.cpp:L38, you'll need to recreate the genesis block because the nonce/hash/merkel root will change.
member
Activity: 98
Merit: 11
April 21, 2017, 09:34:47 PM
#37
Great guide, keep it up!

Liking the little thread here Smiley Will be useful for every individual coin-maker Cheesy

Thanks, I have been looking for all the guides for 2 days now and have looked for them before (that's how I found the ones that allowed me to get as far as I did making a coin already), and this thread has more in one place than any other ones. So this will probably become an important thread to anyone who wants to create a coin in the future.

And this weekend I will add more, and post updates as I try to make my own coin. I will go through a few guides and will post which guides I use each time, and how well it worked. So everyone will know exactly which guides to use and what problems they might run into.
member
Activity: 98
Merit: 11
April 21, 2017, 08:58:54 PM
#36
Making a mining portal (there are probably others, but this is the one I know about. I'll look for more guides today and this weekend)
https://github.com/UNOMP/unified-node-open-mining-portal
sr. member
Activity: 322
Merit: 250
April 21, 2017, 08:52:49 PM
#35
Great guide, keep it up!

Liking the little thread here Smiley Will be useful for every individual coin-maker Cheesy
member
Activity: 98
Merit: 11
April 21, 2017, 08:44:34 PM
#34
member
Activity: 98
Merit: 11
April 21, 2017, 08:00:59 PM
#33
Pages:
Jump to: