Skip to content
gregmcgregor edited this page Mar 21, 2018 · 39 revisions

Welcome to disgo!

Boogie down with Dispatch Labs as we build disgo, the initial Golang implementation of the Dispatch protocol. If you're a developer interested in submitting pull requests, let's party like it's 1975.

What is the Dispatch Protocol?

The best place to begin with understanding Dispatch is the whitepaper, but we'll give some cliffs notes here. The Dispatch protocol is built with 3 core principals in mind:

  • Dispatch is scalable.

    Using our own DAPoS consensus, we can achieve high transaction throughput, with no transaction fees

  • Dispatch is backwards-compatible with Ethereum smart-contracts and the EVM.

    By using a modified version of the EVM, Dispatch the Dispatch protocol is compatible with most Dapps currently under development

  • Dispatch handles lots data.

    Most business logic involves data too big to fit in a shared ledger. We extend the functionality of Ethereum smart-contracts to support accessing big off-chain data we call artifacts

Development

Disgo is still in Testnet Alpha development. We are an open-source project and encourage community contribution! We're excited to talk to developers and will happily help curious engineers get aquatinted with the code base. Curious minds are encouraged to email us at [email protected].

If you're not a developer, but still want to follow along, check out our development blog for weekly updates.

API

The Disgo API is organized around REST. To learn more about our API check out our API Reference.

Modules

The disgo repository is composed of several smaller "building block" modules. The goal is to create usable components of common blockchain architectures, so future blockchain projects don't have to start from scratch.

Commons

disGover

disGover is our node discovery module. Built using libp2p, disgovery should solve the distributed system bootstrapping problem of finding other nodes in the network. Eventually we'll expand on this module to support the discovery of non-node entities, like artifacts.

DAPoS

The Dispatch protocol is built using a novel Delegated Asynchronous Proof-of-Stake consensus algorithm called DAPoS. The dapos repo is the modular implementation of the consensus implemented in Go.

Setting up the Disgo Node

This is the Dispatch Node

Run this code to be part of the best business enabling, open-source chain on the planet. Period.

Run

  • Install Go for your platform. The 1-2-3 steps are here
Dev Box
  • go get github.com/dispatchlabs/disgo
  • cd ~/go/src/dispatchlabs/disgo
  • go run main.go
As Service with Docker
$ docker-compose build
$ docker-compose up -d

View log output:

$ docker logs --tail=400 disgo-service
As Service
  • go get github.com/dispatchlabs/disgo
  • cd $GOPATH/src/github.com/dispatchlabs/disgo
  • go build
  • sudo mkdir /go-binaries
  • sudo mv ./disgo /go-binaries/
  • sudo cp -r ./config /go-binaries/
  • sudo nano /etc/systemd/system/dispatch-disgo-node.service
[Unit]
Description=Dispatch Disgo Node
After=network.target

[Service]
WorkingDirectory=/go-binaries
ExecStart=/go-binaries/disgo -asSeed -nodeId=NODE-Seed-001 -thisIp=35.227.162.40
Restart=on-failure

User=dispatch-services
Group=dispatch-services

[Install]
WantedBy=multi-user.target
  • sudo useradd dispatch-services -s /sbin/nologin -M
  • sudo systemctl enable dispatch-disgo-node
  • sudo systemctl start dispatch-disgo-node
  • sudo journalctl -f -u dispatch-disgo-node
  • sudo systemctl daemon-reload if you change the service

Develop

  • Install protoc compiler manually or by homebrew $ brew install protobuf
  • Install protoc-gen-go plugin: go get -u github.com/golang/protobuf/protoc-gen-go
  • Build Go bindings from .proto file. `protoc --go_out=plugins=grpc:. party/party.proto
  • Use GoLand or VSCode

VS Code

  • mkdir .vscode
  • cp helpers-files/vscode-launch.json .vscode/launch.json
Clone this wiki locally