CredaCash Software README file

CredaCash (TM) Network Node Software v0.90 Beta1 (2015-09-26)

This software is Copyright (C) 2015-2016 Creda Software, Inc. and licensed under
the Creda Software License Agreement

   https://credacash.com/legal/software-license-agreement/

This license is designed to allow anyone to freely run, modify, and redistribute
the CredaCash software as long as they are using it with the CredaCash currency.

The source code can be found at https://github.com/credacash/

Please report any problems to https://credacash.com/contact/

CredaCash is a trademark of Creda Software, Inc. US and worldwide patents pending.


Contents
--------

This release contains:

   ccnode.exe     - CredaCash network node server Windows x64 executable.
                    This program connects to the network, synchronizes with
                    the blockchain, and optionally acts as a network gateway
                    for wallet and payment applications.  When run, this
                    program creates a .db file to store the downloaded blocks.

   ccnode.conf    - Sample configuration file for ccnode.exe

   wallet-sim.py  - Python script that demonstrates use of the wallet API
                    and tests the CredaCash network.

   burn-tx.py     - Python script to test the transaction library.

   tor.conf       - Sample configuration file for the Tor proxy.

   cctracker.exe  - Network node peer tracker used to set up a private testnet.

It also includes the following files required to run the software:

   genesis.dat    - Genesis block used for the public beta1 testnet.

   rendezvous.lis - List of peer trackers for the public beta1 testnet.

   cctx64.dll     - The CredaCash transaction library, used by the
                    python scripts.

   zkkey\*        - Keys to create and verify zero knowledge proofs.

   Tor\*          - The standalone version of Tor Expert Bundle
                    for Windows v0.2.8.6, which was downloaded from
                    https://www.torproject.org/download/download.html


Requirements
------------

This release runs only under a 64-bit version of Windows.

The following steps assume the CredaCash software has been unpacked and placed
into the directory <release_directory>

To run the python scripts, it also requires the installation of:

   - Python 2.7.x for Windows x86-64 which can be found at
     https://www.python.org/downloads/windows/ under
     "Latest Python 2 Release", "Windows x86-64 MSI installer"


Running the Wallet Simulation Script
------------------------------------

To run the wallet simulation script using a public transaction server on the
public beta1 testnet:

1. Open a command prompt window and enter the commands:

   cd <release_directory>
   Tor\tor.exe -f tor.conf

Ensure tor is running by waiting until it says "Bootstrapped 100%: Done".

2. Open a second command prompt window, and enter the commands:

   cd <release_directory>
   C:\<python2x64_directory>\python.exe wallet-sim.py 9050

If you get the error message:

     WindowsError: [Error 193] %1 is not a valid Win32 application

that means you are running the 32-bit version of python instead of the 64-bit
version.  Please make sure you have Python v2.7.x x86-64 (amd64) installed and
specify the full path to the 64-bit python.exe when running wallet-sim.py

3. The wallet-sim.py script can also be used to test the network handling of
invalid transactions and double-spend attempts.  To run these tests, use the
command:

   C:\<python2x64_directory>\python.exe wallet-sim.py 9050 1

These tests will randomly flip a single bit in a valid transaction to verify
the resulting transaction is always rejected, and it attempts to double-spend
outputs to confirm that only one of the two spend attempts succeeds while the
other fails.

4. For diagnostic purposes, the wallet-sim.py script can also print the json
strings sent to and from the transaction server:

   C:\<python2x64_directory>\python.exe wallet-sim.py 9050 0 1


Running the Network Node Server
-------------------------------

1. Open a command prompt window and enter the commands:

   cd <release_directory>
   ccnode.exe --datadir temp > temp.out

After a short delay, the network node software should begin synchronizing with
the beta1 testnet blockchain and displaying block information.  If the time on
your computer is set correctly, the value for the "age" column on the right will
eventually reach a small number that varies by only plus or minus a few seconds
with each new block.  This indicates the blockchain has fully synchronized.

2. After the network node software has finished synchronizing, you can run the
wallet simulation script using your local transaction server by opening a
command prompt window and enter the commands:

   cd <release_directory>
   C:\<python2x64_directory>\python.exe wallet-sim.py 9223

3. The program data (including the blockchain) is stored in the --datadir.
After stopping ccnode.exe, this data can be deleted with the command:

   rmdir/s/q temp


Setting up a Private Testnet
----------------------------

The following steps describe how to set up a private blockchain and testnet with
three witnesses, a transaction server and a rendezvous server.  While these
could all run on different computers, these steps describe how to run all of
these instances on a single computer for testing purposes.  In order to avoid
conflicts, each instance of ccnode.exe must have a different baseport and
datadir.

1. Initialize a new blockchain by opening a command prompt window and entering
the commands:

   cd <release_directory>
   ccnode.exe --genesis-generate --genesis-file mygenesis.dat --genesis-nwitnesses 3 --genesis-maxmal 0

This command prompt window may be closed when done.

2. Start the tor proxy by opening a command prompt window and entering the
commands:

   cd <release_directory>
   tor\tor.exe -f tor.conf --DataDirectory temp_t --SocksPort 0 --HiddenServiceDir temp_t --HiddenServicePort "443 9221"

Ensure tor is running by waiting until it says "Bootstrapped 100%: Done".

3. Start a rendezvous server by opening a new command prompt window and entering
the commands:

   cd <release_directory>
   cctracker.exe --datamem 1 --conns 20 --threads 2

4. Start the first witness by opening a new command prompt window and entering
the commands:

   cd <release_directory>
   ccnode.exe --genesis-file mygenesis.dat --rendezvous-file temp_t\hostname --transact 0 --baseport 9300 --datadir temp_0 --witness-index 0 > temp0.out

5. Start a second witness by opening a new command prompt window and entering
the commands:

   cd <release_directory>
   ccnode.exe --genesis-file mygenesis.dat --rendezvous-file temp_t\hostname --transact 0 --baseport 9310 --datadir temp_1 --witness-index 1 > temp1.out

6. Start a third witness by opening a new command prompt window and entering the
commands:

   cd <release_directory>
   ccnode.exe --genesis-file mygenesis.dat --rendezvous-file temp_t\hostname --transact 0 --baseport 9320 --datadir temp_2 --witness-index 2 > temp2.out

7. If desired, start a private transaction server by opening a new command
prompt window and entering the commands:

   cd <release_directory>
   ccnode.exe --genesis-file mygenesis.dat --rendezvous-file temp_t\hostname --baseport 9400 --datadir temp_3 > temp3.out

8. As soon as the private transaction server has synchronized with the network,
the network can be tested by opening a new command prompt window and entering
the commands:

   cd <release_directory>
   C:\<python2x64_directory>\python.exe wallet-sim.py 9400

It is possible to experiment with starting and stopping the witnesses.  As long
as more than half are running (plus an allowance for the --genesis-maxmal value,
if that was set greater than zero when the genesis data file was generated),
then the blockchain should continue to operate.  When a witnesses is restarted,
it should resynchronize with the blockchain and resume operation.

Please report any problems to https://credacash.com/contact/