OSDN Git Service

Merge pull request #935 from Bytom/dev
[bytom/bytom.git] / README.md
1 Bytom
2 =====
3 [![Build Status](https://travis-ci.org/Bytom/bytom.svg)](https://travis-ci.org/Bytom/bytom)
4 [![AGPL v3](https://img.shields.io/badge/license-AGPL%20v3-brightgreen.svg)](./LICENSE)
5
6 ## Table of Contents
7 <!-- vim-markdown-toc GFM -->
8
9 * [What is Bytom?](#what-is-bytom)
10 * [Build from source](#build-from-source)
11   * [Requirements](#requirements)
12   * [Installation](#installation)
13     * [Get the source code](#get-the-source-code)
14     * [Build](#build)
15 * [Example](#example)
16   * [Initialize](#initialize)
17   * [launch](#launch)
18     * [Dashboard](#dashboard)
19   * [Create key](#create-key)
20   * [Create account](#create-account)
21     * [Multi-signature account](#multi-signature-account)
22   * [Create asset](#create-asset)
23     * [Multi-signature asset](#multi-signature-asset)
24   * [Sending transaction](#sending-transaction)
25     * [Issue](#issue)
26       * [`build-transaction`](#build-transaction)
27       * [`sign-submit-transaction`](#sign-submit-transaction)
28     * [Spend](#spend)
29       * [`create-account-receiver`](#create-account-receiver)
30       * [`build-transaction`](#build-transaction-1)
31       * [`sign-submit-transaction`](#sign-submit-transaction-1)
32     * [Transfer BTM](#transfer-btm)
33 * [Running Bytom in Docker](#running-bytom-in-docker)
34 * [Contributing](#contributing)
35 * [License](#license)
36
37 <!-- vim-markdown-toc -->
38
39 ## What is Bytom?
40
41 Bytom is software designed to operate and connect to highly scalable blockchain networks confirming to the Bytom Blockchain Protocol, which allows partipicants to define, issue and transfer digitial assets on a multi-asset shared ledger. Please refer to the [White Paper](https://github.com/Bytom/wiki/blob/master/White-Paper/%E6%AF%94%E5%8E%9F%E9%93%BE%E6%8A%80%E6%9C%AF%E7%99%BD%E7%9A%AE%E4%B9%A6-%E8%8B%B1%E6%96%87%E7%89%88.md) for more details.
42
43 In the current state `bytom` is able to:
44
45 - Manage key, account as well as asset
46 - Send transactions, i.e., issue, spend and retire asset
47
48 ## Build from source
49
50 ### Requirements
51
52 - [Go](https://golang.org/doc/install) version 1.8 or higher, with `$GOPATH` set to your preferred directory
53
54 ### Installation
55
56 Ensure Go with the supported version is installed properly:
57
58 ```bash
59 $ go version
60 $ go env GOROOT GOPATH
61 ```
62
63 #### Get the source code
64
65 ``` bash
66 $ git clone https://github.com/Bytom/bytom $GOPATH/src/github.com/bytom
67 ```
68
69 #### Build
70
71 ``` bash
72 $ cd $GOPATH/src/github.com/bytom
73 $ make bytomd    # build bytomd
74 $ make bytomcli  # build bytomcli
75 ```
76
77 When successfully building the project, the `bytom` and `bytomcli` binary should be present in `cmd/bytomd` and `cmd/bytomcli` directory, respectively.
78
79 ## Example
80
81 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`.
82
83 ### Initialize
84
85 First of all, initialize the node:
86
87 ```bash
88 $ cd ./cmd/bytomd
89 $ ./bytomd init --chain_id testnet
90 ```
91
92 There are two options for the flag `--chain_id`:
93
94 - `testnet`: connect to the testnet.
95 - `mainnet`: standalone mode.
96
97 After that, you'll see `.bytomd` generated in current directory, then launch the node.
98
99 ### launch
100
101 ``` bash
102 $ ./bytomd node --mining
103 ```
104
105 available flags for `bytomd node`:
106
107 ```
108       --auth.disable                Disable rpc access authenticate
109       --mining                      Enable mining
110       --p2p.dial_timeout int        Set dial timeout (default 3)
111       --p2p.handshake_timeout int   Set handshake timeout (default 30)
112       --p2p.laddr string            Node listen address.
113       --p2p.max_num_peers int       Set max num peers (default 50)
114       --p2p.pex                     Enable Peer-Exchange
115       --p2p.seeds string            Comma delimited host:port seed nodes
116       --p2p.skip_upnp               Skip UPNP configuration
117       --prof_laddr string           Use http to profile bytomd programs
118       --wallet.disable              Disable wallet
119       --web.closed                  Lanch web browser or not
120 ```
121
122 Given the `bytomd` node is running, the general workflow is as follows:
123
124 - create key, then you can create account and asset.
125 - send transaction, i.e., build, sign and submit transaction.
126 - query all kinds of information, let's say, avaliable key, account, key, balances, transactions, etc.
127
128 #### Dashboard
129
130 Access the dashboard:
131
132 ```bash
133 $ open http://localhost:9888/
134 ```
135
136 ### Create key
137
138 You can create a key with the following command:
139
140 ```bash
141 $ ./bytomcli create-key alice 123
142 {
143   "alias": "alice",
144   "xpub": "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
145 }
146 ```
147
148 list the keys:
149
150 ```bash
151 $ ./bytomcli list-keys
152 ```
153
154 ### Create account
155
156 Create an account named `alice`:
157
158 ```bash
159 $ ./bytomcli create-account alice d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb
160 {
161   "alias": "alice",
162   "id": "0CIT3OI100A04",
163   "key_index": 1,
164   "quorum": 1,
165   "xpubs": [
166     "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
167   ]
168 }
169 ```
170
171 Check out the new created account:
172
173 ```bash
174 $ ./bytomcli list-accounts
175 ```
176
177 #### Multi-signature account
178
179 ```bash
180 $ ./bytomcli list-keys
181 0 :
182 {
183   "alias": "default",
184   "xpub": "336150c3a63411f597d94aa26fe714a348b2e93f2c303d526bb225e5804466e366e58cff81fddaed7879586b92132d63c68b419856f85ca06abfc490a9990c38"
185 }
186 1 :
187 {
188   "alias": "alice",
189   "xpub": "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
190 }
191 2 :
192 {
193   "alias": "bob",
194   "xpub": "cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64"
195 }
196 ```
197
198 ```bash
199 $ ./bytomcli create-account multi_account d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64 -q 2
200 {
201   "alias": "multi_account",
202   "id": "0CIT6J0QG0A06",
203   "key_index": 1,
204   "quorum": 2,
205   "xpubs": [
206     "cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64",
207     "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
208   ]
209 }
210 ```
211
212 ### Create asset
213
214 Create an asset named `GOLD`:
215
216 ```bash
217 $ ./bytomcli create-asset GOLD d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb
218 {
219   "alias": "GOLD",
220   "definition": {},
221   "id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397",
222   "issuance_program": "ae2035b53ed466a40e3d1073ffdcf1c7d0c4ffc439391f9ef5999b365ea467c96a3c5151ad",
223   "keys": [
224     {
225       "asset_derivation_path": [
226         "000100000000000000"
227       ],
228       "asset_pubkey": "35b53ed466a40e3d1073ffdcf1c7d0c4ffc439391f9ef5999b365ea467c96a3c0e8b6d5a67bd5fc66d7a19d4754df6de6cbf3b40fc6b02a75f140d77a1dbcda8",
229       "root_xpub": "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
230     }
231   ],
232   "quorum": 1
233 }
234 ```
235
236 Check out the new created asset:
237
238 ```bash
239 $ ./bytomcli list-assets
240 ```
241
242 #### Multi-signature asset
243
244 ```bash
245 $ ./bytomcli create-asset SILVER d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64
246 {
247   "alias": "SILVER",
248   "definition": {},
249   "id": "50cd5b0ecfdfe388fc0bc6b74df6becd94f1e52e1913a449a473bba87745fe30",
250   "issuance_program": "ae20936178877c2a3a2df9c3733e2ac6f7e99477314c54e214348abb0d4cbdace810208d064a125805493cb99be9c19ed6a356c97753fdfe52fade337fa598c3c59b8c5152ad",
251   "keys": [
252     {
253       "asset_derivation_path": [
254         "000200000000000000"
255       ],
256       "asset_pubkey": "936178877c2a3a2df9c3733e2ac6f7e99477314c54e214348abb0d4cbdace810f9ef97f8edd43707069426ff1ac1d2fe96d23c5e005ac5cb52be2a7de82d2a92",
257       "root_xpub": "cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64"
258     },
259     {
260       "asset_derivation_path": [
261         "000200000000000000"
262       ],
263       "asset_pubkey": "8d064a125805493cb99be9c19ed6a356c97753fdfe52fade337fa598c3c59b8c4eb0b479d566c0efe72ab69f2273ab4b6a6dce9e1e3657839698be6c53e9d04a",
264       "root_xpub": "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
265     }
266   ],
267   "quorum": 1
268 }
269 ```
270
271 ### Sending transaction
272
273 Every asset-related action is trigger via sending a transaction, which requires two steps to complete, i.e., `build-transaction` and `sign-submit-transaction`. Don't forget to enable `--mining`.
274
275 #### Issue
276
277 ##### `build-transaction`
278
279 Let's say, issue 10000 GOLD to alice:
280 ```bash
281 $ ./bytomcli create-account-receiver alice
282 {
283   "address": "bm1q7s24rra4j05yhec9chry2c9trd6qa8gjr6cue3",
284   "control_program": "0014f415518fb593e84be705c5c64560ab1b740e9d12"
285 }
286 ```
287
288 ```bash
289 $ ./bytomcli build-transaction -t issue alice GOLD 10000 -a bm1q7s24rra4j05yhec9chry2c9trd6qa8gjr6cue3 --alias
290 Template Type: issue
291 {"allow_additional_actions":false,"raw_transaction":"070100020160015ee56e4d688e98160067fa25be520d3a5a90e63838b5ff6363997c7c9b962796daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc030501160014f415518fb593e84be705c5c64560ab1b740e9d120100012c000887c3aad437888d0143e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397904e29000125ae2035b53ed466a40e3d1073ffdcf1c7d0c4ffc439391f9ef5999b365ea467c96a3c5151ad0002013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80baa6d30301160014c0c4fb15dd132be34e6dcaea3c38df1869ebcdbf00013a43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397904e01160014f415518fb593e84be705c5c64560ab1b740e9d1200","signing_instructions":[{"position":0,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0200000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"4dc1e7f4e9710378cb80f180e159005a5ca8934d68df6136b782fe08d23d7b0a"}]},{"position":1,"witness_components":[{"keys":[{"derivation_path":["000100000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"}]}]}
292 ```
293
294 The response of `build-transaction` will be used in the following `sign-submit-transaction` command.
295
296 ##### `sign-submit-transaction`
297
298 ```bash
299 $ ./bytomcli sign-submit-transaction '{"allow_additional_actions":false,"raw_transaction":"070100020160015ee56e4d688e98160067fa25be520d3a5a90e63838b5ff6363997c7c9b962796daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc030501160014f415518fb593e84be705c5c64560ab1b740e9d120100012c000887c3aad437888d0143e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397904e29000125ae2035b53ed466a40e3d1073ffdcf1c7d0c4ffc439391f9ef5999b365ea467c96a3c5151ad0002013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80baa6d30301160014c0c4fb15dd132be34e6dcaea3c38df1869ebcdbf00013a43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397904e01160014f415518fb593e84be705c5c64560ab1b740e9d1200","signing_instructions":[{"position":0,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0200000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"4dc1e7f4e9710378cb80f180e159005a5ca8934d68df6136b782fe08d23d7b0a"}]},{"position":1,"witness_components":[{"keys":[{"derivation_path":["000100000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"}]}]}' -p 123 
300
301 {
302   "tx_id": "62fe1716f2b8fe012578a3a8f6b02bd2fa548fef5bba792ea78673e07b38198d"
303 }
304 ```
305
306 When the transaction is on-chain, query the balances:
307
308 ```bash
309 # alice should have 10000 GOLD now
310 $ ./bytomcli list-balances
311 0 :
312 {
313   "account_alias": "default",
314   "account_id": "0CIT2D2O00A02",
315   "amount": 2098770000000,
316   "asset_alias": "BTM",
317   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
318 }
319 1 :
320 {
321   "account_alias": "alice",
322   "account_id": "0CIT3OI100A04",
323   "amount": 10000,
324   "asset_alias": "GOLD",
325   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
326 }
327 2 :
328 {
329   "account_alias": "alice",
330   "account_id": "0CIT3OI100A04",
331   "amount": 4980000000,
332   "asset_alias": "BTM",
333   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
334 }
335 ```
336
337 #### Spend
338
339 Alice pays Bob `<payment_amount>`, e.g., 1000, `GOLD`:
340
341 ##### `create-account-receiver`
342
343 Before you transfer an asset to another account, you have to know his `control_program`. This means the receiver needs to send you his `control_program` first.
344
345 ```bash
346 $ ./bytomcli create-account-receiver bob
347 {
348   "address": "bm1qhurffd3gqkc3pttqfqpsz8w04jnl5z97798tpt",
349   "control_program": "0014bf0694b62805b110ad604803011dcfaca7fa08be"
350 }
351 ```
352
353 ##### `build-transaction`
354
355 ```bash
356 # ./bytomcli build-transaction -t spend <sender_account> <asset> <amount> --alias -r <receiver_control_program>
357 $ ./bytomcli build-transaction -t spend alice GOLD 1000 --alias -r 0014bf0694b62805b110ad604803011dcfaca7fa08be
358 Template Type: spend
359 {"allow_additional_actions":false,"raw_transaction":"070100020160015eba7bbf304b94623b1efb414845f701e64e6c63011984e65dcf214d560f505e28ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80baa6d3030001160014c0c4fb15dd132be34e6dcaea3c38df1869ebcdbf0100015d015bba7bbf304b94623b1efb414845f701e64e6c63011984e65dcf214d560f505e2843e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397904e0101160014f415518fb593e84be705c5c64560ab1b740e9d12010003013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80e0e1c903011600144457a5103dc682327fe2ef662f812dce3f97ffae00013a43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397a846011600147460e50dc0b0313d22796c899c28f795872b229600013a43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397e80701160014bf0694b62805b110ad604803011dcfaca7fa08be00","signing_instructions":[{"position":0,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0300000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"eef67105644a1f146ba313a7ea98ceac2534a9f4cf1aa3775b726476db9c3dc0"}]},{"position":1,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0200000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"4dc1e7f4e9710378cb80f180e159005a5ca8934d68df6136b782fe08d23d7b0a"}]}]}
360 ```
361
362 ##### `sign-submit-transaction`
363
364 ```bash
365 $ ./bytomcli sign-submit-transaction '{"allow_additional_actions":false,"raw_transaction":"070100020160015eba7bbf304b94623b1efb414845f701e64e6c63011984e65dcf214d560f505e28ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80baa6d3030001160014c0c4fb15dd132be34e6dcaea3c38df1869ebcdbf0100015d015bba7bbf304b94623b1efb414845f701e64e6c63011984e65dcf214d560f505e2843e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397904e0101160014f415518fb593e84be705c5c64560ab1b740e9d12010003013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80e0e1c903011600144457a5103dc682327fe2ef662f812dce3f97ffae00013a43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397a846011600147460e50dc0b0313d22796c899c28f795872b229600013a43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397e80701160014bf0694b62805b110ad604803011dcfaca7fa08be00","signing_instructions":[{"position":0,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0300000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"eef67105644a1f146ba313a7ea98ceac2534a9f4cf1aa3775b726476db9c3dc0"}]},{"position":1,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0200000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"4dc1e7f4e9710378cb80f180e159005a5ca8934d68df6136b782fe08d23d7b0a"}]}]}'
366
367
368 {
369   "txid": "3bf01bd21d7bbf3eb1c6e27e5646be1c4a7bd5602125eebf28f430246b08c226"
370 }
371 ```
372
373 ```bash
374 $./bytomcli list-balances
375 0 :
376 {
377   "account_alias": "default",
378   "account_id": "0CIT2D2O00A02",
379   "amount": 2758790000000,
380   "asset_alias": "BTM",
381   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
382 }
383 1 :
384 {
385   "account_alias": "alice",
386   "account_id": "0CIT3OI100A04",
387   "amount": 9000,
388   "asset_alias": "GOLD",
389   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
390 }
391 2 :
392 {
393   "account_alias": "alice",
394   "account_id": "0CIT3OI100A04",
395   "amount": 4960000000,
396   "asset_alias": "BTM",
397   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
398 }
399 3 :
400 {
401   "account_alias": "bob",
402   "account_id": "0CITLN2KG0A08",
403   "amount": 1000,
404   "asset_alias": "GOLD",
405   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
406 }
407 ```
408
409 #### Transfer BTM
410
411 ```bash
412 # ./bytomcli build-transaction -t spend <sender_account> <asset> <amount> --alias -r <receiver_control_program>
413 $ ./bytomcli build-transaction -t spend alice BTM 1000000000 --alias -r 0014bf0694b62805b110ad604803011dcfaca7fa08be
414 Template Type: spend
415 {"allow_additional_actions":false,"raw_transaction":"070100020160015ee56e4d688e98160067fa25be520d3a5a90e63838b5ff6363997c7c9b962796daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc030201160014f415518fb593e84be705c5c64560ab1b740e9d1201000160015e5685c051b6a7f1631e0505ea99a61997c1b8322148321eb864435c8516a5a8eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80e0e1c90300011600144457a5103dc682327fe2ef662f812dce3f97ffae010002013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80869dc003011600146026f938bbcf6b6b90eb9d8fbb8c1725e0ae3d0b00013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc0301160014bf0694b62805b110ad604803011dcfaca7fa08be00","signing_instructions":[{"position":0,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0200000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"4dc1e7f4e9710378cb80f180e159005a5ca8934d68df6136b782fe08d23d7b0a"}]},{"position":1,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0400000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"2cfbc821a459ef53b9ee4a170b735e54f968f239bf9155712f4b88256f97d54a"}]}]}
416 ```
417
418 ```bash
419 $ ./bytomcli sign-submit-transaction '{"allow_additional_actions":false,"raw_transaction":"070100020160015ee56e4d688e98160067fa25be520d3a5a90e63838b5ff6363997c7c9b962796daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc030201160014f415518fb593e84be705c5c64560ab1b740e9d1201000160015e5685c051b6a7f1631e0505ea99a61997c1b8322148321eb864435c8516a5a8eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80e0e1c90300011600144457a5103dc682327fe2ef662f812dce3f97ffae010002013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80869dc003011600146026f938bbcf6b6b90eb9d8fbb8c1725e0ae3d0b00013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094ebdc0301160014bf0694b62805b110ad604803011dcfaca7fa08be00","signing_instructions":[{"position":0,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0200000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"4dc1e7f4e9710378cb80f180e159005a5ca8934d68df6136b782fe08d23d7b0a"}]},{"position":1,"witness_components":[{"keys":[{"derivation_path":["010100000000000000","0400000000000000"],"xpub":"d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"}],"quorum":1,"signatures":null,"type":"raw_tx_signature"},{"type":"data","value":"2cfbc821a459ef53b9ee4a170b735e54f968f239bf9155712f4b88256f97d54a"}]}]}' -p 123
420
421
422 {
423   "tx_id": "1c84c8d8dae7675114f9de970e221ec9e07e1787f6e72ac6e95a03fced7d22cb"
424 }
425 ```
426
427 ```bash
428 $ ./bytomcli list-balances
429 0 :
430 {
431   "account_alias": "default",
432   "account_id": "0CIT2D2O00A02",
433   "amount": 3212560000000,
434   "asset_alias": "BTM",
435   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
436 }
437 1 :
438 {
439   "account_alias": "alice",
440   "account_id": "0CIT3OI100A04",
441   "amount": 9000,
442   "asset_alias": "GOLD",
443   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
444 }
445 2 :
446 {
447   "account_alias": "alice",
448   "account_id": "0CIT3OI100A04",
449   "amount": 3940000000,
450   "asset_alias": "BTM",
451   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
452 }
453 3 :
454 {
455   "account_alias": "bob",
456   "account_id": "0CITLN2KG0A08",
457   "amount": 1000,
458   "asset_alias": "GOLD",
459   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
460 }
461 4 :
462 {
463   "account_alias": "bob",
464   "account_id": "0CITLN2KG0A08",
465   "amount": 1000000000,
466   "asset_alias": "BTM",
467   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
468 }
469 ```
470
471 ## Running Bytom in Docker
472
473 Ensure your [Docker](https://www.docker.com/) version is 17.05 or higher.
474
475 ```bash
476 $ docker build -t bytom .
477 ```
478
479 ## Contributing
480
481 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!
482
483 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!
484
485 ## License
486
487 [AGPL v3](./LICENSE)