votumchain

module
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2019 License: Apache-2.0

README

version Go Report Card GolangCI

VotumChain is a blockchain application using cosmos-sdk that anyone can use when making important decisions and when the results need to be published publicly, presenting the ideal way of community governance decision-making.VotumChain can reduce cost when making decisions by the majority, such as voting in elections and general meetings, and prevent falsification of voting results. It is possible to refer every voting results.

WARNING: VotumChain is under VERY ACTIVE DEVELOPMENT and should be treated as pre-alpha software. This means it is not meant to be run in production, its APIs are subject to change without warning and should not be relied upon, and it should not be used to hold any value.

Implementation

Completed

  • basic blockchain functions
  • issue my token
  • vote using staking tokens

Current Work

  • vote using my tokens
  • allow users to decide election params

Next Steps

  • add new type of voting params
  • CI/CD setting
  • release testnet
  • integate with blockchain explore

Quick Start

Go 1.12.1+ is required for the Cosmos SDK.

Install votumcli and votumd

$ mkdir -p $GOPATH/src/github.com/EG-easy
$ cd $GOPATH/src/github.com/EG-easy
$ go clone github.com/EG-easy/votumchain.git
$ cd votumchain && git checkout master
$ export GO111MODULE=on
$ make install

Try votumcli version and votumd version to verify everything is OK!

Initialize configuration files and genesis file

Just use shell scripts bellow.

$ sh scripts/start.sh

Or you can follow the command.

$ votumd init eguegu --chain-id testchain

Copy the Address output here and save it for later use

$ votumcli keys add jack

Add account with coins to the genesis file

$ votumd add-genesis-account $(votumcli keys show jack -a) 100000000votum,100000000stake

Configure your CLI to eliminate need for chain-id flag

$ votumcli config chain-id testchain
$ votumcli config output json
$ votumcli config indent true
$ votumcli config trust-node true
$ votumd gentx --name jack
$ votumd collect-gentxs
$ votumd validate-genesis

Now let's start!

$ votumd start

Voting

send Proposal

Firstly, you need to broadcast a proposal to the network. You can modify the title, description, deposit of proposal as you like in proposal/proposal.json.

$ votumcli tx votum submit-proposal --proposal="proposal/proposal.json" --from jack
deposit

You need to deposit votum token to start voting period. The default time of voting period is only 120 seconds. You can change the parameter in votum/genesis.go.

$ votumcli tx votum deposit 1 1000000votum --from jack 
vote

Those who can already stake token can vote the proposal as its stake amount.

$ votumcli tx votum vote 1 yes --from jack
Check Result

Check proposal status and final result with this command.

$ votumcli query votum proposal 1

Check deposit status about the certain address.

$ votumcli query votum deposit $(votumcli keys show -a jack)

Check vote status of all votes.

$ votumcli query votum votes 1

Use docker

$ docker build -t votum .
$ docker run --rm -it votum sh
$ docker exec -it votum sh

4 validators local private net

# Work from the votumchain Repo
$ cd $GOPATH/src/github.com/EG-easy/votumchain

# Build the linux binary in ./build
$ make build-linux

# Build votumchain/votumdnode image
$ make build-docker
Run Your Testnet

To start a 4 node testnet run:

$ make localnet-start

This command creates a 4-node network using the votumdnode image. The ports for each node are found in this table:

Node ID P2P Port RPC Port
votumnode0 26656 26657
votumnode1 26659 26660
votumnode2 26661 26662
votumnode3 26663 26664

To update the binary, just rebuild it and restart the nodes:

$ make build-linux localnet-start
Keys & Accounts

To interact with votumcli and start querying state or creating txs, you use the votumcli directory of any given node as your home, for example:

$ votumcli keys list --home ./build/node0/votumcli

License

Licensed under the Apache v2 License.

Directories

Path Synopsis
cmd
x

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL