Akash is a cloud infrastructure platform whose resources are provided by independent datacenters. A high-level overview of the Akash Protocol can be found here; a detailed protocol definition can be found here; and the target workload definition spec is here.
This repository contains Akash Suite, the reference implementation of the Akash Protocol. It is an actively-developed prototype currently focused on the distributed marketplace functionality.
The Akash Suite is composed of two applications: akash and akashd. akashd
is the (tendermint-powered) blockchain node that
implements the decentralized exchange; akash is the client used to access the exchange and network
in general.
Akash is developed and tested with golang 1.8+. Building requires a working golang installation, a properly set GOPATH, and $GOPATH/bin present in $PATH.
Additional requirements are:
- glide: Golang library management.
For development environments, requirements include:
- protocol buffers: Protobuf compiler.
Most golang libraries will be packaged in the local vendor/ directory via glide, however the following packages will
be installed globally with their binaries placed in $GOPATH/bin by make devdeps-install:
- gogoprotobuf: Golang protobuf compiler plugin.
- mockery: Mock generator.
See below for dependency installation instructions for various platforms.
brew install glide
# dev environment only:
brew install protobufcurl https://glide.sh/get | sh
# dev environment only:
sudo pacman -Sy protobufDownload and build akash and akashd:
go get -d github.com/ovrclk/akash
cd $GOPATH/src/github.com/ovrclk/akash
make deps-install
make
# dev environment only:
make devdeps-installWe use thin integration testing environments to simplify the development and testing process. We currently have two environments:
- Single node: simple single node running locally
- Multi node: multi-node setup within a virtual machine.
Each of these environments can demonstrate:
- Sending tokens from one account to another.
- Creating provider accounts.
- Running a provider which bids on open orders.
- Creating deployments.
- Obtaining leases for deployments.
- Monitoring marketplace activity.
- Querying details of all objects.