Suncoin
Suncoin is a next-generation cryptocurrency that is built on Skyledger blockchain platform.
Links
Table of Contents
Installation
Go 1.9+ Installation and Setup
Golang 1.9+ Installation/Setup
Go get suncoin
go get github.com/ShanghaiKuaibei/suncoin/...
This will download github.com/ShanghaiKuaibei/suncoin
to $GOPATH/src/github.com/ShanghaiKuaibei/suncoin
.
You can also clone the repo directly with git clone https://github.com/ShanghaiKuaibei/suncoin
,
but it must be cloned to this path: $GOPATH/src/github.com/ShanghaiKuaibei/suncoin
.
Run Suncoin from the command line
cd $GOPATH/src/github.com/ShanghaiKuaibei/suncoin
make run
Show Suncoin node options
cd $GOPATH/src/github.com/ShanghaiKuaibei/suncoin
make run-help
Run Suncoin with options
cd $GOPATH/src/github.com/ShanghaiKuaibei/suncoin
make ARGS="--launch-browser=false" run
API Documentation
Wallet REST API
JSON-RPC 2.0 API
Suncoin command line interface
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:
Releases
- If the
master
branch has commits that are not indevelop
(e.g. due to a hotfix applied tomaster
), mergemaster
intodevelop
- Compile the
src/gui/dist/
to make sure that it is up to date (see Wallet GUI Development README) - Update all version strings in the repo (grep for them) to the new version
- Update
CHANGELOG.md
: move the "unreleased" changes to the version and add the date - Merge these changes to
develop
- On the
develop
branch, make sure that the client runs properly from the command line (./run.sh
) - Build the releases and make sure that the Electron client runs properly on Windows, Linux and macOS. Delete these releases when done.
- Make a PR merging
develop
intomaster
- Review the PR and merge it
- Tag the master branch with the version number. Version tags start with
v
, e.g.v0.20.0
. - Make sure that the client runs properly from the
master
branch - 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.