Installation

The mixnet code is relatively simple to build and run on Mac OS X and Linux. We haven't tried it on Windows (yet).

Requirements

  • Go 1.12 or later
  • make
  • git

To download and build:

git clone https://github.com/nymtech/nym-mixnet.git
cd nym-mixnet
git checkout v0.2.1
make

In case you've been traumatized by Go's (lack of) dependency management in the past, you don't need to worry about $GOPATH, $GOROOT etc. Check the code out and build it wherever you want to.

Output should look like this:

nym-mixnet$ make
make build_client
make[1]: Entering directory 'build-dir/nym/nym-mixnet'
mkdir -p build
go build -o build/nym-mixnet-client ./cmd/nym-mixnet-client
make[1]: Leaving directory 'build-dir/nym/nym-mixnet'
make build_mixnode
make[1]: Entering directory 'build-dir/nym/nym-mixnet'
mkdir -p build
go build -o build/nym-mixnode ./cmd/nym-mixnode
make[1]: Leaving directory 'build-dir/nym/nym-mixnet'
make build_provider
make[1]: Entering directory 'build-dir/nym/nym-mixnet'
mkdir -p build
go build -o build/nym-mixnet-provider ./cmd/nym-mixnet-provider
make[1]: Leaving directory 'build-dir/nym/nym-mixnet'
make build_bench_client
make[1]: Entering directory 'build-dir/nym/nym-mixnet'
mkdir -p build
go build -o build/bench-nym-mixnet-client ./cmd/bench-nym-mixnet-client
make[1]: Leaving directory 'build-dir/nym/nym-mixnet'
make build_bench_provider
make[1]: Entering directory 'build-dir/nym/nym-mixnet'
mkdir -p build
go build -o build/bench-nym-mixnet-provider ./cmd/bench-nym-mixnet-provider
make[1]: Leaving directory 'build-dir/nym/nym-mixnet'

The above commands will check the code out from Github, and then compile six pieces of software into the build/ directory:

nym-mixnet$ ls build/
bench-nym-mixnet-client    nym-mixnet-client	nym-mixnode
bench-nym-mixnet-provider  nym-mixnet-provider

Forget about the bench-nym-* ones for the moment, those are for performance testing. The interesting ones for us right now are:

  1. the Nym mixnet client, nym-mixnet-client
  2. the Nym mixnode, nym-mixnode
  3. the Nym storage node, nym-mixnet-provider

In the next sections we'll try each of these out.