Go Implementation of the Spacemesh blockmesh p2p node. 💾💪
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
accounts refactor nodeconfig->config Jul 20, 2018
api fix port helper. Jul 20, 2018
app Code rebased Nov 13, 2018
ci updated protobuf and removed generating them (#176) Jul 28, 2018
config start with default config, load from config file, override with cli f… Nov 11, 2018
consensus Merge branch 'develop' into fix-config-cli-flags Nov 13, 2018
crypto updated protobuf and removed generating them (#176) Jul 28, 2018
filesystem node = identity, decoupled local node from swarm, fixed all consequences Jun 25, 2018
hare Fixed comments Nov 18, 2018
log fixed some tests, moved message, added gossip, adde peer select in dht Oct 18, 2018
merkle updated protobuf and removed generating them (#176) Jul 28, 2018
mesh renamed core to mesh, fixes minot syntax issues and removed comments Nov 12, 2018
p2p change read Rlock to lock Nov 19, 2018
ping more lints and some format Jul 26, 2018
post node = identity, decoupled local node from swarm, fixed all consequences Jun 25, 2018
research Add files via upload Jun 16, 2018
timesync moved timesync from p2p dir Oct 17, 2018
vagrant Vagrant file and provision script Jan 10, 2018
vendor added dependency via govendor Nov 12, 2018
version viper bind flags to config May 29, 2018
.gitignore removing unused add/remove peer pubsub Jun 6, 2018
.travis.yml fix travis indent Jul 29, 2018
AUTHORS viper bind flags to config May 29, 2018
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Dec 27, 2017
CONTRIBUTING.md Copy updated text from master Aug 1, 2018
Dockerfile Re implement branch based Nov 5, 2018
ISSUE_TEMPLATE.md copy changes May 1, 2018
LICENSE copy changes May 1, 2018
Makefile added dependency via govendor Nov 12, 2018
README.md Change build badge to check develop Jun 16, 2018
Vagrantfile Vagrant file and provision script Jan 10, 2018
config.toml start with default config, load from config file, override with cli f… Nov 11, 2018
legal.md Update legal.md Aug 26, 2018
main.go viper bind flags to config May 29, 2018
old_VERSION added config package May 29, 2018
testing.md Added note about table-driven testing Feb 12, 2018

README.md

Spacemesh logo  

Blockmesh Operating System

Go Report Card

Browse Gitcoin Bounties

go-spacemesh

💾💪 Thanks for your interest in this open source project. This is the go implementation of the Spacemesh p2p node. Spacemesh is a decentralized blockchain computer using a new race-free consensus protocol that doesn't involve energy-wasteful proof of work. We aim to create a secure and scalable decentralized computer formed by a large number of desktop PCs at home. We are designing and coding a modern blockchain platform from the ground up for scale, security and speed based on the learnings of the achievements and mistakes of previous projects in this space.

To learn more about Spacemesh head over to our wiki.

Motivation

SpacemeshOS is designed to create a decentralized blockchain smart contracts computer and a cryptocurrency that is formed by connecting the home PCs of people from around the world into one virtual computer without incurring massive energy waste and mining pools issues that are inherent in other blockchain computers, and provide a provably-secure and incentive-compatible smart contracts execution environment. Spacemesh OS is designed to be ASIC-resistant and in a way that doesn’t give an unfair advantage to rich parties who can afford setting up dedicated computers on the network. We achieve this by using a novel consensus protocol and optimize the software to be most effectively be used on home PCs that are also used for interactive apps.

What is this good for?

Provide dapp and app developers with a robust way to add value exchange and other value related features to their apps at scale. Our goal is to create a truly decentralized cryptocoin that fulfills the original vision behind bitcoin to become a secure trustless store of value as well as a transactional currency with extremely low transaction fees.

Target Users

go-spacemesh is designed to be installed and operated on users' home PCs to form one decentralized computer.

Project Status

Development is currently focused on 3 main node core components:

  1. The p2p/networking - the project includes a modern and robust p2p protocol for use by components up the stack.
  2. The POST/blockmesh based consensus layer - Spacemesh protocol implementation, utilizing the p2p capabilities.
  3. App scaffolding - supporting functionality such as config, repl, cli and cross platform packaging.

Over the last few months, we had good progress on #1 and #3 and we are now starting to focus on #2.

Contributing

Thank you for considering to contribute to the go-spacemesh open source project. We welcome contributions large and small and we actively accept contributions.

NEW! Get crypto awarded for your contribution by working on one of our gitcoin funded issues.

Diggin' Deeper

Please read the Spacemesh full FAQ.

High Level Design

Client Software Architecture

Getting

install Go 1.9.2 or later for your platform

go get github.com/spacemeshos/go-spacemesh

or

  • Fork the project from https://github.com/spacemeshos/go-spacemesh
  • Checkout the develop branch of your fork from GitHub
  • Move your fork from $GOPATH/src/github.com/YOURACCOUNT/go-spacemesh to $GOPATH/src/github.com/spacemeshos/go-spacemesh This allows GO tools to work as expected.

Building

To build go-spacemesh for your current system architecture use:

make

or

go build

from the project root directory. The binary go-spacemesh will be saved in the project root directory.

To build a binary for a specific architecture directory use:

make darwin | linux | windows

Platform-specific binaries are saved to the /build directory.

Running

./go-spacemesh

Testing

make test

or

make cover

Next Steps...

Got Questions?