OSDN Git Service

modify list-pubkeys response order (#1170)
[bytom/bytom-spv.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.git $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 mainnet
90 ```
91
92 There are three options for the flag `--chain_id`:
93
94 - `mainnet`: connect to the mainnet.
95 - `testnet`: connect to the testnet wisdom.
96 - `solonet`: standalone mode.
97
98 After that, you'll see `config.toml` generated, then launch the node.
99
100 ### launch
101
102 ``` bash
103 $ ./bytomd node --mining
104 ```
105
106 available flags for `bytomd node`:
107
108 ```
109       --auth.disable                Disable rpc access authenticate
110       --chain_id string             Select network type
111   -h, --help                        help for node
112       --mining                      Enable mining
113       --p2p.dial_timeout int        Set dial timeout (default 3)
114       --p2p.handshake_timeout int   Set handshake timeout (default 30)
115       --p2p.laddr string            Node listen address.
116       --p2p.max_num_peers int       Set max num peers (default 50)
117       --p2p.pex                     Enable Peer-Exchange  (default true)
118       --p2p.seeds string            Comma delimited host:port seed nodes
119       --p2p.skip_upnp               Skip UPNP configuration
120       --prof_laddr string           Use http to profile bytomd programs
121       --vault_mode                  Run in the offline enviroment
122       --wallet.disable              Disable wallet
123       --wallet.rescan               Rescan wallet
124       --web.closed                  Lanch web browser or not
125 ```
126
127 Given the `bytomd` node is running, the general workflow is as follows:
128
129 - create key, then you can create account and asset.
130 - send transaction, i.e., build, sign and submit transaction.
131 - query all kinds of information, let's say, avaliable key, account, key, balances, transactions, etc.
132
133 #### Dashboard
134
135 Access the dashboard:
136
137 ```bash
138 $ open http://localhost:9888/
139 ```
140
141 ### Create key
142
143 You can create a key with the following command:
144
145 ```bash
146 $ ./bytomcli create-key alice 123
147 {
148   "alias": "alice",
149   "xpub": "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
150 }
151 ```
152
153 list the keys:
154
155 ```bash
156 $ ./bytomcli list-keys
157 ```
158
159 ### Create account
160
161 Create an account named `alice`:
162
163 ```bash
164 $ ./bytomcli create-account alice d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb
165 {
166   "alias": "alice",
167   "id": "0CIT3OI100A04",
168   "key_index": 1,
169   "quorum": 1,
170   "xpubs": [
171     "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
172   ]
173 }
174 ```
175
176 Check out the new created account:
177
178 ```bash
179 $ ./bytomcli list-accounts
180 ```
181
182 #### Multi-signature account
183
184 ```bash
185 $ ./bytomcli list-keys
186 0 :
187 {
188   "alias": "default",
189   "xpub": "336150c3a63411f597d94aa26fe714a348b2e93f2c303d526bb225e5804466e366e58cff81fddaed7879586b92132d63c68b419856f85ca06abfc490a9990c38"
190 }
191 1 :
192 {
193   "alias": "alice",
194   "xpub": "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
195 }
196 2 :
197 {
198   "alias": "bob",
199   "xpub": "cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64"
200 }
201 ```
202
203 ```bash
204 $ ./bytomcli create-account multi_account d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64 -q 2
205 {
206   "alias": "multi_account",
207   "id": "0CIT6J0QG0A06",
208   "key_index": 1,
209   "quorum": 2,
210   "xpubs": [
211     "cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64",
212     "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
213   ]
214 }
215 ```
216
217 ### Create asset
218
219 Create an asset named `GOLD`:
220
221 ```bash
222 $ ./bytomcli create-asset GOLD d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb
223 {
224   "alias": "GOLD",
225   "definition": {},
226   "id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397",
227   "issuance_program": "ae2035b53ed466a40e3d1073ffdcf1c7d0c4ffc439391f9ef5999b365ea467c96a3c5151ad",
228   "keys": [
229     {
230       "asset_derivation_path": [
231         "000100000000000000"
232       ],
233       "asset_pubkey": "35b53ed466a40e3d1073ffdcf1c7d0c4ffc439391f9ef5999b365ea467c96a3c0e8b6d5a67bd5fc66d7a19d4754df6de6cbf3b40fc6b02a75f140d77a1dbcda8",
234       "root_xpub": "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
235     }
236   ],
237   "quorum": 1
238 }
239 ```
240
241 Check out the new created asset:
242
243 ```bash
244 $ ./bytomcli list-assets
245 ```
246
247 #### Multi-signature asset
248
249 ```bash
250 $ ./bytomcli create-asset SILVER d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64
251 {
252   "alias": "SILVER",
253   "definition": {},
254   "id": "50cd5b0ecfdfe388fc0bc6b74df6becd94f1e52e1913a449a473bba87745fe30",
255   "issuance_program": "ae20936178877c2a3a2df9c3733e2ac6f7e99477314c54e214348abb0d4cbdace810208d064a125805493cb99be9c19ed6a356c97753fdfe52fade337fa598c3c59b8c5152ad",
256   "keys": [
257     {
258       "asset_derivation_path": [
259         "000200000000000000"
260       ],
261       "asset_pubkey": "936178877c2a3a2df9c3733e2ac6f7e99477314c54e214348abb0d4cbdace810f9ef97f8edd43707069426ff1ac1d2fe96d23c5e005ac5cb52be2a7de82d2a92",
262       "root_xpub": "cb6057b683c5a341ea29e02ec5bb1e53691eb3b14c285138175d42b07d0551798977fc50203bde1dc2827a07f6f26237fa8ec3c6a2ef272ed80f9211f9c6ac64"
263     },
264     {
265       "asset_derivation_path": [
266         "000200000000000000"
267       ],
268       "asset_pubkey": "8d064a125805493cb99be9c19ed6a356c97753fdfe52fade337fa598c3c59b8c4eb0b479d566c0efe72ab69f2273ab4b6a6dce9e1e3657839698be6c53e9d04a",
269       "root_xpub": "d91df216da6c5641ef454c8da1e56362f86ed80d8b8fc26ab77746e1b92d6d3aa8023fe300e4c74036460d01349e4eb25cb3d7379bad855879017bc1c76165bb"
270     }
271   ],
272   "quorum": 1
273 }
274 ```
275
276 ### Sending transaction
277
278 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`.
279
280 #### Issue
281
282 ##### `build-transaction`
283
284 Let's say, issue 10000 GOLD to alice:
285 ```bash
286 $ ./bytomcli create-account-receiver alice
287 {
288   "address": "bm1q7s24rra4j05yhec9chry2c9trd6qa8gjr6cue3",
289   "control_program": "0014f415518fb593e84be705c5c64560ab1b740e9d12"
290 }
291 ```
292
293 ```bash
294 $ ./bytomcli build-transaction -t issue alice GOLD 10000 -a bm1q7s24rra4j05yhec9chry2c9trd6qa8gjr6cue3 --alias
295 Template Type: issue
296 {"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"}]}]}
297 ```
298
299 The response of `build-transaction` will be used in the following `sign-submit-transaction` command.
300
301 ##### `sign-submit-transaction`
302
303 ```bash
304 $ ./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 
305
306 {
307   "tx_id": "62fe1716f2b8fe012578a3a8f6b02bd2fa548fef5bba792ea78673e07b38198d"
308 }
309 ```
310
311 When the transaction is on-chain, query the balances:
312
313 ```bash
314 # alice should have 10000 GOLD now
315 $ ./bytomcli list-balances
316 0 :
317 {
318   "account_alias": "default",
319   "account_id": "0CIT2D2O00A02",
320   "amount": 2098770000000,
321   "asset_alias": "BTM",
322   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
323 }
324 1 :
325 {
326   "account_alias": "alice",
327   "account_id": "0CIT3OI100A04",
328   "amount": 10000,
329   "asset_alias": "GOLD",
330   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
331 }
332 2 :
333 {
334   "account_alias": "alice",
335   "account_id": "0CIT3OI100A04",
336   "amount": 4980000000,
337   "asset_alias": "BTM",
338   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
339 }
340 ```
341
342 #### Spend
343
344 Alice pays Bob `<payment_amount>`, e.g., 1000, `GOLD`:
345
346 ##### `create-account-receiver`
347
348 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.
349
350 ```bash
351 $ ./bytomcli create-account-receiver bob
352 {
353   "address": "bm1qhurffd3gqkc3pttqfqpsz8w04jnl5z97798tpt",
354   "control_program": "0014bf0694b62805b110ad604803011dcfaca7fa08be"
355 }
356 ```
357
358 ##### `build-transaction`
359
360 ```bash
361 # ./bytomcli build-transaction -t spend <sender_account> <asset> <amount> --alias -r <receiver_control_program>
362 $ ./bytomcli build-transaction -t spend alice GOLD 1000 --alias -r 0014bf0694b62805b110ad604803011dcfaca7fa08be
363 Template Type: spend
364 {"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"}]}]}
365 ```
366
367 ##### `sign-submit-transaction`
368
369 ```bash
370 $ ./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"}]}]}'
371
372
373 {
374   "txid": "3bf01bd21d7bbf3eb1c6e27e5646be1c4a7bd5602125eebf28f430246b08c226"
375 }
376 ```
377
378 ```bash
379 $./bytomcli list-balances
380 0 :
381 {
382   "account_alias": "default",
383   "account_id": "0CIT2D2O00A02",
384   "amount": 2758790000000,
385   "asset_alias": "BTM",
386   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
387 }
388 1 :
389 {
390   "account_alias": "alice",
391   "account_id": "0CIT3OI100A04",
392   "amount": 9000,
393   "asset_alias": "GOLD",
394   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
395 }
396 2 :
397 {
398   "account_alias": "alice",
399   "account_id": "0CIT3OI100A04",
400   "amount": 4960000000,
401   "asset_alias": "BTM",
402   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
403 }
404 3 :
405 {
406   "account_alias": "bob",
407   "account_id": "0CITLN2KG0A08",
408   "amount": 1000,
409   "asset_alias": "GOLD",
410   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
411 }
412 ```
413
414 #### Transfer BTM
415
416 ```bash
417 # ./bytomcli build-transaction -t spend <sender_account> <asset> <amount> --alias -r <receiver_control_program>
418 $ ./bytomcli build-transaction -t spend alice BTM 1000000000 --alias -r 0014bf0694b62805b110ad604803011dcfaca7fa08be
419 Template Type: spend
420 {"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"}]}]}
421 ```
422
423 ```bash
424 $ ./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
425
426
427 {
428   "tx_id": "1c84c8d8dae7675114f9de970e221ec9e07e1787f6e72ac6e95a03fced7d22cb"
429 }
430 ```
431
432 ```bash
433 $ ./bytomcli list-balances
434 0 :
435 {
436   "account_alias": "default",
437   "account_id": "0CIT2D2O00A02",
438   "amount": 3212560000000,
439   "asset_alias": "BTM",
440   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
441 }
442 1 :
443 {
444   "account_alias": "alice",
445   "account_id": "0CIT3OI100A04",
446   "amount": 9000,
447   "asset_alias": "GOLD",
448   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
449 }
450 2 :
451 {
452   "account_alias": "alice",
453   "account_id": "0CIT3OI100A04",
454   "amount": 3940000000,
455   "asset_alias": "BTM",
456   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
457 }
458 3 :
459 {
460   "account_alias": "bob",
461   "account_id": "0CITLN2KG0A08",
462   "amount": 1000,
463   "asset_alias": "GOLD",
464   "asset_id": "43e89d8a5d8f4bb2fcd92621ace61d476c8237075ada6a9e80db931bbdb6c397"
465 }
466 4 :
467 {
468   "account_alias": "bob",
469   "account_id": "0CITLN2KG0A08",
470   "amount": 1000000000,
471   "asset_alias": "BTM",
472   "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
473 }
474 ```
475
476 ## Running Bytom in Docker
477
478 Ensure your [Docker](https://www.docker.com/) version is 17.05 or higher.
479
480 ```bash
481 $ docker build -t bytom .
482 ```
483
484 For the usage please refer to [here](https://github.com/Bytom/bytom/wiki/Running-in-Docker).
485
486 ## Contributing
487
488 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!
489
490 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!
491
492 ## License
493
494 [AGPL v3](./LICENSE)