Bachelor's project in computer science at Aarhus University. https://git.caspervk.net/caspervk/aucoin/raw/branch/master/aucoin.pdf
Find a file
Casper V. Kristensen b7053ad014
Publish
2018-07-15 23:30:55 +02:00
aucoin Publish 2018-07-15 23:30:55 +02:00
images Publish 2018-07-15 23:30:55 +02:00
tests Publish 2018-07-15 23:30:55 +02:00
tools Publish 2018-07-15 23:30:55 +02:00
.gitignore Publish 2018-07-15 23:30:55 +02:00
aucoin.pdf Publish 2018-07-15 23:30:55 +02:00
LICENSE.txt Publish 2018-07-15 23:30:55 +02:00
README.md Publish 2018-07-15 23:30:55 +02:00
setup.py Publish 2018-07-15 23:30:55 +02:00

Aucoin: A distributed cryptocurrency

Quick Start

Installation

The easiest way to install Aucoin is to use pip:

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.

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

Transaction history

Transaction history

Catching up

Catching up

Detailed Install Instructions

Building Python 3.6

The following will build and install Python 3.6 on Debian Stretch:

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):

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:

pip3 install wheel

To build the wheel:

python3 setup.py bdist_wheel

More information on how to package and distribute projects here.

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:

seed    IN  A   <seed address>
        IN  A   <seed address>
        ...