Skip to content

Commit

Permalink
Merge pull request #571 from skycoin/develop
Browse files Browse the repository at this point in the history
Merge v0.20.0
  • Loading branch information
gz-c authored Oct 11, 2017
2 parents ee33f18 + 25cf016 commit 2c9a6e0
Show file tree
Hide file tree
Showing 4,549 changed files with 29,700 additions and 305,492 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
26 changes: 26 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
language: go

go:
- 1.9

install:
- go get -t ./...
- go get github.com/golang/lint/golint
- go get github.com/FiloSottile/vendorcheck
# Install gometalinter and certain linters
- go get github.com/alecthomas/gometalinter
# - go get github.com/client9/misspell/cmd/misspell
# - go get github.com/gordonklaus/ineffassign
- go get golang.org/x/tools/cmd/goimports
# - go get github.com/tsenart/deadcode

script:
# - gometalinter --disable-all -E vet -E gofmt -E misspell -E ineffassign -E goimports -E deadcode --tests --vendor ./...
- gometalinter --disable-all -E goimports --tests --vendor ./...
- vendorcheck ./...
- go test ./cmd/...
- go test ./src/...

# after_script:
# - golint -set_exit_status ./src/...
# - golint -set_exit_status ./cmd/...
110 changes: 110 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.20.0] - 2017-10-10

### Added

- New wallet frontend in angular4. This is a complete rewrite and fixes many
of the old wallet issues.
- New wallet has preliminary support for OTC functionality
- Create `webrpc.Client` for JSON-2.0 RPC calls.
- Add this CHANGELOG.md file.
- Add Installation.md file, with install instructions for go.
- Timelock distribution addresses. The first 25% of the distribution is
spendable. After that 25% is spent, a timestamp will be added to the code to
enable further distribution.
- Add `/coinSupply` endpoint. Correctly returns total, locked and unlocked coin
amounts.
- `testutil` package for common test setup methods.
- `/version` endpoint, which will return the current node version number and
the HEAD commit id when build the node
- `-no-ping-log` option to disable ping/pong log output
- Check for invalid block signatures during startup and recreate the database
if they are corrupted.
- Add methods for converting fixed-point decimal strings to droplets and
vice versa.
- Add `make run`, `make test`, `make lint`, `make check` to `Makefile`

### Changed

- Flag peers as incoming or outgoing.
- Refactor to decouple `wallet` and `visor` package.
- Refactor `cli` package for use as a library.
- `README` improvements.
- Set default wallet's label as "Your Wallet"
- Use BIP32 mnemomic seeds by default in `address_gen`.
- Add `-x` option to `address_gen`, to generate a random base64-encoded 128-bit
seed instead of a BIP32 mnemomic seed.
- Add `-v` option to `address_gen` to print all address information
(pubkey, seckey, address, seed) to stdout as JSON.
- All API and CLI methods with "coin"-related arguments must be a string and
can use decimal notation to specify coin amounts.
- CLI's `walletHistory` command prints amounts as fixed-point decimal strings.
Previously, it printed amounts as integers representing whole skycoin amounts,
and did not support droplets / fractional skycoins.
- A user is prevented from broadcasting a new transaction with unspent outputs
that they have already sent as an unconfirmed transaction.

### Deprecated

- `/api/getEffectiveOutputs` is deprecated in favor of `/coinSupply`.

### Removed

- Old wallet
- `/api/create-address` endpoint (use the `address_gen` tool)

### Fixed

- Wallet folder path loading.
- #371 Fix `/wallet/spend`, will return only when pending transaction is
confirmed.
- #443 Fix predicted balance in `/wallet/spend` API call.
- #444 Fix bug in `/blockchain/progress` API call.
- Removed globals in `gui` package that caused race condition with wallet API
calls.
- #494 Clean invalid unconfirmed transactions during startup.
- Various race conditions around the bolt.DB blockchain DB
- Missing `strand()` call in `daemon.Visor.AnnounceTxns`.

### Security

## [0.19.1] - 2017-08-26

### Fixed

- #459 dist folder in repo out of date, wallet gui does not load

## [0.19.0] - 2017-07-11

### Added

- Add synchronize indicator when downloading blocks.
- #352 Store unspent pool in db for quick recovery when node restart
- Speed up the time the node start the browser
- Cache unspent pool in memory to speed up query action
- #411 Add button to hide seed
- #380 Move anything with heavy imports into util sub package

### Fixed

- #421 Sort wallet transaction history by time
- #398 Remove seeds from DOM
- #390 Make `go test ./src/...` work
- #383 Error during installation from skycoin source code
- #375 Node can't recovery from zero connections
- #376 Explorer api `/explorer/address` does not return spend transactions
- #373 Master node will be closed if there're no transactions need to execute
- #360 Node will crash when do ctrl+c while downloading blocks
- #350 Wallet name always 'undefined' after loading wallet from seed

[Unreleased]: https://github.com/skycoin/skycoin/compare/master...develop
[0.20.0]: https://github.com/skycoin/skycoin/compare/v0.19.1...v0.20.0
[0.19.1]: https://github.com/skycoin/skycoin/compare/v0.19.0...v0.19.1
[0.19.0]: https://github.com/skycoin/skycoin/commit/dd924e1f2de8fab945e05b3245dbeabf267f2910
8 changes: 7 additions & 1 deletion Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

117 changes: 117 additions & 0 deletions Installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Installing go

## For OSX
First you need to have `homebrew` installed, if you don't have it yet.

```sh
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

Then, let's install go's latest version.

```sh
brew install go
```

Lastly, let's install Mercurial and Bazaar

```sh
brew install mercurial bzr
```

## For linux
We need to install linux dependencies on the correct distribution.

#### Ubuntu and Debian
```sh
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y curl git mercurial make binutils gcc bzr bison libgmp3-dev screen gcc build-essential
```

#### Centos and Fedora
```sh
sudo yum update -y && sudo yum upgrade -y
sudo yum install -y git curl make gcc mercurial binutils bzr bison screen
if [[ "$(cat /etc/redhat-release | grep -o CentOS)" == "CentOS" ]]; then sudo yum install -y build-essential libgmp3-dev; else sudo yum groupinstall -y "Development Tools" "Development Libraries" && sudo yum install -y gmp; fi;
```

### Install Go with Gvm
#### Install Gvm
`gvm` need to be installed.

```sh
curl -sSL https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer > gvm-installer && chmod a+x gvm-installer &&
source $HOME/.gvm/scripts/gvm
```

#### Install Go
In China, use `--source=https://github.com/golang/go` to bypass firewall when fetching golang source.

```sh
gvm install go1.4 --source=https://github.com/golang/go
gvm use go1.4

gvm install go1.9
gvm use go1.9 --default
```

#### Installation issues
If you open up new a terminal and the `go` command is not found then add this to `.bashrc`. GVM should add this automatically.

```sh
[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"
gvm use go1.9 >/dev/null
```

## Install Go manually
### Install Go

Let's go to home directory and declare `go`'s version that you want to download.

```sh
cd ~
export GOV=1.9 # golang version. Could be any of the following versions 1.1, 1.2, 1.3, 1.4, ..., 1.9
```

After that, let's download and uncompress golang source.

```sh
curl -sS https://storage.googleapis.com/golang/go$GOV.linux-amd64.tar.gz > go$GOV.linux-amd64.tar.gz
tar xvf go$GOV.linux-amd64.tar.gz
rm go$GOV.linux-amd64.tar.gz
```

lastly, let's install `go`.

```sh
sudo mv go /usr/local/go
sudo ln -s /usr/local/go/bin/go /usr/local/bin/go
sudo ln -s /usr/local/go/bin/godoc /usr/local/bin/godoc
sudo ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt
```

Note: Find any golang source version at [Go Website](https://golang.org/dl/)

### Setup your GOPATH
The $GOPATH environment variable specifies the location of your workspace. It defaults to a directory named `go` inside your home directory, so $HOME/go on Unix.

Create your workspace directory with it's respective inner folders:

```sh
mkdir -p $HOME/go
mkdir -p $HOME/go/bin
mkdir -p $HOME/go/src
mkdir -p $HOME/go/pkg
```

Setup $GOPATH variable, add it to ~/.bashrc. After editing, run `source ~/.bashrc` or open a new tab.

```sh
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
```

## Test your Go installation
Create and run the hello.go application described here: https://golang.org/doc/install#testing to check if your Go installation is working.
42 changes: 32 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,18 +1,40 @@
# static files directory
.DEFAULT_GOAL := help
.PHONY: run run-help test lint check release clean help

# Static files directory
STATIC_DIR = src/gui/static

# electron files directory
# Electron files directory
ELECTRON_DIR = electron

.PHONY: build clean
run: ## Run the skycoin node. To add arguments, do 'make ARGS="--foo" run'.
go run cmd/skycoin/skycoin.go --gui-dir="./${STATIC_DIR}" ${ARGS}

run-help: ## Show skycoin node help
@go run cmd/skycoin/skycoin.go --help

test: ## Run tests
go test ./cmd/...
go test ./src/...

lint: ## Run linters. requires vendorcheck, gometalinter, golint, goimports
gometalinter --disable-all -E goimports --tests --vendor ./...
vendorcheck ./...

# build electron apps, the builds are located in electron/release folder.
build:
cd $(STATIC_DIR) && gulp dist
check: lint test ## Run tests and linters

install-linters: ## Install linters
go get -u -f github.com/golang/lint/golint
go get -u -f golang.org/x/tools/cmd/goimports
go get -u github.com/alecthomas/gometalinter
go get -u github.com/FiloSottile/vendorcheck

release: ## Build electron apps, the builds are located in electron/release folder.
cd $(ELECTRON_DIR) && ./build.sh
@echo release files are in the folder of electron/release

# clean dist files and delete all builds in electron/release
clean:
cd $(STATIC_DIR) && gulp clean
rm $(ELECTRON_DIR)/release/*
clean: ## Clean dist files and delete all builds in electron/release
rm $(ELECTRON_DIR)/release/*

help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
Loading

0 comments on commit 2c9a6e0

Please sign in to comment.