# Aucoin: *A distributed cryptocurrency* ## Quick Start ### Installation The easiest way to install Aucoin is to use pip: ```bash pip3 install --upgrade https://git.caspervk.net/caspervk/aucoin/archive/master.tar.gz ``` **Aucoin requires Python 3.6 or later**. Python 3.6 is available in many distributions but you may need to build it on Debian. See the *Detailed Install Instructions* section for further information. ### Usage The program can be started by running `aucoin` or `python3 -m aucoin` depending on system configuration. Aucoin uses TCP port 8334 to communicate with other nodes; you may need to open it in your firewall. ```text Usage: aucoin [OPTIONS] Options: -m, --miners INTEGER Number of mining processors. [default: 1] -p, --max-peers INTEGER Maximum number of network peers. [default: 100] -i, --interface TEXT Network interface to bind to. [default: 0.0.0.0] -s, --seed TEXT Nodes to connect to. Overrides DNS seeds and saved peer database. Can be specified multiple times. -v, --verbose Increase verbosity. Can be used multiple times. --no-catch-up Skip catching up to the rest of the network before starting miner and CLI. --fast-unsafe-catch-up Catch up much faster by downloading the blockchain database from central server (aucoin.network). --statistics Log statistics to .aucoin/statistics/stats.json. --clean Remove data directory (blockchain, wallet, etc). --help Show this message and exit. ``` ### Updating Update by issuing the same command as with installation. ## Screenshots ### Node status ![Node status](images/status.png) ### Transaction history ![Transaction history](images/history.png) ### Catching up ![Catching up](images/catchup.png) ## Detailed Install Instructions ### Building Python 3.6 The following will build and install Python 3.6 on Debian Stretch: ```bash apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev liblzma-dev libgdbm-dev tk-dev wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz tar xf Python-3.6.4.tgz cd Python-3.6.4 ./configure --enable-optimizations make make altinstall # https://docs.python.org/3/using/unix.html#building-python ``` Replace `python3` and `pip3` with `python3.6` and `pip3.6`, respectively, throughout this document if Python 3.6 was built manually. ### Development Setup To get started developing on Aucoin, it is recommended to install the package from git. The following will install Aucoin along with the additional development dependencies (optionally in a virtual environment): ```bash git clone git@git.caspervk.net:caspervk/aucoin.git cd aucoin python3 -m venv venv # optional . venv/bin/activate # optional pip3 install --editable .[dev] ``` Execute `git pull` to update from upstream. #### Building Package To build wheels for the project, first install the `wheel` package: ```bash pip3 install wheel ``` To build the wheel: ```bash python3 setup.py bdist_wheel ``` More information on how to package and distribute projects [here](https://packaging.python.org/tutorials/distributing-packages/#packaging-your-project). ## Seed Node The only centralised component of the system is the seed nodes; these are the nodes that new clients will connect with to bootstrap the network. By default, clients retrieve the list of seed node IP-addresses through DNS at the hostname seed.aucoin.network. To support multiple seed nodes the zone should be configured as follows: ```zone seed IN A IN A ... ```