virtengine

module
v0.0.0-...-e391bab Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 18, 2021 License: Apache-2.0

README

VirtEngine - Decentralized Compute Marketplace

Go Report Card License

VirtEngine

VirtEngine is a secure, transparent, and decentralized cloud computing marketplace that connects those who need computing resources (tenants) with those that have computing capacity to lease (providers).

For a high-level overview of the VirtEngine protocol and network economics, check out the whitepapers; a detailed protocol definition can be found in the design documentation; and the target workload definition spec is here.

Branching and Versioning

The master branch contains new features and is under active development; the mainnet/main branch contains the current, stable release.

  • stable releases will have even minor numbers ( v0.8.0 ) and be cut from the mainnet/main branch.
  • unstable releases will have odd minor numbers ( v0.9.0 ) and be cut from the master branch.

VirtEngine Suite

VirtEngine is a fork of the implementation of the Akash Protocol. VirtEngine is an actively-developed prototype currently focused on the distributed marketplace functionality.

The Suite is composed of one binary, virtengine, which contains a (tendermint-powered) blockchain node that implements the decentralized exchange as well as client functionality to access the exchange and network data in general.

Get Started with VirtEngine

The easiest way to get started with VirtEngine is by following the Quick Start Guide to get started.

Join the Community

Official blog and documentation

Supported platforms

Platform Arch Status
Darwin amd64 Supported
Darwin arm64 Supported
Linux amd64 Supported
Linux arm64 (aka aarch64) Supported
Linux armhf GOARM=5,6,7 ⚠️ Not supported
Windows amd64 ⚠️ Experimental

Installing

The latest binary release can be installed with Homebrew:

$ brew tap virtengine/tap
$ brew install virtengine

Or GoDownloader:

$ curl -sSfL https://raw.githubusercontent.com/virtengine/virtengine/master/godownloader.sh | sh

Or install a specific version with GoDownloader

$ curl -sSfL https://raw.githubusercontent.com/virtengine/virtengine/master/godownloader.sh | sh -s -- v0.7.8

Roadmap and contributing

VirtEngine is written in Golang and is Apache 2.0 licensed - contributions are welcomed whether that means providing feedback, testing existing and new feature or hacking on the source.

To become a contributor, please see the guide on contributing

Development environment

VirtEngine is developed and tested with golang 1.16.0+. Building requires a working golang installation, a properly set GOPATH, and $GOPATH/bin present in $PATH. It is also required to have C/C++ compiler installed (gcc/clang) as there are C dependencies in use (libusb/libhid) VirtEngine build process and examples are heavily tied to Makefile.

VirtEngine also uses direnv to setup and seamlessly update environment. List of variables exported in root dir are listed in .env It sets local dir .cache to hold all temporary files and tools (except kind which installed ) required for development purposes. It is possible to set custom path to .cache with VIRTENGINE_DEVCACHE environment variable. All tools are referred as makefile targets and set as dependencies thus installed (to .cache/bin) only upon necessity. For example protoc installed only when proto-gen target called.

Credits

VirtEngine is a fork from Akash Source Code, and aims to further the technology by providing much needed contributions.

Building from Source

Command below will compile virtengine executable and put it into .cache/bin

make virtengine # virtengine is set as default target thus `make` is equal to `make virtengine`

once binary compiled it exempts system-wide installed virtengine within virtengine repo

Running

We use thin integration testing environments to simplify the development and testing process. We currently have three environments:

  • Single node: simple (no workloads) single node running locally.
  • Single node with workloads: single node and provider running locally, running workloads within a virtual machine.
  • full k8s: same as above but with node and provider running inside Kubernetes.

Swagger Doc Generation

To generate API Documentation on code modification you must run:

make codegen

Directories

Path Synopsis
app
cmd
deploy
cmd
cmd
pkg
apis/virtengine.network/v1
Package v1 is the initial version of types which integrate with the Kubernetes API.
Package v1 is the initial version of types which integrate with the Kubernetes API.
client/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
client/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
client/clientset/versioned/typed/virtengine.network/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/versioned/typed/virtengine.network/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
cmd
cli
util
x
audit/types
Package types is a reverse proxy.
Package types is a reverse proxy.
cert/types
Package types is a reverse proxy.
Package types is a reverse proxy.
deployment/types
Package types is a reverse proxy.
Package types is a reverse proxy.
escrow/types
Package types is a reverse proxy.
Package types is a reverse proxy.
market/types
Package types is a reverse proxy.
Package types is a reverse proxy.
provider/types
Package types is a reverse proxy.
Package types is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL