Prerequisites: Go is required.
Clone the repo:
git clone git@github.com:mmathys/acfts.git
# or use the ETH Mirror:
git clone git@gitlab.ethz.ch:disco-students/fs20/mmathys-consensus-free-transaction-systems.git
Add $GOPATH/bin
to your $PATH
# Add this line to your .bashrc, .zshrc or similar
export PATH=$PATH:$GOPATH/bin
# reload .bashrc
source ~/.bashrc
Build source and install executables:
go build ./...
go install ./...
ACFTS is an asynchronous consensus-free transaction system. It consists of trusted servers and untrusted clients. Each server and client have a unique ECDSA key. The address is derived from its public key.
The client has a CLI which allows easy transfer of credits. In this setup, each client automatically gets 100 valid credits. The client CLI can be accessed by starting the client executable.
Topologies are defined as JSON configuration files in topologies/
.
Topologies encode all necessary information about server and clients, for example: address, keys, network address, replication instances. In a system, a server and client must always use the same topology.
When launching a server or a client, its configuration can be given by a topology, an address (which must correspond to a node in the topology). When server shard replication is used, a replication instance index can additionally be passed.
The CLIs are installed in $GOPATH/bin
.
server # Executable
--address <address> # Address assigned to server. Must be in hexadecimal.
--topology <file> # Topology configuration file
--benchmark # Outputs number of tx/s to stdout
--pprof # Enables pprof profiler
--instance <number> # Replication instance (used for sharding)
--help # Prints help
Launch the CLI:
client # Executable
--address <address> # Address assigned to client. Must be in hexadecimal.
--topology <file> # Topology configuration file
--benchmark # If set: outputs benchmark
--help # Prints help
Run CLI commands:
> help # Show the help section
> send <address> 100 # Send 100 credits to <address>. Must be in hexadecimal.
> utxo # Show local UTXOs
> balance # Show balance
> info # Show client information
> clear # Clear console
For Benchmarks and testing, it is recommended that tests are run with an IDE, for example Goland.
Folder | Description |
---|---|
client |
Client specific code |
common |
Code which is used in both server and client, for example ECDSA-related code. |
docs |
Documentation |
server |
Server specific code |
test |
Tests and benchmarks |
topologies |
Topology config files |
The original repository is hosted on GitHub and mirrored to a repository hosted on gitlab.ethz.ch.