diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5c1138b81..69f6b5c24 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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. diff --git a/INSTALL.md b/INSTALL.md index 520a47d96..f6af661f3 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -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. diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 8efc577d5..5a6a8d1d1 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -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. diff --git a/doc/build-openbsd.md b/doc/build-openbsd.md index 55283d6dc..07b37fe8f 100644 --- a/doc/build-openbsd.md +++ b/doc/build-openbsd.md @@ -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++ : "-fvisibility=hidden -fPIC" "" "ar" "strip" "ranlib" "" : ;' > 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. diff --git a/doc/build-osx.md b/doc/build-osx.md index 63a7ee28c..ce2eec3cb 100644 --- a/doc/build-osx.md +++ b/doc/build-osx.md @@ -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..." diff --git a/doc/build-unix.md b/doc/build-unix.md index d607d2a59..b641785f7 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -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 diff --git a/doc/build-windows.md b/doc/build-windows.md index 129774491..ac6118169 100644 --- a/doc/build-windows.md +++ b/doc/build-windows.md @@ -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.