Update build docs with Blackcoin information

This commit is contained in:
lateminer
2018-11-18 16:28:51 +03:00
parent e3ca82293b
commit 5ee1e64b07
7 changed files with 80 additions and 87 deletions

View File

@@ -1,9 +1,9 @@
Contributing to Bitcoin Core
Contributing to Blackcoin More
============================
The Bitcoin Core project operates an open contributor model where anyone is welcome to contribute towards development in the form of peer review, testing and patches. This document explains the practical process and guidelines for contributing.
The Blackcoin More project operates an open contributor model where anyone is welcome to contribute towards development in the form of peer review, testing and patches. This document explains the practical process and guidelines for contributing.
Firstly in terms of structure, there is no particular concept of “Core developers” in the sense of privileged people. Open source often naturally revolves around meritocracy where longer term contributors gain more trust from the developer community. However, some hierarchy is necessary for practical purposes. As such there are repository “maintainers” who are responsible for merging pull requests as well as a “lead maintainer” who is responsible for the release cycle, overall merging, moderation and appointment of maintainers.
Firstly in terms of structure, there is no particular concept of “Blackcoin More developers” in the sense of privileged people. Open source often naturally revolves around meritocracy where longer term contributors gain more trust from the developer community. However, some hierarchy is necessary for practical purposes. As such there are repository “maintainers” who are responsible for merging pull requests as well as a “lead maintainer” who is responsible for the release cycle, overall merging, moderation and appointment of maintainers.
Contributor Workflow
@@ -81,9 +81,9 @@ Project maintainers aim for a quick turnaround on refactoring pull requests, so
"Decision Making" Process
-------------------------
The following applies to code changes to the Bitcoin Core project (and related projects such as libsecp256k1), and is not to be confused with overall Bitcoin Network Protocol consensus changes.
The following applies to code changes to the Blackcoin More project, and is not to be confused with overall Blackcoin Network Protocol consensus changes.
Whether a pull request is merged into Bitcoin Core rests with the project merge maintainers and ultimately the project lead.
Whether a pull request is merged into Blackcoin More rests with the project merge maintainers and ultimately the project lead.
Maintainers will take into consideration if a patch is in line with the general principles of the project; meets the minimum standards for inclusion; and will judge the general consensus of contributors.
@@ -96,7 +96,7 @@ In general, all pull requests must:
- not break the existing test suite;
- where bugs are fixed, where possible, there should be unit tests demonstrating the bug and also proving the fix. This helps prevent regression.
Patches that change Bitcoin consensus rules are considerably more involved than normal because they affect the entire ecosystem and so must be preceded by extensive mailing list discussions and have a numbered BIP. While each case will be different, one should be prepared to expend more time and effort than for other kinds of patches because of increased peer review and consensus building requirements.
Patches that change Blackcoin consensus rules are considerably more involved than normal because they affect the entire ecosystem and so must be preceded by extensive mailing list discussions and have a numbered BIP. While each case will be different, one should be prepared to expend more time and effort than for other kinds of patches because of increased peer review and consensus building requirements.
###Peer Review
@@ -115,10 +115,10 @@ Project maintainers reserve the right to weigh the opinions of peer reviewers us
Where a patch set affects consensus critical code, the bar will be set much higher in terms of discussion and peer review requirements, keeping in mind that mistakes could be very costly to the wider community. This includes refactoring of consensus critical code.
Where a patch set proposes to change the Bitcoin consensus, it must have been discussed extensively on the mailing list and IRC, be accompanied by a widely discussed BIP and have a generally widely perceived technical consensus of being a worthwhile change based on the judgement of the maintainers.
Where a patch set proposes to change the Blackcoin consensus, it must have been discussed extensively on Gitter, be accompanied by a widely discussed BIP and have a generally widely perceived technical consensus of being a worthwhile change based on the judgement of the maintainers.
Release Policy
--------------
The project leader is the release manager for each Bitcoin Core release.
The project leader is the release manager for each Blackcoin More release.

View File

@@ -1,5 +1,5 @@
Building Bitcoin
Building Blackcoin
================
See doc/build-*.md for instructions on building the various
elements of the Bitcoin Core reference implementation of Bitcoin.
elements of the Blackcoin More reference implementation of Blackcoin.

View File

@@ -1,9 +1,9 @@
Bitcoin Core 0.13.2
Blackcoin More 2.13.2.1
=====================
Intro
-----
Bitcoin is a free open source peer-to-peer electronic cash system that is
Blackcoin is a free open source peer-to-peer electronic cash system that is
completely decentralized, without the need for a central server or trusted
parties. Users hold the crypto keys to their own money and transact directly
with each other, with the help of a P2P network to check for double-spending.
@@ -11,13 +11,13 @@ with each other, with the help of a P2P network to check for double-spending.
Setup
-----
Unpack the files into a directory and run bitcoin-qt.exe.
Unpack the files into a directory and run blackmore-qt.exe.
Bitcoin Core is the original Bitcoin client and it builds the backbone of the network.
However, it downloads and stores the entire history of Bitcoin transactions;
Blackcoin More is the original Blackcoin client and it builds the backbone of the network.
However, it downloads and stores the entire history of Blackcoin transactions;
depending on the speed of your computer and network connection, the synchronization
process can take anywhere from a few hours to a day or more.
See the bitcoin wiki at:
https://en.bitcoin.it/wiki/Main_Page
See the blackcoin website at:
https://blackcoin.org
for more help and information.

View File

@@ -2,7 +2,7 @@ OpenBSD build guide
======================
(updated for OpenBSD 5.9)
This guide describes how to build bitcoind and command-line utilities on OpenBSD.
This guide describes how to build blackmored and command-line utilities on OpenBSD.
As OpenBSD is most common as a server OS, we will not bother with the GUI.
@@ -18,7 +18,7 @@ pkg_add automake # (select highest version, e.g. 1.15)
pkg_add python # (select highest version, e.g. 3.5)
```
The default C++ compiler that comes with OpenBSD 5.9 is g++ 4.2. This version is old (from 2007), and is not able to compile the current version of Bitcoin Core, primarily as it has no C++11 support, but even before there were issues. So here we will be installing a newer compiler.
The default C++ compiler that comes with OpenBSD 5.9 is g++ 4.2. This version is old (from 2007), and is not able to compile the current version of Blackcoin More, primarily as it has no C++11 support, but even before there were issues. So here we will be installing a newer compiler.
GCC
-------
@@ -39,10 +39,10 @@ Do not use `pkg_add boost`! The boost version installed thus is compiled using t
...
Segmentation fault (core dumped)
This makes it necessary to build boost, or at least the parts used by Bitcoin Core, manually:
This makes it necessary to build boost, or at least the parts used by Blackcoin More, manually:
```
# Pick some path to install boost to, here we create a directory within the bitcoin directory
# Pick some path to install boost to, here we create a directory within the blackcoin directory
BITCOIN_ROOT=$(pwd)
BOOST_PREFIX="${BITCOIN_ROOT}/boost"
mkdir -p $BOOST_PREFIX
@@ -58,7 +58,7 @@ cd boost_1_61_0
# Also here: https://gist.githubusercontent.com/laanwj/bf359281dc319b8ff2e1/raw/92250de8404b97bb99d72ab898f4a8cb35ae1ea3/patch-boost_test_impl_execution_monitor_ipp.patch
patch -p0 < /usr/ports/devel/boost/patches/patch-boost_test_impl_execution_monitor_ipp
# Build w/ minimum configuration necessary for bitcoin
# Build w/ minimum configuration necessary for blackcoin
echo 'using gcc : : eg++ : <cxxflags>"-fvisibility=hidden -fPIC" <linkflags>"" <archiver>"ar" <striper>"strip" <ranlib>"ranlib" <rc>"" : ;' > user-config.jam
config_opts="runtime-link=shared threadapi=pthread threading=multi link=static variant=release --layout=tagged --build-type=complete --user-config=user-config.jam -sNO_BZIP2=1"
./bootstrap.sh --without-icu --with-libraries=chrono,filesystem,program_options,system,thread,test
@@ -74,19 +74,19 @@ See "Berkeley DB" in [build_unix.md](build_unix.md) for instructions on how to b
You cannot use the BerkeleyDB library from ports, for the same reason as boost above (g++/libstd++ incompatibility).
```bash
# Pick some path to install BDB to, here we create a directory within the bitcoin directory
# Pick some path to install BDB to, here we create a directory within the blackcoin directory
BITCOIN_ROOT=$(pwd)
BDB_PREFIX="${BITCOIN_ROOT}/db4"
BDB_PREFIX="${BITCOIN_ROOT}/build"
mkdir -p $BDB_PREFIX
# Fetch the source and verify that it is not tampered with
curl -o db-4.8.30.NC.tar.gz 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz' | sha256 -c
# MUST output: (SHA256) db-4.8.30.NC.tar.gz: OK
tar -xzf db-4.8.30.NC.tar.gz
curl -o db-6.2.32.tar.gz 'http://download.oracle.com/berkeley-db/db-6.2.32.tar.gz'
echo 'a9c5e2b004a5777aa03510cfe5cd766a4a3b777713406b02809c17c8e0e7a8fb db-6.2.32.tar.gz' | sha256 -c
# MUST output: (SHA256) db-6.2.32.tar.gz: OK
tar -xzf db-6.2.32.tar.gz
# Build the library and install to specified prefix
cd db-4.8.30.NC/build_unix/
cd db-6.2.32/build_unix/
# Note: Do a static build so that it can be embedded into the executable, instead of having to find a .so at runtime
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX CC=egcc CXX=eg++ CPP=ecpp
make install # do NOT use -jX, this is broken
@@ -108,7 +108,7 @@ The change will only affect the current shell and processes spawned by it. To
make the change system-wide, change `datasize-cur` and `datasize-max` in
`/etc/login.conf`, and reboot.
### Building Bitcoin Core
### Building Blackcoin More
**Important**: use `gmake`, not `make`. The non-GNU `make` will exit with a horrible error.

View File

@@ -20,17 +20,17 @@ Dependencies
NOTE: Building with Qt4 is still supported, however, could result in a broken UI. Building with Qt5 is recommended.
Build Bitcoin Core
Build Blackcoin More
------------------------
1. Clone the bitcoin source code and cd into `bitcoin`
1. Clone the blackcoin source code and cd into `blackcoin-more`
git clone https://github.com/bitcoin/bitcoin
cd bitcoin
git clone https://gitlab.com/blackcoin/blackcoin-more/
cd blackcoin-more
2. Build bitcoin-core:
2. Build blackcoin-more:
Configure and build the headless bitcoin binaries as well as the GUI (if Qt is found).
Configure and build the headless blackcoin binaries as well as the GUI (if Qt is found).
You can disable the GUI build by passing `--without-gui` to configure.
@@ -49,37 +49,37 @@ Build Bitcoin Core
Running
-------
Bitcoin Core is now available at `./src/bitcoind`
Blackcoin More is now available at `./src/blackmored`
Before running, it's recommended you create an RPC configuration file.
echo -e "rpcuser=bitcoinrpc\nrpcpassword=$(xxd -l 16 -p /dev/urandom)" > "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
echo -e "rpcuser=blackcoinrpc\nrpcpassword=$(xxd -l 16 -p /dev/urandom)" > "/Users/${USER}/Library/Application Support/Blackmore/blackmore.conf"
chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
chmod 600 "/Users/${USER}/Library/Application Support/Blackmore/blackmore.conf"
The first time you run bitcoind, it will start downloading the blockchain. This process could take several hours.
The first time you run blackmored, it will start downloading the blockchain. This process could take several hours.
You can monitor the download process by looking at the debug.log file:
tail -f $HOME/Library/Application\ Support/Bitcoin/debug.log
tail -f $HOME/Library/Application\ Support/Blackmore/debug.log
Other commands:
-------
./src/bitcoind -daemon # Starts the bitcoin daemon.
./src/bitcoin-cli --help # Outputs a list of command-line options.
./src/bitcoin-cli help # Outputs a list of RPC commands when the daemon is running.
./src/blackmored -daemon # Starts the blackcoin daemon.
./src/blackmore-cli --help # Outputs a list of command-line options.
./src/blackmore-cli help # Outputs a list of RPC commands when the daemon is running.
Using Qt Creator as IDE
------------------------
You can use Qt Creator as an IDE, for bitcoin development.
You can use Qt Creator as an IDE, for blackcoin development.
Download and install the community edition of [Qt Creator](https://www.qt.io/download/).
Uncheck everything except Qt Creator during the installation process.
1. Make sure you installed everything through Homebrew mentioned above
2. Do a proper ./configure --enable-debug
3. In Qt Creator do "New Project" -> Import Project -> Import Existing Project
4. Enter "bitcoin-qt" as project name, enter src/qt as location
4. Enter "blackmore-qt" as project name, enter src/qt as location
5. Leave the file selection as it is
6. Confirm the "summary page"
7. In the "Projects" tab select "Manage Kits..."

View File

@@ -1,12 +1,12 @@
UNIX BUILD NOTES
====================
Some notes on how to build Bitcoin Core in Unix.
Some notes on how to build Blackcoin More in Unix.
(for OpenBSD specific instructions, see [build-openbsd.md](build-openbsd.md))
Note
---------------------
Always use absolute paths to configure and compile bitcoin and the dependencies,
Always use absolute paths to configure and compile blackcoin and the dependencies,
for example, when specifying the path of the dependency:
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
@@ -24,7 +24,7 @@ make
make install # optional
```
This will build bitcoin-qt as well if the dependencies are met.
This will build blackmore-qt as well if the dependencies are met.
Dependencies
---------------------
@@ -42,7 +42,7 @@ Optional dependencies:
Library | Purpose | Description
------------|------------------|----------------------
miniupnpc | UPnP Support | Firewall-jumping support
libdb4.8 | Berkeley DB | Wallet storage (only needed when wallet enabled)
libdb6.2 | Berkeley DB | Wallet storage (only needed when wallet enabled)
qt | GUI | GUI toolkit (only needed when GUI enabled)
protobuf | Payments in GUI | Data interchange format used for payment protocol (only needed when GUI enabled)
libqrencode | QR codes in GUI | Optional for generating QR codes (only needed when GUI enabled)
@@ -55,7 +55,7 @@ Memory Requirements
--------------------
C++ compilers are memory-hungry. It is recommended to have at least 1.5 GB of
memory available when compiling Bitcoin Core. On systems with less, gcc can be
memory available when compiling Blackcoin More. On systems with less, gcc can be
tuned to conserve memory with additional CXXFLAGS:
@@ -79,20 +79,14 @@ install necessary parts of boost:
sudo apt-get install libboost-all-dev
BerkeleyDB is required for the wallet. db4.8 packages are available [here](https://launchpad.net/~bitcoin/+archive/bitcoin).
You can add the repository and install using the following commands:
BerkeleyDB 6.2 is required for the wallet.
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev
Ubuntu and Debian have their own libdb-dev and libdb++-dev packages, but these will install
BerkeleyDB 5.1 or later, which break binary wallet compatibility with the distributed executables which
are based on BerkeleyDB 4.8. If you do not care about wallet compatibility,
Ubuntu and Debian have their own libdb-dev and libdb++-dev packages, but these will most likely install
BerkeleyDB 5.1, which break binary wallet compatibility with the distributed executables which
are based on BerkeleyDB 6.2. If you do not care about wallet compatibility,
pass `--with-incompatible-bdb` to configure.
See the section "Disable-wallet mode" to build Bitcoin Core without wallet.
See the section "Disable-wallet mode" to build Blackcoin More without wallet.
Optional:
@@ -105,7 +99,7 @@ ZMQ dependencies:
Dependencies for the GUI: Ubuntu & Debian
-----------------------------------------
If you want to build Bitcoin-Qt, make sure that the required packages for Qt development
If you want to build Blackmore-Qt, make sure that the required packages for Qt development
are installed. Either Qt 5 or Qt 4 are necessary to build the GUI.
If both Qt 4 and Qt 5 are installed, Qt 5 will be used. Pass `--with-gui=qt4` to configure to choose Qt4.
To build without GUI pass `--without-gui`.
@@ -122,7 +116,7 @@ libqrencode (optional) can be installed with:
sudo apt-get install libqrencode-dev
Once these are installed, they will be found by configure and a bitcoin-qt executable will be
Once these are installed, they will be found by configure and a blackmore-qt executable will be
built by default.
Dependency Build Instructions: Fedora
@@ -145,7 +139,7 @@ libqrencode (optional) can be installed with:
Notes
-----
The release is built with GCC and then "strip bitcoind" to strip the debug
The release is built with GCC and then "strip blackmored" to strip the debug
symbols, which reduces the executable size by about 90%.
@@ -163,28 +157,28 @@ turned off by default. See the configure options for upnp behavior desired:
Berkeley DB
-----------
It is recommended to use Berkeley DB 4.8. If you have to build it yourself:
It is recommended to use Berkeley DB 6.2. If you have to build it yourself:
```bash
BITCOIN_ROOT=$(pwd)
# Pick some path to install BDB to, here we create a directory within the bitcoin directory
BDB_PREFIX="${BITCOIN_ROOT}/db4"
# Pick some path to install BDB to, here we create a directory within the blackcoin directory
BDB_PREFIX="${BITCOIN_ROOT}/build"
mkdir -p $BDB_PREFIX
# Fetch the source and verify that it is not tampered with
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz' | sha256sum -c
# -> db-4.8.30.NC.tar.gz: OK
tar -xzvf db-4.8.30.NC.tar.gz
wget 'http://download.oracle.com/berkeley-db/db-6.2.32.tar.gz'
echo 'a9c5e2b004a5777aa03510cfe5cd766a4a3b777713406b02809c17c8e0e7a8fb db-6.2.32.tar.gz' | sha256sum -c
# -> db-6.2.32.tar.gz: OK
tar -xzvf db-6.2.32.tar.gz
# Build the library and install to our prefix
cd db-4.8.30.NC/build_unix/
cd db-6.2.32/build_unix/
# Note: Do a static build so that it can be embedded into the executable, instead of having to find a .so at runtime
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
make install
# Configure Bitcoin Core to use our own-built instance of BDB
# Configure Blackcoin More to use our own-built instance of BDB
cd $BITCOIN_ROOT
./autogen.sh
./configure LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/" # (other args...)
@@ -203,7 +197,7 @@ If you need to build Boost yourself:
Security
--------
To help make your bitcoin installation more secure by making certain attacks impossible to
To help make your blackcoin installation more secure by making certain attacks impossible to
exploit even if a vulnerability is found, binaries are hardened by default.
This can be disabled with:
@@ -227,7 +221,7 @@ Hardening enables the following features:
To test that you have built PIE executable, install scanelf, part of paxutils, and use:
scanelf -e ./bitcoin
scanelf -e ./blackmore
The output should contain:
@@ -236,13 +230,13 @@ Hardening enables the following features:
* Non-executable Stack
If the stack is executable then trivial stack based buffer overflow exploits are possible if
vulnerable buffers are found. By default, bitcoin should be built with a non-executable stack
vulnerable buffers are found. By default, blackcoin should be built with a non-executable stack
but if one of the libraries it uses asks for an executable stack or someone makes a mistake
and uses a compiler extension which requires an executable stack, it will silently build an
executable without the non-executable stack protection.
To verify that the stack is non-executable after compiling use:
`scanelf -e ./bitcoin`
`scanelf -e ./blackmore`
the output should contain:
STK/REL/PTL
@@ -252,7 +246,7 @@ Hardening enables the following features:
Disable-wallet mode
--------------------
When the intention is to run only a P2P node without a wallet, bitcoin may be compiled in
When the intention is to run only a P2P node without a wallet, blackcoin may be compiled in
disable-wallet mode with:
./configure --disable-wallet
@@ -274,18 +268,17 @@ Setup and Build Example: Arch Linux
This example lists the steps necessary to setup and build a command line only, non-wallet distribution of the latest changes on Arch Linux:
pacman -S git base-devel boost libevent python
git clone https://github.com/bitcoin/bitcoin.git
cd bitcoin/
git clone https://gitlab.com/blackcoin/blackcoin-more.git
cd blackcoin-more/
./autogen.sh
./configure --disable-wallet --without-gui --without-miniupnpc
make check
Note:
Enabling wallet support requires either compiling against a Berkeley DB newer than 4.8 (package `db`) using `--with-incompatible-bdb`,
or building and depending on a local version of Berkeley DB 4.8. The readily available Arch Linux packages are currently built using
`--with-incompatible-bdb` according to the [PKGBUILD](https://projects.archlinux.org/svntogit/community.git/tree/bitcoin/trunk/PKGBUILD).
As mentioned above, when maintaining portability of the wallet between the standard Bitcoin Core distributions and independently built
node software is desired, Berkeley DB 4.8 must be used.
Enabling wallet support requires either compiling against a Berkeley DB newer than 6.2 (package `db`) using `--with-incompatible-bdb`,
or building and depending on a local version of Berkeley DB 6.2.
As mentioned above, when maintaining portability of the wallet between the standard Blackcoin More distributions and independently built
node software is desired, Berkeley DB 6.2 must be used.
ARM Cross-compilation

View File

@@ -1,7 +1,7 @@
WINDOWS BUILD NOTES
====================
Some notes on how to build Bitcoin Core for Windows.
Some notes on how to build Blackcoin More for Windows.
Most developers use cross-compilation from Ubuntu to build executables for
Windows. This is also used to build the release binaries.