BitcoinPrivate-legacy/README.md

194 lines
6.2 KiB
Markdown
Raw Normal View History

Bitcoin Private
----------------
2018-02-09 11:12:14 -08:00
2018-02-24 07:23:12 -08:00
### Testnet
2018-02-24 07:17:47 -08:00
2018-02-24 07:37:43 -08:00
Build the latest version of BTCP using the instructions below, then follow the [testnet guide](doc/testnet.md)
2018-02-24 07:17:47 -08:00
**Bitcoin Private v1.0.10-1**
2017-05-12 13:00:56 -07:00
2018-02-24 07:19:23 -08:00
P2P Port: 7933
2018-02-24 07:23:12 -08:00
2018-02-24 07:19:23 -08:00
RPC Port: 7932
2016-11-04 22:24:27 -07:00
Bitcoin Private is a fork of Zclassic, merging in the UTXO set of Bitcoin. BTCP is financial freedom.
### Info
The snapshot will take place on February 28th. The fork (creation of BTCP) will occur shortly after, on March 2nd.
2018-02-24 07:37:43 -08:00
Build
2017-04-07 17:07:34 -07:00
-----------------
### Linux
2018-02-09 11:12:14 -08:00
Get dependencies:
2016-11-05 01:34:09 -07:00
```{r, engine='bash'}
sudo apt-get install \
build-essential pkg-config libc6-dev m4 g++-multilib \
autoconf libtool ncurses-dev unzip git python \
zlib1g-dev wget bsdmainutils automake
```
2018-02-24 07:37:43 -08:00
Build:
2016-11-05 01:34:09 -07:00
```{r, engine='bash'}
2018-02-24 07:37:43 -08:00
# Checkout
git clone https://github.com/BTCPrivate/BitcoinPrivate.git
cd BitcoinPrivate
2016-11-05 01:34:09 -07:00
# Build
./btcputil/build.sh -j$(nproc)
# Fetch Zcash ceremony keys
./btcputil/fetch-params.sh
2018-02-24 07:37:43 -08:00
```
Run:
```
./src/btcpd
2016-11-05 01:34:09 -07:00
```
2017-04-07 17:07:34 -07:00
### Windows
2018-02-24 07:37:43 -08:00
Windows is not an officially or fully supported build - however there are two ways to build BTCP for Windows:
* On Linux using [Mingw-w64](https://mingw-w64.org/doku.php) cross compiler tool chain. Ubuntu 16.04 Xenial is proven to work and the instructions is for such release.
* On Windows 10 (64-bit version) using [Windows Subsystem for Linux (WSL)](https://msdn.microsoft.com/commandline/wsl/about) and Mingw-w64 cross compiler tool chain.
With Windows 10, Microsoft released a feature called WSL. It basically allows you to run a bash shell directly on Windows in an ubuntu environment. WSL can be installed with other Linux variants, but as mentioned before, the distro proven to work is Ubuntu.
Follow this [link](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide) for installing WSL first
### Building for Windows 64-Bit
1. Get the usual dependencies:
2017-04-07 17:07:34 -07:00
```{r, engine='bash'}
sudo apt-get install \
build-essential pkg-config libc6-dev m4 g++-multilib \
autoconf libtool ncurses-dev unzip git python \
2018-02-15 15:26:29 -08:00
zlib1g-dev wget bsdmainutils automake mingw-w64
2017-04-07 17:07:34 -07:00
```
2. Set the default ming32 gcc/g++ compiler option to posix, fix problem with packages in Xenial
2017-04-07 17:07:34 -07:00
```{r, engine='bash'}
sudo update-alternatives --config x86_64-w64-mingw32-gcc
sudo update-alternatives --config x86_64-w64-mingw32-g++
```
3. Install Rust
```{r, engine='bash'}
curl https://sh.rustup.rs -sSf | sh
source ~/.cargo/env
rustup install stable-x86_64-unknown-linux-gnu
rustup install stable-x86_64-pc-windows-gnu
rustup target add x86_64-pc-windows-gnu
vi ~/.cargo/config
```
and add:
```
[target.x86_64-pc-windows-gnu]
linker = "/usr/bin/x86_64-w64-mingw32-gcc"
```
Note that in WSL, the BTCPrivate source code must be somewhere in the default mount file system. i.e /usr/src/BTCPrivate, and not on /mnt/d/. What this means is that you cannot build directly on the windows system
4. Build for Windows
```{r, engine='bash'}
PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') # strip out problematic Windows %PATH% imported var
./btcputil/build-win.sh -j$(nproc)
2017-04-07 17:07:34 -07:00
```
5. Installation
After building in WSL, you can make a copy of the compiled executables to a directory on your Windows file system. This is done the following way
```{r, engine='bash'}
make install DESTDIR=/mnt/c/btcp/BTCPrivate
```
This will install the executables to `c:\btcp\BTCPrivate
2017-04-07 17:07:34 -07:00
### Mac
2018-02-09 11:12:14 -08:00
Get dependencies:
2017-04-07 17:07:34 -07:00
```{r, engine='bash'}
#install xcode
xcode-select --install
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install cmake autoconf libtool automake coreutils pkgconfig gmp wget
brew install gcc5 --without-multilib
2017-04-07 17:07:34 -07:00
```
2018-02-09 11:12:14 -08:00
Install:
2017-04-07 17:07:34 -07:00
```{r, engine='bash'}
# Build
2017-12-28 00:23:32 -08:00
./btcputil/build-mac.sh -j$(sysctl -n hw.physicalcpu)
2017-04-07 17:07:34 -07:00
# fetch key
./btcputil/fetch-params.sh
2017-04-07 17:07:34 -07:00
# Run
./src/btcpd
2017-04-07 17:07:34 -07:00
```
2016-11-19 14:11:20 -08:00
2018-02-21 11:58:18 -08:00
### Additional notes
If you plan to build for windows and linux at the same time, be sure to delete all the built files for whatever you build first. An easy way to do this is by taking the binaries out of the repo, delete all files except the .git folder and then do a git hard reset.
2016-11-19 14:21:53 -08:00
About
--------------
[Bitcoin Private](http://zclassic.org/), like [Zclassic](https://zclassic.org/) and [Zcash](https://z.cash/), is an implementation of the "Zerocash" protocol.
2018-02-09 11:12:14 -08:00
Based on Zclassic's code, it intends to offer a far higher standard of privacy
2016-11-03 21:07:56 -07:00
through a sophisticated zero-knowledge proving scheme that preserves
confidentiality of transaction metadata. Technical details are available
2016-11-19 14:21:53 -08:00
in the Zcash [Protocol Specification](https://github.com/zcash/zips/raw/master/protocol/protocol.pdf).
This software is the Bitcoin Private client. It downloads and stores the entire history
2018-02-09 11:12:14 -08:00
of Bitcoin Private transactions. Depending on the speed of your computer and network
connection, the synchronization process could take a day or more once the
2016-11-19 14:21:53 -08:00
blockchain has reached a significant size.
2018-02-09 11:12:14 -08:00
It includes both `btcpd` (the daemon) and `btcp-cli` (the command line tools).
Security Warnings
-----------------
See important security warnings in
[doc/security-warnings.md](doc/security-warnings.md).
**Bitcoin Private is unfinished and highly experimental.** Use at your own risk.
Deprecation Policy
------------------
This release is considered deprecated 16 weeks after the release day. There
is an automatic deprecation shutdown feature which will halt the node some
time after this 16 week time period. The automatic feature is based on block
height and can be explicitly disabled.
Where do I begin?
-----------------
We have a guide for joining the main Bitcoin Private network:
https://github.com/zcash/zcash/wiki/1.0-User-Guide
### Need Help?
* See documentation at the [Zcash Wiki](https://github.com/zcash/zcash/wiki) and the [Zclassic Wiki](https://github.com/z-classic/zclassic/wiki)
for help and more information.
2016-11-19 14:21:53 -08:00
### Want to participate in development?
* Code review is welcome!
* If you want to get to know us join our Discord: https://discord.gg/9xezcaK
2018-02-23 19:34:15 -08:00
* We have a brief guide for joining the Bitcoin private testnet [here](doc/testnet.md)
Participation in the Bitcoin Private project is subject to a
2016-11-19 14:21:53 -08:00
[Code of Conduct](code_of_conduct.md).
Merge: v1.0.4 into master (#42) * Add getlocalsolps and getnetworksolps RPC calls, show them in getmininginfo * Add benchmark for attempting decryption of notes * Add benchmark for incrementing note witnesses * Add -metricsui flag to toggle between persistent screen and rolling metrics Defaults to true if stdout is a TTY, else false. * Add -metricsrefreshtime option * Only show metrics by default if stdout is a TTY * Document metrics screen options * Fix stale comment referencing upstream block interval * Add checkpoint at block height 15000 * Added mainnet, testnet, and onion nodes * Make command line option to show all debugging consistent with similar options Most people expect a value of 1 to enable all for command line arguments. However to do this for the -debug option you must type "-debug=". This has been changed to allow "-debug=1" as well as "-debug=" to enable all debug logging * Update documentation to match the #4219 change * Update help message to match the #4219 change * Clarify that metrics options are only useful without -daemon and -printtoconsole * Increase length of metrics divider * Closes #1857. Fixes bug where tx spending only notes had priority of 0. * Closes #1901. Increase default settings for the max block size when mining and the amount of space available for priority transactions. * Write witness caches when writing the best block For steady-state operation, this reduces the average time between wallet disk writes from once per block to once per hour. On -rescan, witness caches are only written out at the end along with the best block, increasing speed while ensuring that on-disk state is kept consistent. Witness caches are now never recreated during a -reindex, on the assumption that the blocks themselves are not changing (the chain is just being reconstructed), and so the witnesses will remain valid. Part of #1749. * Add porter dev overrides for CC, CXX, MAKE, BUILD, HOST * Apply miniupnpc patches to enable compilation on Solaris 11 These can be removed after the next MiniUPnP release. Closes #1835. * Closes #1903. Add fee parameter to z_sendmany. * Add an upstream miniupnpc patch revision * Metrics - Don't exclaim unless > 1 "You have validated 0 transactions!" sounds a little less enthusiastic that intended. Also, only says "1 transaction". * Address review comments, tweak strings * bash-completion: Adapt for 0.12 and 0.13 * separate completion for bitcoind and bitcoin-cli * remove RPC support from bitcoind completion * add completion for bitcoin-tx and bitcoin-qt * rely on autoloading of completions * Change function names to not clash with Bitcoin, apply to correct binaries * Add bash completion files to Debian package * Always bash-complete the default account * Add Zcash RPC commands to CLI argument completion * Fixes #1823. Witness anchors for input notes no longer cross block boundaries. * Edit for grammar: "block chain" At this point, I believe it is universally accepted that "blockchain" is one word, and should not be separated into two. * Increase timeout as laptops on battery power have cpu throttling. * Isolate verification to a `ProofVerifier` context object that allows verification behavior to be tuned by the caller. * Regression test. * Ensure cache contains valid entry when anchor is popped. * Ensure ProofVerifier cannot be accidentally copied. * Document behaviour of CWallet::SetBestChain * WitnessAnchorData only needs to store one witness per JSOutPoint. * Rename Dummy to Disabled. * Add more tests for ProofVerifier. * Fix indentation * Generate JS for trydecryptnotes, make number of addresses a variable * Add JS to second block to ensure witnesses are incremented * ASSERT_TRUE -> ASSERT_FALSE * Skip JoinSplit verification before the last checkpoint Part of #1749 * Gather release notes from previous release to HEAD Also update release-process.md to replace git shortlog command with release-notes.py script. * Add a reindex test that fails because of a bug in decrementing witness caches Ref: https://github.com/zcash/zcash/pull/1904#issuecomment-265992988 * Make the test pass by fixing the bug! * Only check cache validity for witnesses being incremented or decremented Fixes the bug resulting from #1904. * Check that E' points are actually in G2 by ensuring they are of order r. * Fix bug in wallet tests * Extract block-generation wallet test code into a function * Rewrite reindex test to check beyond the max witness cache size * Fix bug in IncrementNoteWitness() * Update payment API docs to recommend -rescan for fixing witness errors * Update version to 1.0.4 * Update man pages * Release notes, authors, changelog * Update seed nodes * Bugfix #14 - getblocksubsidy RPC command is incorrect
2016-12-19 04:59:58 -08:00
Building
--------
Build BTCP along with most dependencies from source by running
2017-12-28 00:23:32 -08:00
`./btcputil/build.sh`. Currently only Linux is officially supported.
Merge: v1.0.4 into master (#42) * Add getlocalsolps and getnetworksolps RPC calls, show them in getmininginfo * Add benchmark for attempting decryption of notes * Add benchmark for incrementing note witnesses * Add -metricsui flag to toggle between persistent screen and rolling metrics Defaults to true if stdout is a TTY, else false. * Add -metricsrefreshtime option * Only show metrics by default if stdout is a TTY * Document metrics screen options * Fix stale comment referencing upstream block interval * Add checkpoint at block height 15000 * Added mainnet, testnet, and onion nodes * Make command line option to show all debugging consistent with similar options Most people expect a value of 1 to enable all for command line arguments. However to do this for the -debug option you must type "-debug=". This has been changed to allow "-debug=1" as well as "-debug=" to enable all debug logging * Update documentation to match the #4219 change * Update help message to match the #4219 change * Clarify that metrics options are only useful without -daemon and -printtoconsole * Increase length of metrics divider * Closes #1857. Fixes bug where tx spending only notes had priority of 0. * Closes #1901. Increase default settings for the max block size when mining and the amount of space available for priority transactions. * Write witness caches when writing the best block For steady-state operation, this reduces the average time between wallet disk writes from once per block to once per hour. On -rescan, witness caches are only written out at the end along with the best block, increasing speed while ensuring that on-disk state is kept consistent. Witness caches are now never recreated during a -reindex, on the assumption that the blocks themselves are not changing (the chain is just being reconstructed), and so the witnesses will remain valid. Part of #1749. * Add porter dev overrides for CC, CXX, MAKE, BUILD, HOST * Apply miniupnpc patches to enable compilation on Solaris 11 These can be removed after the next MiniUPnP release. Closes #1835. * Closes #1903. Add fee parameter to z_sendmany. * Add an upstream miniupnpc patch revision * Metrics - Don't exclaim unless > 1 "You have validated 0 transactions!" sounds a little less enthusiastic that intended. Also, only says "1 transaction". * Address review comments, tweak strings * bash-completion: Adapt for 0.12 and 0.13 * separate completion for bitcoind and bitcoin-cli * remove RPC support from bitcoind completion * add completion for bitcoin-tx and bitcoin-qt * rely on autoloading of completions * Change function names to not clash with Bitcoin, apply to correct binaries * Add bash completion files to Debian package * Always bash-complete the default account * Add Zcash RPC commands to CLI argument completion * Fixes #1823. Witness anchors for input notes no longer cross block boundaries. * Edit for grammar: "block chain" At this point, I believe it is universally accepted that "blockchain" is one word, and should not be separated into two. * Increase timeout as laptops on battery power have cpu throttling. * Isolate verification to a `ProofVerifier` context object that allows verification behavior to be tuned by the caller. * Regression test. * Ensure cache contains valid entry when anchor is popped. * Ensure ProofVerifier cannot be accidentally copied. * Document behaviour of CWallet::SetBestChain * WitnessAnchorData only needs to store one witness per JSOutPoint. * Rename Dummy to Disabled. * Add more tests for ProofVerifier. * Fix indentation * Generate JS for trydecryptnotes, make number of addresses a variable * Add JS to second block to ensure witnesses are incremented * ASSERT_TRUE -> ASSERT_FALSE * Skip JoinSplit verification before the last checkpoint Part of #1749 * Gather release notes from previous release to HEAD Also update release-process.md to replace git shortlog command with release-notes.py script. * Add a reindex test that fails because of a bug in decrementing witness caches Ref: https://github.com/zcash/zcash/pull/1904#issuecomment-265992988 * Make the test pass by fixing the bug! * Only check cache validity for witnesses being incremented or decremented Fixes the bug resulting from #1904. * Check that E' points are actually in G2 by ensuring they are of order r. * Fix bug in wallet tests * Extract block-generation wallet test code into a function * Rewrite reindex test to check beyond the max witness cache size * Fix bug in IncrementNoteWitness() * Update payment API docs to recommend -rescan for fixing witness errors * Update version to 1.0.4 * Update man pages * Release notes, authors, changelog * Update seed nodes * Bugfix #14 - getblocksubsidy RPC command is incorrect
2016-12-19 04:59:58 -08:00
License
-------
For license information see the file [COPYING](COPYING).