Git Product home page Git Product logo

skycoin's Introduction

skycoin logo

Skycoin

Build Status GoDoc Go Report Card

Skycoin is a next-generation cryptocurrency.

Skycoin improves on Bitcoin in too many ways to be addressed here.

Skycoin is a small part of OP Redecentralize and OP Darknet Plan.

Links

Table of Contents

Installation

Go 1.9+ Installation and Setup

Golang 1.9+ Installation/Setup

Go get skycoin

go get github.com/skycoin/skycoin/...

This will download github.com/skycoin/skycoin to $GOPATH/src/github.com/skycoin/skycoin.

You can also clone the repo directly with git clone https://github.com/skycoin/skycoin, but it must be cloned to this path: $GOPATH/src/github.com/skycoin/skycoin.

Run Skycoin from the command line

cd $GOPATH/src/github.com/skycoin/skycoin
make run

Show Skycoin node options

cd $GOPATH/src/github.com/skycoin/skycoin
make run-help

Run Skycoin with options

cd $GOPATH/src/github.com/skycoin/skycoin
make ARGS="--launch-browser=false" run

Docker image

$ docker volume create skycoin-data
$ docker volume create skycoin-wallet
$ docker run -ti --rm \
    -v skycoin-data:/data \
    -v skycoin-wallet:/wallet \
    -p 6000:6000 \
    -p 6420:6420 \
    -p 6430:6430 \
    skycoin/skycoin

Access the dashboard: http://localhost:6420.

Access the API: http://localhost:6420/version.

API Documentation

Wallet REST API

Wallet REST API.

JSON-RPC 2.0 API

JSON-RPC 2.0 README.

Skycoin command line interface

CLI command API.

Contributing a node to the network

Add your node's ip:port to the peers.txt file. This file will be periodically uploaded to https://downloads.skycoin.net/blockchain/peers.txt and used to seed client with peers.

Development

We have two branches: master and develop.

develop is the default branch and will have the latest code.

master will always be equal to the current stable release on the website, and should correspond with the latest release tag.

Modules

  • /src/cipher - cryptography library
  • /src/coin - the blockchain
  • /src/daemon - networking and wire protocol
  • /src/visor - the top level, client
  • /src/gui - the web wallet and json client interface
  • /src/wallet - the private key storage library
  • /src/api/webrpc - JSON-RPC 2.0 API
  • /src/api/cli - CLI library

Running Tests

make test

Formatting

All .go source files should be formatted goimports. You can do this with:

make format

Code Linting

Install prerequisites:

make install-linters

Run linters:

make lint

Dependency Management

Dependencies are managed with dep.

To install dep:

go get -u github.com/golang/dep

dep vendors all dependencies into the repo.

If you change the dependencies, you should update them as needed with dep ensure.

Use dep help for instructions on vendoring a specific version of a dependency, or updating them.

After adding a new dependency (with dep ensure), run dep prune to remove any unnecessary subpackages from the dependency.

When updating or initializing, dep will find the latest version of a dependency that will compile.

Examples:

Initialize all dependencies:

dep init
dep prune

Update all dependencies:

dep ensure -update -v
dep prune

Add a single dependency (latest version):

dep ensure github.com/foo/bar
dep prune

Add a single dependency (more specific version), or downgrade an existing dependency:

dep ensure github.com/foo/bar@tag
dep prune

Wallet GUI Development

The compiled wallet source should be checked in to the repo, so that others do not need to install node to run the software.

Instructions for doing this:

Wallet GUI Development README

Releases

  1. If the master branch has commits that are not in develop (e.g. due to a hotfix applied to master), merge master into develop
  2. Compile the src/gui/dist/ to make sure that it is up to date (see Wallet GUI Development README)
  3. Update all version strings in the repo (grep for them) to the new version
  4. Update CHANGELOG.md: move the "unreleased" changes to the version and add the date
  5. Merge these changes to develop
  6. On the develop branch, make sure that the client runs properly from the command line (./run.sh)
  7. Build the releases and make sure that the Electron client runs properly on Windows, Linux and macOS. Delete these releases when done.
  8. Make a PR merging develop into master
  9. Review the PR and merge it
  10. Tag the master branch with the version number. Version tags start with v, e.g. v0.20.0.
  11. Make sure that the client runs properly from the master branch
  12. Create the release builds from the master branch (see Create Release builds)

If there are problems discovered after merging to master, start over, and increment the 3rd version number. For example, v0.20.0 becomes v0.20.1, for minor fixes.

Creating release builds

Create Release builds.

Changelog

CHANGELOG.md

skycoin's People

Contributors

iketheadore avatar gz-c avatar spurserh avatar nakulpandey avatar vavilen avatar zgordan-vv avatar polarislee1984 avatar zhiyuan2007 avatar ljesparis avatar skycoin-main avatar montycrypto avatar karlob avatar zsm5j avatar hanyh2004 avatar dmitrybugrov avatar logrusorgru avatar vyloy avatar masthead avatar therealssj avatar morphium avatar cmdallas avatar cryptrol avatar johnstuartmill avatar dvrkps avatar cell4711 avatar

Watchers

Xavier Ruiz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.