OSDN Git Service

update readme.md
[bytom/pybtm.git] / README.md
1 pybtm
2 ======
3
4 - [1 Installation](#1-installation)
5 - [2 Usage](#2-usage)
6   - [2.1 Create entropy](#21-create-entropy)
7   - [2.2 Create mnemonics](#22-create-mnemonics)
8   - [2.3 Create seed](#23-create-seed)
9   - [2.4 Create root expanded private key](#24-create-root-expanded-private-key)
10   - [2.5 Create expanded public key](#25-create-expanded-public-key)
11   - [2.6 Create expanded private key](#26-create-expanded-private-key)
12   - [2.7 Create public key](#27-create-public-key)
13   - [2.8 Create child expanded private key](#28-create-child-expanded-private-key)
14   - [2.9 Create child expanded public key](#29-create-child-expanded-public-key)
15   - [2.10 Sign message](#210-sign-message)
16   - [2.11 Verify signature](#211-verify-signature)
17   - [2.12 Create new key](#212-create-new-key)
18
19 Python3 implementation of the Bytom protocol.
20
21 ## 1 Installation
22
23 ```
24 $ pip install pybtm
25 ```
26
27 ## 2 Usage
28
29 ### 2.1 Create entropy
30
31 get_entropy() create 128 bits entropy.
32
33 Return:
34
35 - entropy_hexstr: 128 bits entropy.
36
37 ```python
38 >>> from pybtm import key
39 >>> key.get_entropy()
40 '100e2704b431f914e3262926bdba6fce'
41 ```
42
43 ### 2.2 Create mnemonics
44
45 get_mnemonic create 12 new mnemonics.
46
47 Parameter:
48
49 - entropy_hexstr(optional): 128 bits entropy, type is hex string.
50
51 Return:
52
53 - mnemonic_str: 12 mnemonics.
54
55 ```python
56 >>> key.get_mnemonic('089fe9bf0cac76760bc4b131d938669e')
57 'ancient young hurt bone shuffle deposit congress normal crack six boost despair'
58 ```
59
60 If no paramater is specified, it will return 12 new random mnemonics.
61
62 ```python
63 >>> from pybtm import key
64 >>> key.get_mnemonic()
65 'nothing gate perfect glide wink lizard journey negative load quote wrong reason'
66 ```
67
68 ### 2.3 Create seed
69
70 get_seed create 512 bits seed from 12 mnemonics.
71
72 Parameter:
73
74 - mnemonic_str: 12 mnemonics.
75
76 Return:
77
78 - seed_hexstr: 512 bits seed, type is hex string.
79
80 ```python
81 >>> from pybtm import key
82 >>> key.get_seed('ancient young hurt bone shuffle deposit congress normal crack six boost despair')
83 'afa3a86bbec2f40bb32833fc6324593824c4fc7821ed32eac1f762b5893e56745f66a6c6f2588b3d627680aa4e0e50efd25065097b3daa8c6a19d606838fe7d4'
84 ```
85
86 ### 2.4 Create root expanded private key
87
88 get_root_xprv create root expanded private key.
89
90 Parameter:
91
92 - seed_hexstr: 512 bits seed, type is hex string.
93
94 Return:
95
96 - root_xprv_hexstring: 512 bits seed, type is hex string.
97
98 ```python
99 >>> from pybtm import key
100 >>> key.get_root_xprv('afa3a86bbec2f40bb32833fc6324593824c4fc7821ed32eac1f762b5893e56745f66a6c6f2588b3d627680aa4e0e50efd25065097b3daa8c6a19d606838fe7d4')
101 '302a25c7c0a68a83fa043f594a2db8b44bc871fced553a8a33144b31bc7fb84887c9e75915bb6ba3fd0b9f94a60b7a5897ab9db6a48f888c2559132dba9152b0'
102 ```
103
104 ### 2.5 Create expanded public key
105
106 get_xpub create expanded public key.
107
108 Parameter:
109
110 - xprv_hexstr: 512 bits expanded private key, type is hex string.
111
112 Return:
113
114 - xpub_hexstr: 512 bits expanded public key, type is hex string.
115
116 ```python
117 >>> from pybtm import key
118 >>> xprv_hexstr = 'c003f4bcccf9ad6f05ad2c84fa5ff98430eb8e73de5de232bc29334c7d074759d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c'
119 >>> key.get_xpub(xprv_hexstr)
120 '1b0541a7664cee929edb54d9ef21996b90546918a920a77e1cd6015d97c56563d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c'
121 ```
122
123 ### 2.6 Create expanded private key
124
125 get_expanded_private_key create expanded private key.
126
127 Parameter:
128
129 - xprv_hexstr: 512 bits expanded private key, type is hex string.
130
131 Return:
132
133 - expanded_private_key_hexstr: 512 bits expanded private key, type is hex string.
134
135 ```python
136 >>> from pybtm import key
137 >>> xprv_hexstr = '406c82307bf7978d17f3ecfeea7705370e9faef2027affa86c8027c6e11a8a50e231e65bd97048850ae6c39d0f46b63ae70aa24f5aac7877727c430c2201e6d6'
138 >>> key.get_expanded_private_key(xprv_hexstr)
139 '406c82307bf7978d17f3ecfeea7705370e9faef2027affa86c8027c6e11a8a50d828bf44b1a109c2bbb4c72685858e2f2ab8b405beef1e4ecc12d1ed8511e8eb'
140 ```
141
142 ### 2.7 Create public key
143
144 get_public_key create 32 bytes public key.
145
146 Parameter:
147
148 - xpub_hexstr: 512 bits expanded public key, type is hex string.
149
150 Return:
151
152 - public_key_hexstr: 256 bits public key, type is hex string.
153
154 ```python
155 >>> from pybtm import key
156 >>> xpub_hexstr = 'ecc2bbb6c0492873cdbc81edf56bd896d3b644047879840e357be735b7fa7b6f4af1be7b8d71cc649ac4ca3816f9ccaf11bf49f4effb845f3c19e16eaf8bfcda'
157 >>> key.get_public_key(xpub_hexstr)
158 'ecc2bbb6c0492873cdbc81edf56bd896d3b644047879840e357be735b7fa7b6f'
159 ```
160
161 ### 2.8 Create child expanded private key
162
163 get_child_xprv create child private key.
164
165 Parameter:
166
167 - xprv_hexstr: 512 bits expanded private key, type is hex string.
168 - path_list: 010203 7906a1
169
170 Return:
171
172 - child_xprv_hexstr: 512 bits private key, type is hex string.
173
174 ```python
175 >>> from pybtm import key
176 >>> xprv_hexstr = 'c003f4bcccf9ad6f05ad2c84fa5ff98430eb8e73de5de232bc29334c7d074759d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c'
177 >>> path_list = ['010203', '7906a1']
178 >>> key.get_child_xprv(xprv_hexstr, path_list)
179 '4853a0b00bdcb139e85855d9594e5f641b65218db7c50426946511397e094759bd9de7f2dcad9d7d45389bc94baecaec88aabf58f6e1d832b1f9995a93ec37ea'
180 ```
181
182 ### 2.9 Create child expanded public key
183
184 get_child_xpub create child public key.
185
186 Parameter:
187
188 - xpub_hexstr: 512 bits expanded public key, type is hex string.
189 - path_list: 010203 7906a1
190
191 Return:
192
193 - child_xpub_hexstr: 512 bits public key, type is hex string.
194
195 ```python
196 >>> from pybtm import key
197 >>> xpub_hexstr = '1b0541a7664cee929edb54d9ef21996b90546918a920a77e1cd6015d97c56563d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c'
198 >>> path_list = ['010203', '7906a1']
199 >>> key.get_child_xpub(xpub_hexstr, path_list)
200 'e65c1a9714e2116c6e5d57dee188a53b98dc901a21def5a5ca46fcf78303f4f2bd9de7f2dcad9d7d45389bc94baecaec88aabf58f6e1d832b1f9995a93ec37ea'
201 ```
202
203 ### 2.10 Sign message
204
205 xprv_sign sign message.
206
207 Parameter:
208
209 - xprv_hexstr: 512 bits expanded private key, type is hex string.
210 - message_hexstr: message, type is hex string.
211
212 Return:
213
214 - signature_hexstr: 512 bits signature, type is hex string.
215
216 ```python
217 >>> from pybtm import key
218 >>> xprv_hexstr = '88c0c40fb54ef9c1b90af8cce8dc4c9d54f915074dde93f79ab61cedae03444101ff37ac4a07869214c2735bba0175e001abe608db18538e083e1e44430a273b'
219 >>> message_hexstr = '1246b84985e1ab5f83f4ec2bdf271114666fd3d9e24d12981a3c861b9ed523c6'
220 >>> key.xprv_sign(xprv_hexstr, message_hexstr)
221 'ab18f49b23d03295bc2a3f2a7d5bb53a2997bed733e1fc408b50ec834ae7e43f7da40fe5d9d50f6ef2d188e1d27f976aa2586cef1ba00dd098b5c9effa046306'
222 ```
223
224 ### 2.11 Verify signature
225
226 xpub_verify verify signature.
227
228 Parameter:
229
230 - xpub_hexstr: 512 bits expanded public key, type is hex string.
231 - message_hexstr: message, type is hex string.
232 - signature_hexstr: 512 bits signature, type is hex string.
233
234 Return:
235
236 - result: True or False.
237
238 ```python
239 >>> from pybtm import key
240 >>> xpub_hexstr = 'cb22ce197d342d6bb440b0bf13ddd674f367275d28a00f893d7f0b10817690fd01ff37ac4a07869214c2735bba0175e001abe608db18538e083e1e44430a273b'
241 >>> message_hexstr = '1246b84985e1ab5f83f4ec2bdf271114666fd3d9e24d12981a3c861b9ed523c6'
242 >>> signature_hexstr = 'ab18f49b23d03295bc2a3f2a7d5bb53a2997bed733e1fc408b50ec834ae7e43f7da40fe5d9d50f6ef2d188e1d27f976aa2586cef1ba00dd098b5c9effa046306'
243 >>> key.xpub_verify(xpub_hexstr, message_hexstr, signature_hexstr)
244 True
245 ```
246
247 ### 2.12 Create new key
248
249 get_new_key create new key.
250
251 Parameter:
252
253 - entropy_hexstr(optional): 128 bits entropy, type is hex string.
254 - mnemonic_str(optional): 12 mnemonics.
255
256 Return:
257
258 - entropy: 128 bits entropy.
259 - mnemonic: 12 mnemonics.
260 - seed: 512 bits seed.
261 - xprv: 512 bits expaneded private key.
262 - xpub: 512 bits expaneded public key.
263 - xprv_base64: xprv hex string qrcode base64.
264
265 ```python
266 >>> from pybtm import key
267 >>> r = key.get_new_key()
268 >>> r['entropy']
269 '8466b1128f92051361c9aa2de52d1bb0'
270 >>> r['mnemonic']
271 'love culture dwarf busy cake meadow mango crystal combine city eight genuine'
272 >>> r['seed']
273 '4d15bf0f72bad754987fdcd0628ea37af03ac24666019c6d362e0200c9b49bee35aa0a788ed09e3a86cd529df0a1c20ea6aa719cf1e0da4ffb15efbc38fba498'
274 >>> r['xprv']
275 'f09ad64c2714b45e23c75e4541ad771def99b97e6da16b0cc6bcdac045f4d34745b62093173fd8f9a67e1da4b81233bc947880b6ed4b9641cf8f5223212fa18d'
276 >>> r['xpub']
277 'ebcc4b14444adb207dd53fd89b2881b21e839de42a1b6687a5a9d83b82c1b5b645b62093173fd8f9a67e1da4b81233bc947880b6ed4b9641cf8f5223212fa18d'
278 >>> r['xprv_base64']
279 {'base64': '/9j/4AAQSkZJRgABAQAAAQABAAD...'}
280 ```
281
282 ```python
283 >>> from pybtm import key
284 >>> r = key.get_new_key(entropy_hexstr='4d33735a9e92f634d22aecbb4044038d')
285 >>> r['entropy']
286 '4d33735a9e92f634d22aecbb4044038d'
287 >>> r['mnemonic']
288 'essay oppose stove diamond control bounce emerge frown robust acquire abstract brick'
289 ```
290
291 ```python
292 >>> from pybtm import key
293 >>> r = key.get_new_key(mnemonic_str='ancient young hurt bone shuffle deposit congress normal crack six boost despair')
294 >>> r['entropy']
295 ''
296 >>> r['mnemonic']
297 'ancient young hurt bone shuffle deposit congress normal crack six boost despair'
298 >>> r['seed']
299 'afa3a86bbec2f40bb32833fc6324593824c4fc7821ed32eac1f762b5893e56745f66a6c6f2588b3d627680aa4e0e50efd25065097b3daa8c6a19d606838fe7d4'
300 ```