X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=README.md;h=98107b32fb341313cf27d63faf564d1ea0169dde;hb=3ed56c8bac57343b61ec876c5683c47d936ca29b;hp=253220bcddc4e1287ad18f1f8427a8984064d8ef;hpb=08efb7264e6ff420b25b5a82ea54881b85b18c7f;p=bytom%2Fbytom.git diff --git a/README.md b/README.md index 253220bc..98107b32 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,11 @@ Bytom -===== -[![Build Status](https://travis-ci.org/Bytom/bytom.svg)](https://travis-ci.org/Bytom/bytom) -[![AGPL v3](https://img.shields.io/badge/license-AGPL%20v3-brightgreen.svg)](./LICENSE) - -## Table of Contents - - -* [What is Bytom?](#what-is-bytom) -* [Build from source](#build-from-source) - * [Requirements](#requirements) - * [Installation](#installation) - * [Get the source code](#get-the-source-code) - * [Build](#build) -* [Example](#example) - * [Create and launch a single node](#create-and-launch-a-single-node) - * [Create an account](#create-an-account) - * [Create an asset](#create-an-asset) - * [Asset issuance test](#asset-issuance-test) - * [Expenditure test](#expenditure-test) - * [Set up a wallet and manage the key](#set-up-a-wallet-and-manage-the-key) - * [Multiple node](#multiple-node) -* [Running Bytom in Docker](#running-bytom-in-docker) -* [Contributing](#contributing) -* [License](#license) - - +====== + +[![Build Status](https://travis-ci.org/Bytom/bytom.svg)](https://travis-ci.org/Bytom/bytom) [![AGPL v3](https://img.shields.io/badge/license-AGPL%20v3-brightgreen.svg)](./LICENSE) + +**Official golang implementation of the Bytom protocol.** + +Automated builds are available for stable releases and the unstable master branch. Binary archives are published at https://github.com/Bytom/bytom/releases. ## What is Bytom? @@ -32,11 +13,16 @@ Bytom is software designed to operate and connect to highly scalable blockchain In the current state `bytom` is able to: -- Issue assets -- Manage account as well as asset -- Spend assets +- Manage key, account as well as asset +- Send transactions, i.e., issue, spend and retire asset + +## Installing with Homebrew + +``` +brew tap bytom/bytom && brew install bytom +``` -## Build from source +## Building from source ### Requirements @@ -51,13 +37,13 @@ $ go version $ go env GOROOT GOPATH ``` -#### Get the source code +- Get the source code ``` bash -$ git clone https://github.com/Bytom/bytom $GOPATH/src/github.com/bytom +$ git clone https://github.com/Bytom/bytom.git $GOPATH/src/github.com/bytom ``` -#### Build +- Build source code ``` bash $ cd $GOPATH/src/github.com/bytom @@ -65,145 +51,97 @@ $ make bytomd # build bytomd $ make bytomcli # build bytomcli ``` -## Example +When successfully building the project, the `bytom` and `bytomcli` binary should be present in `cmd/bytomd` and `cmd/bytomcli` directory, respectively. -Currently, bytom is still in active development and a ton of work needs to be done, but we also provide the following content for these eager to do something with `bytom`. +### Executables -### Create and launch a single node +The Bytom project comes with several executables found in the `cmd` directory. -When successfully building the project, the `bytom` and `bytomcli` binary should be present in `cmd/bytomd` and `cmd/bytomcli` directory, respectively. The next step is to initialize the node: +| Command | Description | +| ------------ | ------------------------------------------------------------ | +| **bytomd** | bytomd command can help to initialize and launch bytom domain by custom parameters. `bytomd --help` for command line options. | +| **bytomcli** | Our main Bytom CLI client. It is the entry point into the Bytom network (main-, test- or private net), capable of running as a full node archive node (retaining all historical state). It can be used by other processes as a gateway into the Bytom network via JSON RPC endpoints exposed on top of HTTP, WebSocket and/or IPC transports. `bytomcli --help` and the [bytomcli Wiki page](https://github.com/Bytom/bytom/wiki/Command-Line-Options) for command line options. | -```bash -$ cd ./cmd/bytomd -$ ./bytomd init -``` +## Running bytom -After that, you'll see `.bytom` generated in current directory, then launch the single node: - -``` bash -$ ./bytomd node --wallet.enable -``` - -Given the `bytom` node is running, the general workflow is as follows: - -- create an account -- create an asset -- create/sign/submit a transaction to transfer an asset -- query the assets on-chain - - -#### Create an account - -Create an account named `alice`: - -```bash -$ ./bytomcli create-account alice -xprv: -responses: -account id: -``` - -Check out the new created account: - -```bash -$ ./bytomcli list-accounts -``` +Currently, bytom is still in active development and a ton of work needs to be done, but we also provide the following content for these eager to do something with `bytom`. This section won't cover all the commands of `bytomd` and `bytomcli` at length, for more information, please the help of every command, e.g., `bytomcli help`. -#### Create an asset +### Initialize -Create an asset named `gold`: +First of all, initialize the node: ```bash -$ ./bytomcli create-asset gold -xprv: -xpub: -responses: -asset id: +$ cd ./cmd/bytomd +$ ./bytomd init --chain_id mainnet ``` -Check out the new created asset: +There are three options for the flag `--chain_id`: -```bash -$ ./bytomcli list-assets -``` +- `mainnet`: connect to the mainnet. +- `testnet`: connect to the testnet wisdom. +- `solonet`: standalone mode. -#### Asset issuance test +After that, you'll see `config.toml` generated, then launch the node. -Since the account `alice` and the asset `gold` are ready, we need to create another account `bob`, which is also neccessary for the following Expenditure test: +### launch -```bash -$ ./bytomcli create-account bob +``` bash +$ ./bytomd node ``` -Firstly, Alice issue ``, e.g., 10000, `gold`: +available flags for `bytomd node`: -```bash -$ ./bytomcli sub-create-issue-tx ``` - -When the transaction above is mined, query the balances: - -```bash -# Alice should have 10000 gold now -$ ./bytomcli list-balances + --auth.disable Disable rpc access authenticate + --chain_id string Select network type + -h, --help help for node + --mining Enable mining + --p2p.dial_timeout int Set dial timeout (default 3) + --p2p.handshake_timeout int Set handshake timeout (default 30) + --p2p.laddr string Node listen address. + --p2p.max_num_peers int Set max num peers (default 50) + --p2p.pex Enable Peer-Exchange (default true) + --p2p.seeds string Comma delimited host:port seed nodes + --p2p.skip_upnp Skip UPNP configuration + --prof_laddr string Use http to profile bytomd programs + --vault_mode Run in the offline enviroment + --wallet.disable Disable wallet + --wallet.rescan Rescan wallet + --web.closed Lanch web browser or not + --simd.enable Enable the _simd_ feature to speed up the _PoW_ verification (e.g., during mining and block verification) ``` -#### Expenditure test +Given the `bytomd` node is running, the general workflow is as follows: -- Alice -> Bob +- create key, then you can create account and asset. +- send transaction, i.e., build, sign and submit transaction. +- query all kinds of information, let's say, avaliable key, account, key, balances, transactions, etc. -Alice pays Bob ``, e.g., 1000, `gold`: +__simd feature:__ -```bash -$ ./bytomcli sub-spend-account-tx -# In our case, after Alice pays Bob 1000 gold, the amount of Alice's gold should be 9000, Bob's balances should be 1000 -$ ./bytomcli list-balances +You could enable the _simd_ feature to speed up the _PoW_ verification (e.g., during mining and block verification) by simply: ``` - -- Bob -> Alice - -Bob pays Alice ``, e.g., 500, `gold`: - -```bash -$ ./bytomcli sub-spend-account-tx -# In our case, after Bob pays Alice 500 gold, the amount of Alice's gold should be 9500, Bob's balances should be 500 -$ ./bytomcli list-balances +bytomd node --simd.enable ``` -### Set up a wallet and manage the key - -If you have started a bytom node, then you can create an account via `create-key password`, which will generate a `keystore` directory containing the keys under the project directory. +To enable this feature you will need to compile from the source code by yourself, and `make bytomd-simd`. -```bash -$ ./bytomcli create-key account_name password # Create an account named account_name using password -$ ./bytomcli delete-key password pubkey # Delete account pubkey -$ ./bytomcli reset-password oldpassword newpassword pubkey # Update password -``` +What is more, -### Multiple node ++ if you are using _Mac_, please make sure _llvm_ is installed by `brew install llvm`. ++ if you are using _Windows_, please make sure _mingw-w64_ is installed and set up the _PATH_ environment variable accordingly. -Get the submodule depenency for the two-node test: +For more details about using `bytomcli` command please refer to [API Reference](https://github.com/Bytom/bytom/wiki/API-Reference) -```bash -$ git submodule update --init --recursive -``` +### Dashboard -Create the first node `bytomd0` and second node `bytomd1`: +Access the dashboard: -```bash -$ cd cmd/bytomd/2node-test -$ ./test.sh bytomd0 # Start the first node -$ ./test.sh bytomd1 # Start the second node ``` - -Then we have two nodes: - -```bash -$ ./bytomcli net-info -net-info:map[listening:true listeners:[Listener(@192.168.199.43:3332)] peers:[map[node_info:map[listen_addr:192.168.199.43:3333 version:0.1.2 other:[wire_version=0.6.2 p2p_version=0.5.0] pub_key:D6B76D1B4E9D7E4D81BA5FAAE9359302446488495A29D7E70AF84CDFEA186D66 moniker:anonymous network:bytom remote_addr:127.0.0.1:51036] is_outbound:false connection_status:map[RecvMonitor:map[Start:2017-10-30T13:45:47.18+08:00 Bytes:425130 AvgRate:27010 Progress:0 Active:true Idle:1.04e+09 Samples:42 InstRate:4591 CurRate:3540 PeakRate:114908 BytesRem:0 TimeRem:0 Duration:1.574e+10] Channels:[map[RecentlySent:5332 ID:64 SendQueueCapacity:100 SendQueueSize:0 Priority:5]] SendMonitor:map[Active:true Idle:1.24e+09 Bytes:16240 Samples:41 CurRate:125 AvgRate:1032 Progress:0 Start:2017-10-30T13:45:47.18+08:00 Duration:1.574e+10 InstRate:147 PeakRate:4375 BytesRem:0 TimeRem:0]]]]] +$ open http://localhost:9888/ ``` -## Running Bytom in Docker +### In Docker Ensure your [Docker](https://www.docker.com/) version is 17.05 or higher. @@ -211,11 +149,13 @@ Ensure your [Docker](https://www.docker.com/) version is 17.05 or higher. $ docker build -t bytom . ``` +For the usage please refer to [running-in-docker-wiki](https://github.com/Bytom/bytom/wiki/Running-in-Docker). + ## Contributing -Thank you for considering to help out with the source code! Any contributions are highly appreciated, and we are grateful for even the smallest of fixes! +Thank you for considering helping out with the source code! Any contributions are highly appreciated, and we are grateful for even the smallest of fixes! -If you run into an issue, feel free to [file one](https://github.com/Bytom/bytom/issues/) in this repository. We are glad to help! +If you run into an issue, feel free to [bytom issues](https://github.com/Bytom/bytom/issues/) in this repository. We are glad to help! ## License