BTCPrivate / BTCP-Rebase

Work in progress. DO NOT USE.
https://btcprivate.org
Other
113 stars 23 forks source link

Bitcoin Private Rebase

IN DEVELOPMENT - FOR TESTING ONLY - DO NOT USE IN PRODUCTION

This is currently in development software, not all consensus rules have been implemented. You should NOT rely on this in production yet, for production use cases please use https://github.com/BTCPrivate/BitcoinPrivate/

Development Status

Build Status

This Bitcoin Private cryptocurrency daemon and cli tools should build on linux and sync the full BTCP mainnet chain. Z addresses, wallet code, and tests are not fully working yet and should be considered unstable.

Build Instructions

Linux (>= Ubuntu 16.04):

sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3 libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev
cd scripts
./build.sh

Or alternatively:

./autogen.sh
cd depends
make HOST=x86_64-unknown-linux-gnu
cd ..
./configure --prefix=$PWD/depends/x86_64-unknown-linux-gnu
make

This will build all the dependencies and bootstrap a linux build. There are several options you can use:

MacOS (High Sierra):

You must first install libomp (Apple's version of Clang does not have support for OpenMP included); you can do that via the following Terminal commands:

Install XCode:

xcode-select --install

Install Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install libomp:

brew install libomp

Then, run scripts/build-mac.sh to compile.

What is the Bitcoin Private Rebase?

Bitcoin Private is currently based primarily on the Zcash codebase, which itself is a snapshot of Bitcoin dating to mid-2015. Most z protocol coins all rely on this same code, which is now missing roughly 3 years of blockchain upgrades that have been integrated into Bitcoin. Based on the structure of Zcash, and because there’s now a 3 year code divergence, integrating blockchain upgrades developed in bitcoin core into any z protocol coin has become increasingly cumbersome.

We endeavor a complete refactoring of Bitcoin Private to allow for more facile incorporation of Bitcoin upstream changes. This release will coincide with activation of full SegWit support, giving the BTCP more scale both on chain as well as enabling off-chain protocols such as the lightning network and cross-chain swaps. Additionally, it will bring another 3 years of upgrades to the core node including stability and speed improvements as well as a number of usability enhancements to the reference wallet including support for hierarchical deterministic wallets (for shielded and transparent addresses) and wallet encryption.

Learn more about the rebase at https://btcprivate.org/roadmap.

License

Bitcoin Private is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.

Automated Testing

Developers are strongly encouraged to write unit tests for new code, and to submit new unit tests for old code. Unit tests can be compiled and run (assuming they weren't disabled in configure) with: make check. Further details on running and extending unit tests can be found in /src/test/README.md.

There are also regression and integration tests, written in Python, that are run automatically on the build server. These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py

The Travis CI system makes sure that every pull request is built for Windows, Linux, and macOS, and that unit/sanity tests are run automatically.

Manual Quality Assurance (QA) Testing

Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.

Translations

Changes to translations as well as new translations can be submitted to the issue tracker. We will be adding transifex support at a later point in time, and for now porting those changes directly from Bitcoin Core.