Skycoin is a next-generation cryptocurrency.
Skycoin improves on Bitcoin in too many ways to be addressed here.
Skycoin is small part of OP Redecentralize and OP Darknet Plan.
go packages are installed in $GOPATH
which defaults to $HOME/go
.
Create $HOME/go
for your $GOPATH
:
mkdir ~/go
You may also want to update your $PATH
environment variable to PATH="$PATH:$GOPATH/bin
.
go get https://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
.
cd $GOPATH/src/github.com/skycoin/skycoin
make run
cd $GOPATH/src/github.com/skycoin/skycoin
make run-help
cd $GOPATH/src/github.com/skycoin/skycoin
make ARGS="--launch-browser=false" run
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.
/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
make test
All .go
source files should be formatted with gofmt
or goimports
.
Install prerequisites:
go get github.com/golang/lint/golint
go get github.com/FiloSottile/vendorcheck
go get github.com/alecthomas/gometalinter
go get golang.org/x/tools/cmd/goimports
Run linters:
make lint
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
The compiled wallet source should be checked in to the repo, so that others do not need to install node to run the software.
Compile and add the wallet source to git:
cd src/gui/static
npm install
npm run build
git add .
TODO: Full instructions on doing a release. Need instructions on updating version number in source code, and running scripts to build releases
When ready to do a release, a pull request merging develop
into master
must be made.
After merging to master
, tag the branch with the version number.
Once master
branch is updated, git checkout master
and create the release builds.