├── .gitignore
├── .idea
└── vcs.xml
├── README.md
├── dbstore
└── wallet.db
├── example
├── cosmosTest.js
├── test.js
├── testTwo.js
└── xrpTest.js
├── index.js
├── package-lock.json
├── package.json
└── sdk
├── address
└── generateAddress.js
├── constant.js
├── keystore
└── generateKeystore.js
├── mnemonic
└── generateWord.js
├── sign
├── bitcoinSign.js
├── cosmosSign.js
├── erc20Sign.js
├── ethereumSign.js
├── indexSign.js
├── irisSign.js
├── omniSign.js
└── xrpSign.js
└── transaction
└── sendTrans.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # Specifies intentionally untracked files to ignore when using Git
2 | # http://git-scm.com/docs/gitignore dist/
3 |
4 | *~
5 | *.sw[mnpcod]
6 | *.log
7 | *.tmp
8 | *.tmp.*
9 | log.txt
10 | *.sublime-project
11 | *.sublime-workspace
12 | .vscode/
13 | npm-debug.log*
14 |
15 | .idea/
16 | .sourcemaps/
17 | .sass-cache/
18 | .tmp/
19 | .versions/
20 | coverage/
21 | node_modules/
22 | tmp/
23 | temp/
24 | hooks/
25 | platforms/
26 | plugins/
27 | plugins/android.json
28 | plugins/ios.json
29 | $RECYCLE.BIN/
30 |
31 | .DS_Store
32 | Thumbs.db
33 | UserInterfaceState.xcuserstate
34 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # blockchain-wallet-sdk
2 |
--------------------------------------------------------------------------------
/dbstore/wallet.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guoshijiang/blockchain-wallet-sdk/56b639f2096892ebfe20ec5acdadab622de95801/dbstore/wallet.db
--------------------------------------------------------------------------------
/example/cosmosTest.js:
--------------------------------------------------------------------------------
1 | var mnemonicS = require("../sdk/mnemonic/generateWord");
2 | var address = require("../sdk/address/generateAddress");
3 |
4 | var addressParmas = {
5 | "coinType":"IRIS",
6 | }
7 |
8 | var addr = address.blockchainAddress(addressParmas);
9 | console.log(addr);
10 |
--------------------------------------------------------------------------------
/example/test.js:
--------------------------------------------------------------------------------
1 | const signs = require('../sdk/sign/indexSign');
2 |
3 | var utxo ={
4 | "unspent_outputs":[
5 | {
6 | "tx_hash":"58b632679fadd5071fa2129bee5bf9336e04e0043602272d4b8dc871a83694c0",
7 | "tx_hash_big_endian":"c09436a871c88d4b2d27023604e0046e33f95bee9b12a21f07d5ad9f6732b658",
8 | "tx_index":387716199,
9 | "tx_output_n": 0,
10 | "script":"76a9148ac137fb413490ec6f69792552c5f5ddf2ecd4cf88ac",
11 | "value": 100000,
12 | "value_hex": "0186a0",
13 | "confirmations":5925
14 | },
15 | {
16 | "tx_hash":"e518c002e4cd8c5bedddeb0c24206394ae10b51ab1f1d0ed73471bd1d0dd4a9f",
17 | "tx_hash_big_endian":"9f4addd0d11b4773edd0f1b11ab510ae946320240cebdded5b8ccde402c018e5",
18 | "tx_index":389304216,
19 | "tx_output_n": 0,
20 | "script":"76a9148ac137fb413490ec6f69792552c5f5ddf2ecd4cf88ac",
21 | "value": 100000,
22 | "value_hex": "0186a0",
23 | "confirmations":5166
24 | },
25 | {
26 | "tx_hash":"cf2bfbbca9071a62fc53edc3ae0bd9343c91529d41a4ff10291328d9b577e32a",
27 | "tx_hash_big_endian":"2ae377b5d928132910ffa4419d52913c34d90baec3ed53fc621a07a9bcfb2bcf",
28 | "tx_index":399118405,
29 | "tx_output_n": 2,
30 | "script":"76a9148ac137fb413490ec6f69792552c5f5ddf2ecd4cf88ac",
31 | "value": 546,
32 | "value_hex": "0222",
33 | "confirmations":495
34 | },
35 | {
36 | "tx_hash":"1bf1e457ac7572518cde36945e94728659dfae7fb2229411c1e13c085054c506",
37 | "tx_hash_big_endian":"06c55450083ce1c1119422b27faedf598672945e9436de8c517275ac57e4f11b",
38 | "tx_index":399167492,
39 | "tx_output_n": 0,
40 | "script":"76a9148ac137fb413490ec6f69792552c5f5ddf2ecd4cf88ac",
41 | "value": 546,
42 | "value_hex": "0222",
43 | "confirmations":471
44 | },
45 | {
46 | "tx_hash":"57528ec2f4fecede043ce15305d7e9748031ffed7df5ae92472e5904e20a2aff",
47 | "tx_hash_big_endian":"ff2a0ae204592e4792aef57dedff318074e9d70553e13c04decefef4c28e5257",
48 | "tx_index":399168014,
49 | "tx_output_n": 0,
50 | "script":"76a9148ac137fb413490ec6f69792552c5f5ddf2ecd4cf88ac",
51 | "value": 546,
52 | "value_hex": "0222",
53 | "confirmations":471
54 | }
55 | ]
56 | }
57 |
58 | var signParams = {
59 | "signMark":"OMNI",
60 | "privateKey":"私钥",
61 | "contractAddress":"0xfa3118b34522580c35ae27f6cf52da1dbb756288",
62 | "fromAddress":"12zEJohMNqSZLXH1Msxpw41ykkk3rxgx1s",
63 | "changeAddress":"1KSX5wmrVax3LYaB4uKUxXzCRcv5SiLDq3",
64 | "utxo":utxo.unspent_outputs,
65 | "sendFee":0.001,
66 | "gasPrice":12000000000,
67 | "gasLimit":30000,
68 | "nonce":63,
69 | "decimal":6,
70 | "addressAmount":[
71 | {
72 | "toAddress":"1KSX5wmrVax3LYaB4uKUxXzCRcv5SiLDq3",
73 | "amount":10
74 | },{
75 | "toAddress":"12zEJohMNqSZLXH1Msxpw41ykkk3rxgx1s",
76 | "amount":10
77 | },{
78 | "toAddress":"12zEJohMNqSZLXH1Msxpw41ykkk3rxgx1s",
79 | "amount":10
80 | }
81 | ]
82 | };
83 |
84 | var sign = signs.blockchainWalletSign(signParams);
85 | console.log(sign);
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/example/testTwo.js:
--------------------------------------------------------------------------------
1 | const mutiOmniSing = require('../sdk/sign/omniSign');
2 |
3 | var utxo ={
4 | "unspent_outputs":[
5 | {
6 | "tx_hash":"58b632679fadd5071fa2129bee5bf9336e04e0043602272d4b8dc871a83694c0",
7 | "tx_hash_big_endian":"c09436a871c88d4b2d27023604e0046e33f95bee9b12a21f07d5ad9f6732b658",
8 | "tx_index":387716199,
9 | "tx_output_n": 1,
10 | "script":"76a91462afcd140f6175796395a9a2f55cf2bbb601393488ac",
11 | "value": 10000,
12 | "value_hex": "2710",
13 | "confirmations":6096
14 | },
15 |
16 | {
17 | "tx_hash":"e518c002e4cd8c5bedddeb0c24206394ae10b51ab1f1d0ed73471bd1d0dd4a9f",
18 | "tx_hash_big_endian":"9f4addd0d11b4773edd0f1b11ab510ae946320240cebdded5b8ccde402c018e5",
19 | "tx_index":389304216,
20 | "tx_output_n": 1,
21 | "script":"76a91462afcd140f6175796395a9a2f55cf2bbb601393488ac",
22 | "value": 10000,
23 | "value_hex": "2710",
24 | "confirmations":5337
25 | },
26 |
27 | {
28 | "tx_hash":"1850f43bae65cbd273485605f72229b17cad5c403bd35d7d9428d2c235bb36c7",
29 | "tx_hash_big_endian":"c736bb35c2d228947d5dd33b405cad7cb12922f705564873d2cb65ae3bf45018",
30 | "tx_index":399931612,
31 | "tx_output_n": 0,
32 | "script":"76a91462afcd140f6175796395a9a2f55cf2bbb601393488ac",
33 | "value": 546,
34 | "value_hex": "0222",
35 | "confirmations":165
36 | },
37 |
38 | {
39 | "tx_hash":"ef3cb8ac18d67056d23afc52952684a0d822812e80b81c080c8e13dca8a52e63",
40 | "tx_hash_big_endian":"632ea5a8dc138e0c081cb8802e8122d8a084269552fc3ad25670d618acb83cef",
41 | "tx_index":400228035,
42 | "tx_output_n": 0,
43 | "script":"76a91462afcd140f6175796395a9a2f55cf2bbb601393488ac",
44 | "value": 546,
45 | "value_hex": "0222",
46 | "confirmations":0
47 | }
48 |
49 | ]
50 | };
51 |
52 | /*
53 | var sendInfo = {
54 | privateKey:"私钥",
55 | utxo:utxo.unspent_outputs,
56 | fromAddress:"1DefiYRCAD4wVS7rXwFkqhEn6R88EkSUnh",
57 | feeValue:0.0002,
58 | "addressAmount":[
59 | {
60 | "toAddress":"1KSX5wmrVax3LYaB4uKUxXzCRcv5SiLDq3",
61 | "amount":1
62 | },{
63 | "toAddress":"19zopg3DC4wqomG4JsW3JzYHHpMnkCnN38",
64 | "amount":1
65 | },{
66 | "toAddress":"1EEfQUapVjKZtdNNZNDKSKAjS28VmyMYzo",
67 | "amount":1
68 | }
69 | ]
70 | };
71 | */
72 |
73 | var privateKey = "私钥";
74 | var utxos = utxo.unspent_outputs;
75 | var fromAddress = "19zopg3DC4wqomG4JsW3JzYHHpMnkCnN38";
76 | var feeValue = 0.0002;
77 | var toAddress = "1DefiYRCAD4wVS7rXwFkqhEn6R88EkSUnh";
78 | var usdtValue = 1;
79 |
80 | var sign = mutiOmniSing.usdtSign(privateKey, utxos, feeValue, usdtValue, fromAddress, toAddress);
81 | console.log(sign);
82 |
83 |
84 |
--------------------------------------------------------------------------------
/example/xrpTest.js:
--------------------------------------------------------------------------------
1 | var mnemonicS = require("../sdk/mnemonic/generateWord");
2 | var address = require("../sdk/address/generateAddress");
3 |
4 | var addressParmas = {
5 | "coinType":"XRP",
6 | }
7 |
8 | var addr = address.blockchainAddress(addressParmas);
9 | console.log(addr);
10 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/guoshijiang/blockchain-wallet-sdk/56b639f2096892ebfe20ec5acdadab622de95801/index.js
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "blockchain-wallet-sdk",
3 | "version": "1.0.2",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@protobufjs/aspromise": {
8 | "version": "1.1.2",
9 | "resolved": "https://registry.npm.taobao.org/@protobufjs/aspromise/download/@protobufjs/aspromise-1.1.2.tgz",
10 | "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
11 | },
12 | "@protobufjs/base64": {
13 | "version": "1.1.2",
14 | "resolved": "https://registry.npm.taobao.org/@protobufjs/base64/download/@protobufjs/base64-1.1.2.tgz",
15 | "integrity": "sha1-TIVzDlm5ofHzSQR9vyQpYDS7JzU="
16 | },
17 | "@protobufjs/codegen": {
18 | "version": "2.0.4",
19 | "resolved": "https://registry.npm.taobao.org/@protobufjs/codegen/download/@protobufjs/codegen-2.0.4.tgz",
20 | "integrity": "sha1-fvN/DQEPsCitGtWXIuUG2SYoFcs="
21 | },
22 | "@protobufjs/eventemitter": {
23 | "version": "1.1.0",
24 | "resolved": "https://registry.npm.taobao.org/@protobufjs/eventemitter/download/@protobufjs/eventemitter-1.1.0.tgz",
25 | "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
26 | },
27 | "@protobufjs/fetch": {
28 | "version": "1.1.0",
29 | "resolved": "https://registry.npm.taobao.org/@protobufjs/fetch/download/@protobufjs/fetch-1.1.0.tgz",
30 | "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
31 | "requires": {
32 | "@protobufjs/aspromise": "1.1.2",
33 | "@protobufjs/inquire": "1.1.0"
34 | }
35 | },
36 | "@protobufjs/float": {
37 | "version": "1.0.2",
38 | "resolved": "https://registry.npm.taobao.org/@protobufjs/float/download/@protobufjs/float-1.0.2.tgz",
39 | "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
40 | },
41 | "@protobufjs/inquire": {
42 | "version": "1.1.0",
43 | "resolved": "https://registry.npm.taobao.org/@protobufjs/inquire/download/@protobufjs/inquire-1.1.0.tgz",
44 | "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
45 | },
46 | "@protobufjs/path": {
47 | "version": "1.1.2",
48 | "resolved": "https://registry.npm.taobao.org/@protobufjs/path/download/@protobufjs/path-1.1.2.tgz",
49 | "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
50 | },
51 | "@protobufjs/pool": {
52 | "version": "1.1.0",
53 | "resolved": "https://registry.npm.taobao.org/@protobufjs/pool/download/@protobufjs/pool-1.1.0.tgz",
54 | "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
55 | },
56 | "@protobufjs/utf8": {
57 | "version": "1.1.0",
58 | "resolved": "https://registry.npm.taobao.org/@protobufjs/utf8/download/@protobufjs/utf8-1.1.0.tgz",
59 | "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
60 | },
61 | "@types/lodash": {
62 | "version": "4.14.133",
63 | "resolved": "https://registry.npm.taobao.org/@types/lodash/download/@types/lodash-4.14.133.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Flodash%2Fdownload%2F%40types%2Flodash-4.14.133.tgz",
64 | "integrity": "sha1-QwchyW2iLdFpREPmjmzse6HBAD0="
65 | },
66 | "@types/long": {
67 | "version": "4.0.0",
68 | "resolved": "https://registry.npm.taobao.org/@types/long/download/@types/long-4.0.0.tgz",
69 | "integrity": "sha1-cZVR0jUtMBrIuB23Mqy2vcKNve8="
70 | },
71 | "@types/node": {
72 | "version": "10.14.8",
73 | "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-10.14.8.tgz",
74 | "integrity": "sha1-/kRCA+zvEWI0jNbet2xiR3ssxuk="
75 | },
76 | "@types/ws": {
77 | "version": "3.2.1",
78 | "resolved": "https://registry.npm.taobao.org/@types/ws/download/@types/ws-3.2.1.tgz",
79 | "integrity": "sha1-sMFXnljmhvg84Kl7uUY9KXBYJ/s=",
80 | "requires": {
81 | "@types/node": "10.14.8"
82 | }
83 | },
84 | "aes-js": {
85 | "version": "3.1.2",
86 | "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz",
87 | "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ=="
88 | },
89 | "agent-base": {
90 | "version": "4.2.1",
91 | "resolved": "https://registry.npm.taobao.org/agent-base/download/agent-base-4.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fagent-base%2Fdownload%2Fagent-base-4.2.1.tgz",
92 | "integrity": "sha1-2J5ZmfeXh1Z0wH2H8mD8Qeg+jKk=",
93 | "requires": {
94 | "es6-promisify": "5.0.0"
95 | }
96 | },
97 | "asn1.js": {
98 | "version": "4.10.1",
99 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
100 | "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
101 | "requires": {
102 | "bn.js": "4.11.8",
103 | "inherits": "2.0.3",
104 | "minimalistic-assert": "1.0.1"
105 | }
106 | },
107 | "async-limiter": {
108 | "version": "1.0.0",
109 | "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz",
110 | "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg="
111 | },
112 | "babel-runtime": {
113 | "version": "6.26.0",
114 | "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz",
115 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
116 | "requires": {
117 | "core-js": "2.6.9",
118 | "regenerator-runtime": "0.11.1"
119 | }
120 | },
121 | "base-x": {
122 | "version": "3.0.5",
123 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.5.tgz",
124 | "integrity": "sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA==",
125 | "requires": {
126 | "safe-buffer": "5.1.1"
127 | }
128 | },
129 | "base64-js": {
130 | "version": "1.3.0",
131 | "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.0.tgz",
132 | "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM="
133 | },
134 | "base64-node": {
135 | "version": "1.0.0",
136 | "resolved": "https://registry.npm.taobao.org/base64-node/download/base64-node-1.0.0.tgz",
137 | "integrity": "sha1-cYT23/XA/NK414ivy8MPOqkQR/w="
138 | },
139 | "bech32": {
140 | "version": "1.1.3",
141 | "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.3.tgz",
142 | "integrity": "sha512-yuVFUvrNcoJi0sv5phmqc6P+Fl1HjRDRNOOkHY2X/3LBy2bIGNSFx4fZ95HMaXHupuS7cZR15AsvtmCIF4UEyg=="
143 | },
144 | "bigi": {
145 | "version": "1.4.2",
146 | "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz",
147 | "integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU="
148 | },
149 | "bignumber.js": {
150 | "version": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934"
151 | },
152 | "bindings": {
153 | "version": "1.3.0",
154 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
155 | "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw=="
156 | },
157 | "bip32": {
158 | "version": "1.0.2",
159 | "resolved": "https://registry.npmjs.org/bip32/-/bip32-1.0.2.tgz",
160 | "integrity": "sha512-kedLYj8yvYzND+EfzeoMSlGiN7ImiRBF/MClJSZPkMfcU+OQO7ZpL5L/Yg+TunebBZIHhunstiQF//KLKSF5rg==",
161 | "requires": {
162 | "bs58check": "2.1.2",
163 | "create-hash": "1.2.0",
164 | "create-hmac": "1.1.7",
165 | "tiny-secp256k1": "1.0.1",
166 | "typeforce": "1.16.0",
167 | "wif": "2.0.6"
168 | }
169 | },
170 | "bip39": {
171 | "version": "2.5.0",
172 | "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz",
173 | "integrity": "sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==",
174 | "requires": {
175 | "create-hash": "1.2.0",
176 | "pbkdf2": "3.0.17",
177 | "randombytes": "2.0.6",
178 | "safe-buffer": "5.1.1",
179 | "unorm": "1.4.1"
180 | }
181 | },
182 | "bip66": {
183 | "version": "1.1.5",
184 | "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz",
185 | "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=",
186 | "requires": {
187 | "safe-buffer": "5.1.1"
188 | }
189 | },
190 | "bitcoin-ops": {
191 | "version": "1.4.1",
192 | "resolved": "https://registry.npmjs.org/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz",
193 | "integrity": "sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow=="
194 | },
195 | "bitcoinjs-lib": {
196 | "version": "3.3.2",
197 | "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-3.3.2.tgz",
198 | "integrity": "sha512-l5qqvbaK8wwtANPf6oEffykycg4383XgEYdia1rI7/JpGf1jfRWlOUCvx5TiTZS7kyIvY4j/UhIQ2urLsvGkzw==",
199 | "requires": {
200 | "bech32": "1.1.3",
201 | "bigi": "1.4.2",
202 | "bip66": "1.1.5",
203 | "bitcoin-ops": "1.4.1",
204 | "bs58check": "2.1.2",
205 | "create-hash": "1.2.0",
206 | "create-hmac": "1.1.7",
207 | "ecurve": "1.0.6",
208 | "merkle-lib": "2.0.10",
209 | "pushdata-bitcoin": "1.0.1",
210 | "randombytes": "2.0.6",
211 | "safe-buffer": "5.1.1",
212 | "typeforce": "1.16.0",
213 | "varuint-bitcoin": "1.1.0",
214 | "wif": "2.0.6"
215 | }
216 | },
217 | "bluebird": {
218 | "version": "3.5.5",
219 | "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.5.5.tgz",
220 | "integrity": "sha1-qNCv1zJR7/u9X+OEp31zADwXpx8="
221 | },
222 | "bn": {
223 | "version": "git+https://github.com/shineabel/bn.git#91e1163deed0fcebd2233197c8f202e9bbc2d0ec",
224 | "requires": {
225 | "buffer": "5.2.0"
226 | }
227 | },
228 | "bn.js": {
229 | "version": "4.11.8",
230 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
231 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
232 | },
233 | "brorand": {
234 | "version": "1.1.0",
235 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
236 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
237 | },
238 | "browserify-aes": {
239 | "version": "1.2.0",
240 | "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
241 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
242 | "requires": {
243 | "buffer-xor": "1.0.3",
244 | "cipher-base": "1.0.4",
245 | "create-hash": "1.2.0",
246 | "evp_bytestokey": "1.0.3",
247 | "inherits": "2.0.3",
248 | "safe-buffer": "5.1.1"
249 | }
250 | },
251 | "browserify-cipher": {
252 | "version": "1.0.1",
253 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
254 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
255 | "requires": {
256 | "browserify-aes": "1.2.0",
257 | "browserify-des": "1.0.2",
258 | "evp_bytestokey": "1.0.3"
259 | }
260 | },
261 | "browserify-des": {
262 | "version": "1.0.2",
263 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
264 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
265 | "requires": {
266 | "cipher-base": "1.0.4",
267 | "des.js": "1.0.0",
268 | "inherits": "2.0.3",
269 | "safe-buffer": "5.1.2"
270 | },
271 | "dependencies": {
272 | "safe-buffer": {
273 | "version": "5.1.2",
274 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
275 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
276 | }
277 | }
278 | },
279 | "browserify-rsa": {
280 | "version": "4.0.1",
281 | "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
282 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
283 | "requires": {
284 | "bn.js": "4.11.8",
285 | "randombytes": "2.0.6"
286 | }
287 | },
288 | "browserify-sign": {
289 | "version": "4.0.4",
290 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
291 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
292 | "requires": {
293 | "bn.js": "4.11.8",
294 | "browserify-rsa": "4.0.1",
295 | "create-hash": "1.2.0",
296 | "create-hmac": "1.1.7",
297 | "elliptic": "6.4.1",
298 | "inherits": "2.0.3",
299 | "parse-asn1": "5.1.1"
300 | }
301 | },
302 | "bs58": {
303 | "version": "4.0.1",
304 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz",
305 | "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=",
306 | "requires": {
307 | "base-x": "3.0.5"
308 | }
309 | },
310 | "bs58check": {
311 | "version": "2.1.2",
312 | "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz",
313 | "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==",
314 | "requires": {
315 | "bs58": "4.0.1",
316 | "create-hash": "1.2.0",
317 | "safe-buffer": "5.1.2"
318 | },
319 | "dependencies": {
320 | "safe-buffer": {
321 | "version": "5.1.2",
322 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
323 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
324 | }
325 | }
326 | },
327 | "buffer": {
328 | "version": "5.2.0",
329 | "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-5.2.0.tgz",
330 | "integrity": "sha1-U8+YJBEACZ6e6uIO5tUdIbFuVB4=",
331 | "requires": {
332 | "base64-js": "1.3.0",
333 | "ieee754": "1.1.13"
334 | }
335 | },
336 | "buffer-xor": {
337 | "version": "1.0.3",
338 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
339 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
340 | },
341 | "cipher-base": {
342 | "version": "1.0.4",
343 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
344 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
345 | "requires": {
346 | "inherits": "2.0.3",
347 | "safe-buffer": "5.1.1"
348 | }
349 | },
350 | "coinstring": {
351 | "version": "2.3.0",
352 | "resolved": "https://registry.npmjs.org/coinstring/-/coinstring-2.3.0.tgz",
353 | "integrity": "sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q=",
354 | "requires": {
355 | "bs58": "2.0.1",
356 | "create-hash": "1.2.0"
357 | },
358 | "dependencies": {
359 | "bs58": {
360 | "version": "2.0.1",
361 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-2.0.1.tgz",
362 | "integrity": "sha1-VZCNWPGYKrogCPob7Y+RmYopv40="
363 | }
364 | }
365 | },
366 | "convert-hex": {
367 | "version": "0.1.0",
368 | "resolved": "https://registry.npm.taobao.org/convert-hex/download/convert-hex-0.1.0.tgz",
369 | "integrity": "sha1-CMBFaJIsJ3drii6BqV05M2LqC2U="
370 | },
371 | "convert-string": {
372 | "version": "0.1.0",
373 | "resolved": "https://registry.npm.taobao.org/convert-string/download/convert-string-0.1.0.tgz",
374 | "integrity": "sha1-ec5BqbsNA7z3LNxqjzxW+7xkQQo="
375 | },
376 | "cookiejar": {
377 | "version": "2.1.2",
378 | "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
379 | "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA=="
380 | },
381 | "core-js": {
382 | "version": "2.6.9",
383 | "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.9.tgz",
384 | "integrity": "sha1-a0shRiDINBUuF5Mjcn/Bl0GwhPI="
385 | },
386 | "create-ecdh": {
387 | "version": "4.0.3",
388 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
389 | "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
390 | "requires": {
391 | "bn.js": "4.11.8",
392 | "elliptic": "6.4.1"
393 | }
394 | },
395 | "create-hash": {
396 | "version": "1.2.0",
397 | "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
398 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
399 | "requires": {
400 | "cipher-base": "1.0.4",
401 | "inherits": "2.0.3",
402 | "md5.js": "1.3.5",
403 | "ripemd160": "2.0.2",
404 | "sha.js": "2.4.11"
405 | }
406 | },
407 | "create-hmac": {
408 | "version": "1.1.7",
409 | "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
410 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
411 | "requires": {
412 | "cipher-base": "1.0.4",
413 | "create-hash": "1.2.0",
414 | "inherits": "2.0.3",
415 | "ripemd160": "2.0.2",
416 | "safe-buffer": "5.1.1",
417 | "sha.js": "2.4.11"
418 | }
419 | },
420 | "crypto-browserify": {
421 | "version": "3.12.0",
422 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
423 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
424 | "requires": {
425 | "browserify-cipher": "1.0.1",
426 | "browserify-sign": "4.0.4",
427 | "create-ecdh": "4.0.3",
428 | "create-hash": "1.2.0",
429 | "create-hmac": "1.1.7",
430 | "diffie-hellman": "5.0.3",
431 | "inherits": "2.0.3",
432 | "pbkdf2": "3.0.17",
433 | "public-encrypt": "4.0.3",
434 | "randombytes": "2.0.6",
435 | "randomfill": "1.0.4"
436 | }
437 | },
438 | "crypto-js": {
439 | "version": "3.1.8",
440 | "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.8.tgz",
441 | "integrity": "sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU="
442 | },
443 | "debug": {
444 | "version": "3.2.6",
445 | "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz",
446 | "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
447 | "requires": {
448 | "ms": "2.1.1"
449 | }
450 | },
451 | "decimal.js": {
452 | "version": "5.0.8",
453 | "resolved": "https://registry.npm.taobao.org/decimal.js/download/decimal.js-5.0.8.tgz",
454 | "integrity": "sha1-tIw/t9c6LU1JQOCzjxzSHbWzZ84="
455 | },
456 | "des.js": {
457 | "version": "1.0.0",
458 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
459 | "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
460 | "requires": {
461 | "inherits": "2.0.3",
462 | "minimalistic-assert": "1.0.1"
463 | }
464 | },
465 | "diffie-hellman": {
466 | "version": "5.0.3",
467 | "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
468 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
469 | "requires": {
470 | "bn.js": "4.11.8",
471 | "miller-rabin": "4.0.1",
472 | "randombytes": "2.0.6"
473 | }
474 | },
475 | "drbg.js": {
476 | "version": "1.0.1",
477 | "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz",
478 | "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=",
479 | "requires": {
480 | "browserify-aes": "1.2.0",
481 | "create-hash": "1.2.0",
482 | "create-hmac": "1.1.7"
483 | }
484 | },
485 | "ecurve": {
486 | "version": "1.0.6",
487 | "resolved": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz",
488 | "integrity": "sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w==",
489 | "requires": {
490 | "bigi": "1.4.2",
491 | "safe-buffer": "5.1.1"
492 | }
493 | },
494 | "elliptic": {
495 | "version": "6.4.1",
496 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
497 | "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
498 | "requires": {
499 | "bn.js": "4.11.8",
500 | "brorand": "1.1.0",
501 | "hash.js": "1.1.5",
502 | "hmac-drbg": "1.0.1",
503 | "inherits": "2.0.3",
504 | "minimalistic-assert": "1.0.1",
505 | "minimalistic-crypto-utils": "1.0.1"
506 | }
507 | },
508 | "es6-promise": {
509 | "version": "4.2.6",
510 | "resolved": "https://registry.npm.taobao.org/es6-promise/download/es6-promise-4.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes6-promise%2Fdownload%2Fes6-promise-4.2.6.tgz",
511 | "integrity": "sha1-toXt2CWIhjZepitX0w3ij63Nl08="
512 | },
513 | "es6-promisify": {
514 | "version": "5.0.0",
515 | "resolved": "https://registry.npm.taobao.org/es6-promisify/download/es6-promisify-5.0.0.tgz",
516 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
517 | "requires": {
518 | "es6-promise": "4.2.6"
519 | }
520 | },
521 | "ethereum-common": {
522 | "version": "0.0.18",
523 | "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz",
524 | "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8="
525 | },
526 | "ethereumjs-tx": {
527 | "version": "1.3.7",
528 | "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz",
529 | "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==",
530 | "requires": {
531 | "ethereum-common": "0.0.18",
532 | "ethereumjs-util": "5.2.0"
533 | }
534 | },
535 | "ethereumjs-util": {
536 | "version": "5.2.0",
537 | "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz",
538 | "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==",
539 | "requires": {
540 | "bn.js": "4.11.8",
541 | "create-hash": "1.2.0",
542 | "ethjs-util": "0.1.6",
543 | "keccak": "1.4.0",
544 | "rlp": "2.1.0",
545 | "safe-buffer": "5.1.1",
546 | "secp256k1": "3.5.2"
547 | }
548 | },
549 | "ethereumjs-wallet": {
550 | "version": "0.6.2",
551 | "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.2.tgz",
552 | "integrity": "sha512-DHEKPV9lYORM7dL8602dkb+AgdfzCYz2lxpdYQoD3OwG355LLDuivW9rGuLpDMCry/ORyBYV6n+QCo/71SwACg==",
553 | "requires": {
554 | "aes-js": "3.1.2",
555 | "bs58check": "2.1.2",
556 | "ethereumjs-util": "5.2.0",
557 | "hdkey": "1.1.0",
558 | "safe-buffer": "5.1.2",
559 | "scrypt.js": "0.2.0",
560 | "utf8": "3.0.0",
561 | "uuid": "3.3.2"
562 | },
563 | "dependencies": {
564 | "safe-buffer": {
565 | "version": "5.1.2",
566 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
567 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
568 | },
569 | "utf8": {
570 | "version": "3.0.0",
571 | "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
572 | "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ=="
573 | }
574 | }
575 | },
576 | "ethjs-util": {
577 | "version": "0.1.6",
578 | "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz",
579 | "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==",
580 | "requires": {
581 | "is-hex-prefixed": "1.0.0",
582 | "strip-hex-prefix": "1.0.0"
583 | }
584 | },
585 | "evp_bytestokey": {
586 | "version": "1.0.3",
587 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
588 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
589 | "requires": {
590 | "md5.js": "1.3.5",
591 | "safe-buffer": "5.1.1"
592 | }
593 | },
594 | "hash-base": {
595 | "version": "3.0.4",
596 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
597 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
598 | "requires": {
599 | "inherits": "2.0.3",
600 | "safe-buffer": "5.1.1"
601 | }
602 | },
603 | "hash.js": {
604 | "version": "1.1.5",
605 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz",
606 | "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",
607 | "requires": {
608 | "inherits": "2.0.3",
609 | "minimalistic-assert": "1.0.1"
610 | }
611 | },
612 | "hdkey": {
613 | "version": "1.1.0",
614 | "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-1.1.0.tgz",
615 | "integrity": "sha512-E7aU8pNlWUJbXGjTz/+lKf1LkMcA3hUrC5ZleeizrmLSd++kvf8mSOe3q8CmBDA9j4hdfXO5iY6hGiTUCOV2jQ==",
616 | "requires": {
617 | "coinstring": "2.3.0",
618 | "safe-buffer": "5.1.1",
619 | "secp256k1": "3.5.2"
620 | }
621 | },
622 | "hmac-drbg": {
623 | "version": "1.0.1",
624 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
625 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
626 | "requires": {
627 | "hash.js": "1.1.5",
628 | "minimalistic-assert": "1.0.1",
629 | "minimalistic-crypto-utils": "1.0.1"
630 | }
631 | },
632 | "https-proxy-agent": {
633 | "version": "2.2.1",
634 | "resolved": "https://registry.npm.taobao.org/https-proxy-agent/download/https-proxy-agent-2.2.1.tgz",
635 | "integrity": "sha1-UVUpcPoE1yPgTFbQQXjD+SWSu8A=",
636 | "requires": {
637 | "agent-base": "4.2.1",
638 | "debug": "3.2.6"
639 | }
640 | },
641 | "ieee754": {
642 | "version": "1.1.13",
643 | "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz",
644 | "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q="
645 | },
646 | "inherits": {
647 | "version": "2.0.3",
648 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
649 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
650 | },
651 | "irisnet-crypto": {
652 | "version": "git+https://github.com/irisnet/irisnet-crypto.git#745414a8e38578c65e468a164318383fa6dfa43d",
653 | "requires": {
654 | "base64-node": "1.0.0",
655 | "bech32": "1.1.3",
656 | "bignumber.js": "5.0.0",
657 | "bip39": "2.5.0",
658 | "bluebird": "3.5.5",
659 | "bn": "git+https://github.com/shineabel/bn.git#91e1163deed0fcebd2233197c8f202e9bbc2d0ec",
660 | "create-hmac": "1.1.7",
661 | "ethereumjs-tx": "1.3.7",
662 | "ethereumjs-util": "5.2.0",
663 | "js-crc": "0.2.0",
664 | "old": "0.2.0",
665 | "protobufjs": "6.8.8",
666 | "randombytes": "2.0.6",
667 | "ripemd160": "2.0.2",
668 | "secp256k1": "3.5.0",
669 | "sha256": "0.2.0",
670 | "text-encoding": "0.7.0",
671 | "tweetnacl": "1.0.1",
672 | "web3": "git+https://github.com/ethereum/web3.js.git#9f95015a67212f3eaa77401dfcbc42e0518bfb4d"
673 | },
674 | "dependencies": {
675 | "bignumber.js": {
676 | "version": "5.0.0",
677 | "resolved": "https://registry.npm.taobao.org/bignumber.js/download/bignumber.js-5.0.0.tgz",
678 | "integrity": "sha1-+85j8Jd2swAKgxhbrc3lJdrzSDM="
679 | },
680 | "secp256k1": {
681 | "version": "3.5.0",
682 | "resolved": "https://registry.npm.taobao.org/secp256k1/download/secp256k1-3.5.0.tgz",
683 | "integrity": "sha1-Z307io4E4aX6OBoa5DfFQge3ONA=",
684 | "requires": {
685 | "bindings": "1.3.0",
686 | "bip66": "1.1.5",
687 | "bn.js": "4.11.8",
688 | "create-hash": "1.2.0",
689 | "drbg.js": "1.0.1",
690 | "elliptic": "6.4.1",
691 | "nan": "2.10.0",
692 | "safe-buffer": "5.1.1"
693 | }
694 | },
695 | "web3": {
696 | "version": "git+https://github.com/ethereum/web3.js.git#9f95015a67212f3eaa77401dfcbc42e0518bfb4d"
697 | }
698 | }
699 | },
700 | "is-hex-prefixed": {
701 | "version": "1.0.0",
702 | "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz",
703 | "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ="
704 | },
705 | "js-crc": {
706 | "version": "0.2.0",
707 | "resolved": "https://registry.npm.taobao.org/js-crc/download/js-crc-0.2.0.tgz",
708 | "integrity": "sha1-9yxcdhgXa/91zIEqHO2949jraDk="
709 | },
710 | "jsonschema": {
711 | "version": "1.2.2",
712 | "resolved": "https://registry.npm.taobao.org/jsonschema/download/jsonschema-1.2.2.tgz",
713 | "integrity": "sha1-g6ucY9Zb9NWW+R2BGV54dy9kUrw="
714 | },
715 | "keccak": {
716 | "version": "1.4.0",
717 | "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz",
718 | "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==",
719 | "requires": {
720 | "bindings": "1.3.0",
721 | "inherits": "2.0.3",
722 | "nan": "2.10.0",
723 | "safe-buffer": "5.1.1"
724 | }
725 | },
726 | "keythereum": {
727 | "version": "1.0.4",
728 | "resolved": "https://registry.npmjs.org/keythereum/-/keythereum-1.0.4.tgz",
729 | "integrity": "sha512-c3gWM0nQ6x5TKAzTOA1yIqn73S8sP9+lR7mc7QS6t509g7C0/CukykxGA6+B+aXI6BIrlSwVh5muPv/I1lD9LA==",
730 | "requires": {
731 | "crypto-browserify": "3.12.0",
732 | "keccak": "1.4.0",
733 | "scrypt": "6.0.3",
734 | "secp256k1": "3.5.0",
735 | "sjcl": "1.0.6",
736 | "uuid": "3.0.0"
737 | },
738 | "dependencies": {
739 | "secp256k1": {
740 | "version": "3.5.0",
741 | "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.5.0.tgz",
742 | "integrity": "sha512-e5QIJl8W7Y4tT6LHffVcZAxJjvpgE5Owawv6/XCYPQljE9aP2NFFddQ8OYMKhdLshNu88FfL3qCN3/xYkXGRsA==",
743 | "requires": {
744 | "bindings": "1.3.0",
745 | "bip66": "1.1.5",
746 | "bn.js": "4.11.8",
747 | "create-hash": "1.2.0",
748 | "drbg.js": "1.0.1",
749 | "elliptic": "6.4.1",
750 | "nan": "2.10.0",
751 | "safe-buffer": "5.1.1"
752 | }
753 | },
754 | "uuid": {
755 | "version": "3.0.0",
756 | "resolved": "http://registry.npmjs.org/uuid/-/uuid-3.0.0.tgz",
757 | "integrity": "sha1-Zyj8BFnEUNeWqZwxg3VpvfZy1yg="
758 | }
759 | }
760 | },
761 | "lodash": {
762 | "version": "4.17.11",
763 | "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz",
764 | "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40="
765 | },
766 | "long": {
767 | "version": "4.0.0",
768 | "resolved": "https://registry.npm.taobao.org/long/download/long-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flong%2Fdownload%2Flong-4.0.0.tgz",
769 | "integrity": "sha1-mntxz7fTYaGU6lVSQckvdGjVvyg="
770 | },
771 | "md5.js": {
772 | "version": "1.3.5",
773 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
774 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
775 | "requires": {
776 | "hash-base": "3.0.4",
777 | "inherits": "2.0.3",
778 | "safe-buffer": "5.1.2"
779 | },
780 | "dependencies": {
781 | "safe-buffer": {
782 | "version": "5.1.2",
783 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
784 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
785 | }
786 | }
787 | },
788 | "merkle-lib": {
789 | "version": "2.0.10",
790 | "resolved": "https://registry.npmjs.org/merkle-lib/-/merkle-lib-2.0.10.tgz",
791 | "integrity": "sha1-grjbrnXieneFOItz+ddyXQ9vMyY="
792 | },
793 | "miller-rabin": {
794 | "version": "4.0.1",
795 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
796 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
797 | "requires": {
798 | "bn.js": "4.11.8",
799 | "brorand": "1.1.0"
800 | }
801 | },
802 | "minimalistic-assert": {
803 | "version": "1.0.1",
804 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
805 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
806 | },
807 | "minimalistic-crypto-utils": {
808 | "version": "1.0.1",
809 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
810 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
811 | },
812 | "ms": {
813 | "version": "2.1.1",
814 | "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz",
815 | "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo="
816 | },
817 | "nan": {
818 | "version": "2.10.0",
819 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
820 | "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA=="
821 | },
822 | "object-assign": {
823 | "version": "4.1.1",
824 | "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz",
825 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
826 | },
827 | "old": {
828 | "version": "0.2.0",
829 | "resolved": "https://registry.npm.taobao.org/old/download/old-0.2.0.tgz",
830 | "integrity": "sha1-rnWp8zuufLP+BjEombeuWnO6JO8=",
831 | "requires": {
832 | "object-assign": "4.1.1"
833 | }
834 | },
835 | "parse-asn1": {
836 | "version": "5.1.1",
837 | "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
838 | "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
839 | "requires": {
840 | "asn1.js": "4.10.1",
841 | "browserify-aes": "1.2.0",
842 | "create-hash": "1.2.0",
843 | "evp_bytestokey": "1.0.3",
844 | "pbkdf2": "3.0.17"
845 | }
846 | },
847 | "pbkdf2": {
848 | "version": "3.0.17",
849 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
850 | "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
851 | "requires": {
852 | "create-hash": "1.2.0",
853 | "create-hmac": "1.1.7",
854 | "ripemd160": "2.0.2",
855 | "safe-buffer": "5.1.1",
856 | "sha.js": "2.4.11"
857 | }
858 | },
859 | "protobufjs": {
860 | "version": "6.8.8",
861 | "resolved": "https://registry.npm.taobao.org/protobufjs/download/protobufjs-6.8.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprotobufjs%2Fdownload%2Fprotobufjs-6.8.8.tgz",
862 | "integrity": "sha1-yLTxKC/XqQ5vWxCe0RyEr4KQjnw=",
863 | "requires": {
864 | "@protobufjs/aspromise": "1.1.2",
865 | "@protobufjs/base64": "1.1.2",
866 | "@protobufjs/codegen": "2.0.4",
867 | "@protobufjs/eventemitter": "1.1.0",
868 | "@protobufjs/fetch": "1.1.0",
869 | "@protobufjs/float": "1.0.2",
870 | "@protobufjs/inquire": "1.1.0",
871 | "@protobufjs/path": "1.1.2",
872 | "@protobufjs/pool": "1.1.0",
873 | "@protobufjs/utf8": "1.1.0",
874 | "@types/long": "4.0.0",
875 | "@types/node": "10.14.8",
876 | "long": "4.0.0"
877 | }
878 | },
879 | "public-encrypt": {
880 | "version": "4.0.3",
881 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
882 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
883 | "requires": {
884 | "bn.js": "4.11.8",
885 | "browserify-rsa": "4.0.1",
886 | "create-hash": "1.2.0",
887 | "parse-asn1": "5.1.1",
888 | "randombytes": "2.0.6",
889 | "safe-buffer": "5.1.2"
890 | },
891 | "dependencies": {
892 | "safe-buffer": {
893 | "version": "5.1.2",
894 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
895 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
896 | }
897 | }
898 | },
899 | "pushdata-bitcoin": {
900 | "version": "1.0.1",
901 | "resolved": "http://registry.npmjs.org/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz",
902 | "integrity": "sha1-FZMdPNlnreUiBvUjqnMxrvfUOvc=",
903 | "requires": {
904 | "bitcoin-ops": "1.4.1"
905 | }
906 | },
907 | "randombytes": {
908 | "version": "2.0.6",
909 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
910 | "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
911 | "requires": {
912 | "safe-buffer": "5.1.1"
913 | }
914 | },
915 | "randomfill": {
916 | "version": "1.0.4",
917 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
918 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
919 | "requires": {
920 | "randombytes": "2.0.6",
921 | "safe-buffer": "5.1.1"
922 | }
923 | },
924 | "regenerator-runtime": {
925 | "version": "0.11.1",
926 | "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.11.1.tgz",
927 | "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
928 | },
929 | "ripemd160": {
930 | "version": "2.0.2",
931 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
932 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
933 | "requires": {
934 | "hash-base": "3.0.4",
935 | "inherits": "2.0.3"
936 | }
937 | },
938 | "ripple-address-codec": {
939 | "version": "2.0.1",
940 | "resolved": "https://registry.npm.taobao.org/ripple-address-codec/download/ripple-address-codec-2.0.1.tgz",
941 | "integrity": "sha1-7dvjp5YNLgLFwcdPuan6DS37ZXE=",
942 | "requires": {
943 | "hash.js": "1.1.5",
944 | "x-address-codec": "0.7.2"
945 | }
946 | },
947 | "ripple-binary-codec": {
948 | "version": "0.2.1",
949 | "resolved": "https://registry.npm.taobao.org/ripple-binary-codec/download/ripple-binary-codec-0.2.1.tgz",
950 | "integrity": "sha1-80PadYpk86zrQWS4qY+8FTsIjBQ=",
951 | "requires": {
952 | "babel-runtime": "6.26.0",
953 | "bn.js": "4.11.8",
954 | "create-hash": "1.2.0",
955 | "decimal.js": "5.0.8",
956 | "inherits": "2.0.3",
957 | "lodash": "4.17.11",
958 | "ripple-address-codec": "2.0.1"
959 | }
960 | },
961 | "ripple-hashes": {
962 | "version": "0.3.2",
963 | "resolved": "https://registry.npm.taobao.org/ripple-hashes/download/ripple-hashes-0.3.2.tgz",
964 | "integrity": "sha1-86w7GDLOxtC6wH6CrMEKCmocyE4=",
965 | "requires": {
966 | "bignumber.js": "4.1.0",
967 | "create-hash": "1.2.0",
968 | "ripple-address-codec": "2.0.1",
969 | "ripple-binary-codec": "0.2.1"
970 | },
971 | "dependencies": {
972 | "bignumber.js": {
973 | "version": "4.1.0",
974 | "resolved": "https://registry.npm.taobao.org/bignumber.js/download/bignumber.js-4.1.0.tgz",
975 | "integrity": "sha1-228UBnwUC9RmJIFaeRbJLZtsJLE="
976 | }
977 | }
978 | },
979 | "ripple-keypairs": {
980 | "version": "0.10.2",
981 | "resolved": "https://registry.npm.taobao.org/ripple-keypairs/download/ripple-keypairs-0.10.2.tgz",
982 | "integrity": "sha1-s6HR4vyoWhHFIksqfm2lBsGXINA=",
983 | "requires": {
984 | "babel-runtime": "5.8.38",
985 | "bn.js": "3.3.0",
986 | "brorand": "1.1.0",
987 | "elliptic": "5.2.1",
988 | "hash.js": "1.1.5",
989 | "ripple-address-codec": "2.0.1"
990 | },
991 | "dependencies": {
992 | "babel-runtime": {
993 | "version": "5.8.38",
994 | "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-5.8.38.tgz",
995 | "integrity": "sha1-HAsC62MxL18If/IEUIJ7QlydTBk=",
996 | "requires": {
997 | "core-js": "1.2.7"
998 | }
999 | },
1000 | "bn.js": {
1001 | "version": "3.3.0",
1002 | "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-3.3.0.tgz",
1003 | "integrity": "sha1-ETjld4if3Je72rUYRPIZDfwK49c="
1004 | },
1005 | "core-js": {
1006 | "version": "1.2.7",
1007 | "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-1.2.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-1.2.7.tgz",
1008 | "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
1009 | },
1010 | "elliptic": {
1011 | "version": "5.2.1",
1012 | "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-5.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-5.2.1.tgz",
1013 | "integrity": "sha1-+ilLZWPG3bybo9yFlGh66ECFjxA=",
1014 | "requires": {
1015 | "bn.js": "3.3.0",
1016 | "brorand": "1.1.0",
1017 | "hash.js": "1.1.5",
1018 | "inherits": "2.0.3"
1019 | }
1020 | }
1021 | }
1022 | },
1023 | "ripple-lib": {
1024 | "version": "1.2.3",
1025 | "resolved": "https://registry.npm.taobao.org/ripple-lib/download/ripple-lib-1.2.3.tgz",
1026 | "integrity": "sha1-Dz7jAfvGbl/NIEXyXtfxgVQbNGo=",
1027 | "requires": {
1028 | "@types/lodash": "4.14.133",
1029 | "@types/ws": "3.2.1",
1030 | "bignumber.js": "4.1.0",
1031 | "https-proxy-agent": "2.2.1",
1032 | "jsonschema": "1.2.2",
1033 | "lodash": "4.17.11",
1034 | "ripple-address-codec": "2.0.1",
1035 | "ripple-binary-codec": "0.2.1",
1036 | "ripple-hashes": "0.3.2",
1037 | "ripple-keypairs": "0.10.2",
1038 | "ripple-lib-transactionparser": "0.7.1",
1039 | "ws": "3.3.3"
1040 | },
1041 | "dependencies": {
1042 | "bignumber.js": {
1043 | "version": "4.1.0",
1044 | "resolved": "https://registry.npm.taobao.org/bignumber.js/download/bignumber.js-4.1.0.tgz",
1045 | "integrity": "sha1-228UBnwUC9RmJIFaeRbJLZtsJLE="
1046 | }
1047 | }
1048 | },
1049 | "ripple-lib-transactionparser": {
1050 | "version": "0.7.1",
1051 | "resolved": "https://registry.npm.taobao.org/ripple-lib-transactionparser/download/ripple-lib-transactionparser-0.7.1.tgz",
1052 | "integrity": "sha1-Xs7LHgPWXQVgU0P0udu3bRCJFFs=",
1053 | "requires": {
1054 | "bignumber.js": "4.1.0",
1055 | "lodash": "4.17.11"
1056 | },
1057 | "dependencies": {
1058 | "bignumber.js": {
1059 | "version": "4.1.0",
1060 | "resolved": "https://registry.npm.taobao.org/bignumber.js/download/bignumber.js-4.1.0.tgz",
1061 | "integrity": "sha1-228UBnwUC9RmJIFaeRbJLZtsJLE="
1062 | }
1063 | }
1064 | },
1065 | "rlp": {
1066 | "version": "2.1.0",
1067 | "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.1.0.tgz",
1068 | "integrity": "sha512-93U7IKH5j7nmXFVg19MeNBGzQW5uXW1pmCuKY8veeKIhYTE32C2d0mOegfiIAfXcHOKJjjPlJisn8iHDF5AezA==",
1069 | "requires": {
1070 | "safe-buffer": "5.1.1"
1071 | }
1072 | },
1073 | "safe-buffer": {
1074 | "version": "5.1.1",
1075 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
1076 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
1077 | },
1078 | "scrypt": {
1079 | "version": "6.0.3",
1080 | "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz",
1081 | "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=",
1082 | "requires": {
1083 | "nan": "2.10.0"
1084 | }
1085 | },
1086 | "scrypt.js": {
1087 | "version": "0.2.0",
1088 | "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.2.0.tgz",
1089 | "integrity": "sha1-r40UZbcemZARC+38WTuUeeA6ito=",
1090 | "requires": {
1091 | "scrypt": "6.0.3",
1092 | "scryptsy": "1.2.1"
1093 | }
1094 | },
1095 | "scryptsy": {
1096 | "version": "1.2.1",
1097 | "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz",
1098 | "integrity": "sha1-oyJfpLJST4AnAHYeKFW987LZIWM=",
1099 | "requires": {
1100 | "pbkdf2": "3.0.17"
1101 | }
1102 | },
1103 | "secp256k1": {
1104 | "version": "3.5.2",
1105 | "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.5.2.tgz",
1106 | "integrity": "sha512-iin3kojdybY6NArd+UFsoTuapOF7bnJNf2UbcWXaY3z+E1sJDipl60vtzB5hbO/uquBu7z0fd4VC4Irp+xoFVQ==",
1107 | "requires": {
1108 | "bindings": "1.3.0",
1109 | "bip66": "1.1.5",
1110 | "bn.js": "4.11.8",
1111 | "create-hash": "1.2.0",
1112 | "drbg.js": "1.0.1",
1113 | "elliptic": "6.4.1",
1114 | "nan": "2.10.0",
1115 | "safe-buffer": "5.1.1"
1116 | }
1117 | },
1118 | "sha.js": {
1119 | "version": "2.4.11",
1120 | "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
1121 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
1122 | "requires": {
1123 | "inherits": "2.0.3",
1124 | "safe-buffer": "5.1.1"
1125 | }
1126 | },
1127 | "sha256": {
1128 | "version": "0.2.0",
1129 | "resolved": "https://registry.npm.taobao.org/sha256/download/sha256-0.2.0.tgz",
1130 | "integrity": "sha1-c6C0GNqrcDW/+G6EkeNjQS/CqwU=",
1131 | "requires": {
1132 | "convert-hex": "0.1.0",
1133 | "convert-string": "0.1.0"
1134 | }
1135 | },
1136 | "sjcl": {
1137 | "version": "1.0.6",
1138 | "resolved": "http://registry.npmjs.org/sjcl/-/sjcl-1.0.6.tgz",
1139 | "integrity": "sha1-ZBVGKmPMDUIVxJuuydP6DBtTUg8="
1140 | },
1141 | "strip-hex-prefix": {
1142 | "version": "1.0.0",
1143 | "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz",
1144 | "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=",
1145 | "requires": {
1146 | "is-hex-prefixed": "1.0.0"
1147 | }
1148 | },
1149 | "text-encoding": {
1150 | "version": "0.7.0",
1151 | "resolved": "https://registry.npm.taobao.org/text-encoding/download/text-encoding-0.7.0.tgz",
1152 | "integrity": "sha1-+JXoNuRZkGJAhmAXmOqY6PNu5kM="
1153 | },
1154 | "tiny-secp256k1": {
1155 | "version": "1.0.1",
1156 | "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.0.1.tgz",
1157 | "integrity": "sha512-Wz2kMPWtCI5XBftFeF3bUL8uz2+VlasniKwOkRPjvL7h1QVd9rbhrve/HWUu747kJKzVf1XHonzcdM4Ut8fvww==",
1158 | "requires": {
1159 | "bindings": "1.3.0",
1160 | "bn.js": "4.11.8",
1161 | "create-hmac": "1.1.7",
1162 | "elliptic": "6.4.1",
1163 | "nan": "2.10.0"
1164 | }
1165 | },
1166 | "tweetnacl": {
1167 | "version": "1.0.1",
1168 | "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-1.0.1.tgz",
1169 | "integrity": "sha1-JZTULac80Da9DSpUaD3TWmtVyhc="
1170 | },
1171 | "typeforce": {
1172 | "version": "1.16.0",
1173 | "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.16.0.tgz",
1174 | "integrity": "sha512-V60F7OHPH7vPlgIU73vYyeebKxWjQqCTlge+MvKlVn09PIhCOi/ZotowYdgREHB5S1dyHOr906ui6NheYXjlVQ=="
1175 | },
1176 | "ultron": {
1177 | "version": "1.1.1",
1178 | "resolved": "https://registry.npm.taobao.org/ultron/download/ultron-1.1.1.tgz",
1179 | "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw="
1180 | },
1181 | "unorm": {
1182 | "version": "1.4.1",
1183 | "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz",
1184 | "integrity": "sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA="
1185 | },
1186 | "utf8": {
1187 | "version": "2.1.2",
1188 | "resolved": "http://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz",
1189 | "integrity": "sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY="
1190 | },
1191 | "uuid": {
1192 | "version": "3.3.2",
1193 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
1194 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
1195 | },
1196 | "varuint-bitcoin": {
1197 | "version": "1.1.0",
1198 | "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.0.tgz",
1199 | "integrity": "sha512-jCEPG+COU/1Rp84neKTyDJQr478/hAfVp5xxYn09QEH0yBjbmPeMfuuQIrp+BUD83hybtYZKhr5elV3bvdV1bA==",
1200 | "requires": {
1201 | "safe-buffer": "5.1.1"
1202 | }
1203 | },
1204 | "web3": {
1205 | "version": "0.20.7",
1206 | "resolved": "https://registry.npmjs.org/web3/-/web3-0.20.7.tgz",
1207 | "integrity": "sha512-VU6/DSUX93d1fCzBz7WP/SGCQizO1rKZi4Px9j/3yRyfssHyFcZamMw2/sj4E8TlfMXONvZLoforR8B4bRoyTQ==",
1208 | "requires": {
1209 | "bignumber.js": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934",
1210 | "crypto-js": "3.1.8",
1211 | "utf8": "2.1.2",
1212 | "xhr2-cookies": "1.1.0",
1213 | "xmlhttprequest": "1.8.0"
1214 | }
1215 | },
1216 | "wif": {
1217 | "version": "2.0.6",
1218 | "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz",
1219 | "integrity": "sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=",
1220 | "requires": {
1221 | "bs58check": "2.1.2"
1222 | }
1223 | },
1224 | "ws": {
1225 | "version": "3.3.3",
1226 | "resolved": "https://registry.npm.taobao.org/ws/download/ws-3.3.3.tgz",
1227 | "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=",
1228 | "requires": {
1229 | "async-limiter": "1.0.0",
1230 | "safe-buffer": "5.1.1",
1231 | "ultron": "1.1.1"
1232 | }
1233 | },
1234 | "x-address-codec": {
1235 | "version": "0.7.2",
1236 | "resolved": "https://registry.npm.taobao.org/x-address-codec/download/x-address-codec-0.7.2.tgz",
1237 | "integrity": "sha1-Ki97sAJ4UgvRNzOnlZoFRD1oAuA=",
1238 | "requires": {
1239 | "base-x": "1.1.0"
1240 | },
1241 | "dependencies": {
1242 | "base-x": {
1243 | "version": "1.1.0",
1244 | "resolved": "https://registry.npm.taobao.org/base-x/download/base-x-1.1.0.tgz",
1245 | "integrity": "sha1-QtPXF0dPnqAiB/bRqh9CaRPut6w="
1246 | }
1247 | }
1248 | },
1249 | "xhr2-cookies": {
1250 | "version": "1.1.0",
1251 | "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz",
1252 | "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=",
1253 | "requires": {
1254 | "cookiejar": "2.1.2"
1255 | }
1256 | },
1257 | "xmlhttprequest": {
1258 | "version": "1.8.0",
1259 | "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
1260 | "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
1261 | }
1262 | }
1263 | }
1264 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "blockchain-wallet-sdk",
3 | "version": "1.0.2",
4 | "description": "This is a blockchain wallet sdk which is for famous mainchain to create wallet",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/guoshijiang/blockchain-wallet-sdk.git"
12 | },
13 | "keywords": [
14 | "blockchain",
15 | "wallet",
16 | "sdk"
17 | ],
18 | "author": "Shijiang Guo",
19 | "license": "ISC",
20 | "bugs": {
21 | "url": "https://github.com/guoshijiang/blockchain-wallet-sdk/issues"
22 | },
23 | "homepage": "https://github.com/guoshijiang/blockchain-wallet-sdk#readme",
24 | "dependencies": {
25 | "bip32": "^1.0.2",
26 | "bip39": "^2.5.0",
27 | "bitcoinjs-lib": "^3.3.2",
28 | "ethereumjs-tx": "^1.3.4",
29 | "ethereumjs-util": "^5.2.0",
30 | "ethereumjs-wallet": "^0.6.2",
31 | "irisnet-crypto": "git+https://github.com/irisnet/irisnet-crypto.git",
32 | "keythereum": "^1.0.4",
33 | "ripple-lib": "^1.2.3",
34 | "web3": "^0.20.6",
35 | "xmlhttprequest": "^1.8.0"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/sdk/address/generateAddress.js:
--------------------------------------------------------------------------------
1 | const bitcoin = require('bitcoinjs-lib');
2 | const baddress = require('bitcoinjs-lib/src/address');
3 | const bcrypto = require('bitcoinjs-lib/src/crypto');
4 | const NETWORKS = require('bitcoinjs-lib/src/networks');
5 | const hdkey = require('ethereumjs-wallet/hdkey');
6 | const util = require('ethereumjs-util');
7 | const bip32 = require( 'bip32');
8 | const constant = require('../constant');
9 | const irisnet = require('irisnet-crypto');
10 | const RippleAPI = require('ripple-lib').RippleAPI;
11 | const api = new RippleAPI();
12 |
13 | var libGenerateAddress = {};
14 |
15 | /**
16 | * @param childKey
17 | * @returns {*}
18 | */
19 | function getAddress (childKey) {
20 | if(!childKey){
21 | console.log("input param childKey is null");
22 | return constant.childKeyErr;
23 | }
24 | return baddress.toBase58Check(bcrypto.hash160(childKey.publicKey), NETWORKS.bitcoin.pubKeyHash)
25 | }
26 |
27 | /**
28 | * @param seed
29 | * @param receiveOrChange
30 | * @param number
31 | * @returns {*}
32 | */
33 | function bitcoinAddress(seed, receiveOrChange, number) {
34 | if(!seed && !receiveOrChange && !number) {
35 | console.log("input params seed, receiveOrChange and number is null");
36 | return constant.paramsErr;
37 | }
38 | var rootMasterKey = bip32.fromSeed(seed);
39 | if(receiveOrChange === '0') {
40 | var childKey = rootMasterKey.derivePath("m/44'/0'/0'/0/" + number + "")
41 | } else if(receiveOrChange === '1') {
42 | var childKey = rootMasterKey.derivePath("m/44'/0'/0'/1/" + number + "")
43 | } else {
44 | console.log("input receiveOrChange param is error, you must input 0 or 1");
45 | return constant.inputParamErr;
46 | }
47 | var btcData = {coinMark:"BTC", privateKey:childKey.toWIF().toString('hex'), address:getAddress(childKey)};
48 | return btcData;
49 | }
50 |
51 | /**
52 | * @param seed
53 | * @param number
54 | * @returns {*}
55 | */
56 | function ethreumAddress(seed, number) {
57 | if(!seed && !number) {
58 | console.log("input param seed and number is null")
59 | return constant.paramsErr;
60 | }
61 | var rootMasterKey = hdkey.fromMasterSeed(seed);
62 | var childKey = rootMasterKey.derivePath("m/44'/60'/0'/0/" + number + "");
63 | var address = util.pubToAddress(childKey._hdkey._publicKey, true).toString('hex');
64 | var privateKey = childKey._hdkey._privateKey.toString('hex');
65 | var ethData = {coinMark:"ETH", privateKey:privateKey, address:"0x" + address}
66 | return ethData;
67 | }
68 |
69 | /**
70 | * @param seed
71 | * @param bipNumber
72 | * @param number
73 | * @param coinMark
74 | * @returns {*}
75 | */
76 | function erc20Address(seed, bipNumber, number, coinMark) {
77 | if(!seed && !number) {
78 | console.log("input param seed, coinNumber and number is null")
79 | return constant.paramsErr;
80 | }
81 | var rootMasterKey = hdkey.fromMasterSeed(seed);
82 | var childKey = rootMasterKey.derivePath("m/44'/" + bipNumber + "'/0'/0/" + number + "");
83 | var address = util.pubToAddress(childKey._hdkey._publicKey, true).toString('hex');
84 | var privateKey = childKey._hdkey._privateKey.toString('hex');
85 | var erc20Data = {coinMark:coinMark, privateKey:privateKey, address:"0x" + address}
86 | return erc20Data;
87 | }
88 |
89 | function cosmosAddress(coinType){
90 | if(!coinType) {
91 | console.log("input param seed and number is null")
92 | return constant.paramsErr;
93 | }
94 | let crypto = irisnet.getCrypto(coinType);
95 | let account = crypto.create('english');
96 | return account;
97 | }
98 |
99 | function xrpAddress (coinType) {
100 | if(!coinType) {
101 | console.log("input param seed and number is null")
102 | return constant.paramsErr;
103 | }
104 | const RipAccount = api.generateAddress();
105 | let address = RipAccount.address;
106 | let secret = RipAccount.secret;
107 | let xrpData = {address:address, secret:secret};
108 | return xrpData
109 | }
110 |
111 | /**
112 | * @param addressParmas
113 | * @returns {*}
114 | */
115 | libGenerateAddress.blockchainAddress = function (addressParmas) {
116 | if(!addressParmas) {
117 | console.log("input param addressParmas is null")
118 | return constant.paramsErr;
119 | }
120 | switch (addressParmas.coinType) {
121 | case 'BTC':
122 | return bitcoinAddress(addressParmas.seed, addressParmas.receiveOrChange, addressParmas.number);
123 | case 'ETH':
124 | return ethreumAddress(addressParmas.seed, addressParmas.number);
125 | case 'ERC20':
126 | return erc20Address(addressParmas.seed, addressParmas.bipNumber, addressParmas.number, addressParmas.coinMark);
127 | case 'OMNI':
128 | return bitcoinAddress(addressParmas.seed, addressParmas.receiveOrChange, addressParmas.number);
129 | case 'COSMOS':
130 | return cosmosAddress('cosmos');
131 | case 'IRIS':
132 | return cosmosAddress('iris');
133 | case 'XRP':
134 | return xrpAddress('xrp');
135 | default:
136 | console.log("unknown type");
137 | return constant.unknownType;
138 | }
139 | };
140 |
141 | /**
142 | * @param ERC20AddressParam
143 | * @returns {*}
144 | */
145 | libGenerateAddress.multiERC20AddressGenerate = function(ERC20AddressParam) {
146 | if(!ERC20AddressParam) {
147 | console.log("input param ERC20AddressParam is null");
148 | return constant.paramsErr;
149 | }
150 | var outData = [];
151 | for(var i = 0; i < ERC20AddressParam.erc20.length; i++) {
152 | var e20Address = erc20Address(ERC20AddressParam.seed, ERC20AddressParam.erc20[i].bipNumber, ERC20AddressParam.erc20[i].number, ERC20AddressParam.erc20[i].coinMark);
153 | outData = outData.concat(e20Address);
154 | }
155 | return outData;
156 | };
157 |
158 | module.exports = libGenerateAddress;
159 |
--------------------------------------------------------------------------------
/sdk/constant.js:
--------------------------------------------------------------------------------
1 | const libConstVar = {};
2 |
3 | libConstVar.paramsErr = {code:1000, message:"input params is null"};
4 | libConstVar.noWord = {code:1001, message:"don't support this case"};
5 | libConstVar.noSupport = {code:1002, message:"Temporarily does not support the situation you want"}
6 | libConstVar.createDkErr = {code:1003, message:"create dk error"};
7 | libConstVar.createKeystoreErr = {code:1004, message:"create keystore fail"};
8 | libConstVar.inputParamErr = {code:1005, message:"input receiveOrChange param is error, you must input 0 or 1"};
9 | libConstVar.childKeyErr = {code:1006, message:"input param childKey is null"};
10 | libConstVar.unknownType = {code:1007, message:"unknown type,please input once again"};
11 | libConstVar.serializedErr = {code:1008, message:"Serialized transaction fail"};
12 | libConstVar.signMarkErr = {code:1009, message:"signParams.signMark param is null, please check it"};
13 | libConstVar.LessValue = {code:1010, message:"Total less than fee"};
14 | libConstVar.PriviteKeyNull = {code:1011, message:"privateKey is null"};
15 | libConstVar.BitCoinSignFail = {code:1012, message:"bitcoin sign fail, please check it"};
16 | libConstVar.EthSignFail = {code:1013, message:"eth sign fail, please check it"};
17 | libConstVar.Erc20SignFail = {code:1014, message:"erc20 sign fail, please check it"};
18 | libConstVar.OmniSignFail = {code:1015, message:"omni sign fail, please check it"};
19 |
20 | module.exports = libConstVar;
21 |
--------------------------------------------------------------------------------
/sdk/keystore/generateKeystore.js:
--------------------------------------------------------------------------------
1 | const keythereum = require("keythereum");
2 | const fs = require('fs');
3 | const constant = require('../constant');
4 |
5 |
6 | var libKeystore = {};
7 |
8 | /**
9 | * @param password
10 | * @returns {*}
11 | */
12 | libKeystore.createKeystore = function (password) {
13 | if(!password) {
14 | return constant.paramsErr;
15 | }
16 | var keystore = '';
17 | var params = { keyBytes: 32, ivBytes: 16 };
18 | var dk = keythereum.create(params);
19 | var kdf = "pbkdf2";
20 | var options = {
21 | kdf: "pbkdf2",
22 | cipher: "aes-128-ctr",
23 | kdfparams: {
24 | c: 262144,
25 | dklen: 32,
26 | prf: "hmac-sha256"
27 | }
28 | };
29 | var dk = keythereum.create(params)
30 | if (!dk) {
31 | return constant.createDkErr;
32 | }
33 | keystore = keythereum.dump(password, dk.privateKey, dk.salt, dk.iv, options);
34 | if(!keystore) {
35 | return constant.createKeystoreErr;
36 | }
37 | return keystore;
38 | }
39 |
40 | /**
41 | * @param keyObject
42 | * @param path if your path is null, export keystore by default way; if path has value, export keystore by your way
43 | * @returns {{code: number, message: string}}
44 | */
45 | libKeystore.exportKeystore = function(keyObject, path) {
46 | if(!keyObject) {
47 | return constant.paramsErr;
48 | }
49 | if(!path){
50 | keythereum.exportToFile(keyObject);
51 | } else {
52 | var json = JSON.stringify(keyObject);
53 | var outfile = keythereum.generateKeystoreFilename(keyObject.address);
54 | var outpath = path + "/" + outfile;
55 | console.log(outpath);
56 | fs.writeFile(outpath, json, function (err) {
57 | if (err) {
58 | return err;
59 | } else{
60 | outpath;
61 | }
62 | });
63 | }
64 | }
65 |
66 | /**
67 | * @param address
68 | * @param datadir
69 | * @returns {*}
70 | */
71 | libKeystore.importKeystore = function(address, datadir) {
72 | if(!address && !datadir) {
73 | return constant.paramsErr;
74 | }
75 | return keythereum.importFromFile(address, datadir);
76 | }
77 |
78 | /**
79 | * @param keyObject
80 | * @param password
81 | * @returns {*}
82 | */
83 | libKeystore.exportPrivateKey = function(keyObject, password) {
84 | if(!keyObject && !password) {
85 | return constant.paramsErr;
86 | }
87 | return keythereum.recover(password, keyObject);
88 | }
89 |
90 | /**
91 | * @param privateKey
92 | * @param password
93 | * @returns {*}
94 | */
95 | libKeystore.importPrivateKey = function(privateKey ,password) {
96 | if(!password && !privateKey) {
97 | return constant.paramsErr;
98 | }
99 | var keystore = '';
100 | var params = { keyBytes: 32, ivBytes: 16 };
101 | var dk = keythereum.create(params);
102 | var kdf = "pbkdf2";
103 | var options = {
104 | kdf: "pbkdf2",
105 | cipher: "aes-128-ctr",
106 | kdfparams: {
107 | c: 262144,
108 | dklen: 32,
109 | prf: "hmac-sha256"
110 | }
111 | };
112 | var dk = keythereum.create(params)
113 | if (!dk) {
114 | return constant.createDkErr;
115 | }
116 | keystore = keythereum.dump(password, privateKey, dk.salt, dk.iv, options);
117 | if(!keystore) {
118 | return constant.createKeystoreErr;
119 | }
120 | return keystore;
121 | }
122 |
123 | module.exports = libKeystore;
124 |
125 |
126 |
--------------------------------------------------------------------------------
/sdk/mnemonic/generateWord.js:
--------------------------------------------------------------------------------
1 | const bip39 = require('bip39');
2 | const bip32 = require( 'bip32');
3 | const constant = require('../constant');
4 |
5 | var libGenerateHelpWord = {};
6 |
7 | /**
8 | * @param number: the number of mnemonic
9 | * @param language: mnemonic language
10 | */
11 | libGenerateHelpWord.createHelpWord = function (number, language) {
12 | if(!number && !language) {
13 | console.log("params number and language is null");
14 | return constant.paramsErr;
15 | }
16 | switch (language) {
17 | case 'chinese_simplified':
18 | if(number === 12) {
19 | return bip39.generateMnemonic(128, null, bip39.wordlists.chinese_simplified);
20 | } else if(number === 15) {
21 | return bip39.generateMnemonic(160, null, bip39.wordlists.chinese_simplified);
22 | } else if(number === 18) {
23 | return bip39.generateMnemonic(192, null, bip39.wordlists.chinese_simplified);
24 | } else if(number === 21) {
25 | return bip39.generateMnemonic(224, null, bip39.wordlists.chinese_simplified);
26 | } else if(number === 24) {
27 | return bip39.generateMnemonic(256, null, bip39.wordlists.chinese_simplified);
28 | } else {
29 | console.log("don't support this case")
30 | return constant.noWord;
31 | }
32 | case 'chinese_traditional':
33 | if(number === 12) {
34 | return bip39.generateMnemonic(128, null, bip39.wordlists.chinese_traditional);
35 | } else if(number === 15) {
36 | return bip39.generateMnemonic(160, null, bip39.wordlists.chinese_traditional);
37 | } else if(number === 18) {
38 | return bip39.generateMnemonic(192, null, bip39.wordlists.chinese_traditional);
39 | } else if(number === 21) {
40 | return bip39.generateMnemonic(224, null, bip39.wordlists.chinese_traditional);
41 | } else if(number === 24) {
42 | return bip39.generateMnemonic(256, null, bip39.wordlists.chinese_traditional);
43 | } else {
44 | console.log("don't support this case")
45 | return constant.noWord;
46 | }
47 | case 'english':
48 | if(number === 12) {
49 | return bip39.generateMnemonic(128, null, bip39.wordlists.english);
50 | } else if(number === 15) {
51 | return bip39.generateMnemonic(160, null, bip39.wordlists.english);
52 | } else if(number === 18) {
53 | return bip39.generateMnemonic(192, null, bip39.wordlists.english);
54 | } else if(number === 21) {
55 | return bip39.generateMnemonic(224, null, bip39.wordlists.english);
56 | } else if(number === 24) {
57 | return bip39.generateMnemonic(256, null, bip39.wordlists.english);
58 | } else {
59 | console.log("don't support this case")
60 | return constant.noWord;
61 | }
62 | case 'french':
63 | if(number === 12) {
64 | return bip39.generateMnemonic(128, null, bip39.wordlists.french);
65 | } else if(number === 15) {
66 | return bip39.generateMnemonic(160, null, bip39.wordlists.french);
67 | } else if(number === 18) {
68 | return bip39.generateMnemonic(192, null, bip39.wordlists.french);
69 | } else if(number === 21) {
70 | return bip39.generateMnemonic(224, null, bip39.wordlists.french);
71 | } else if(number === 24) {
72 | return bip39.generateMnemonic(256, null, bip39.wordlists.french);
73 | } else {
74 | console.log("don't support this case")
75 | return constant.noWord;
76 | }
77 | case 'italian':
78 | if(number === 12) {
79 | return bip39.generateMnemonic(128, null, bip39.wordlists.italian);
80 | } else if(number === 15) {
81 | return bip39.generateMnemonic(160, null, bip39.wordlists.italian);
82 | } else if(number === 18) {
83 | return bip39.generateMnemonic(192, null, bip39.wordlists.italian);
84 | } else if(number === 21) {
85 | return bip39.generateMnemonic(224, null, bip39.wordlists.italian);
86 | } else if(number === 24) {
87 | return bip39.generateMnemonic(256, null, bip39.wordlists.italian);
88 | } else {
89 | console.log("don't support this case")
90 | return constant.noWord;
91 | }
92 | case 'japanese':
93 | if(number === 12) {
94 | return bip39.generateMnemonic(128, null, bip39.wordlists.japanese);
95 | } else if(number === 15) {
96 | return bip39.generateMnemonic(160, null, bip39.wordlists.japanese);
97 | } else if(number === 18) {
98 | return bip39.generateMnemonic(192, null, bip39.wordlists.japanese);
99 | } else if(number === 21) {
100 | return bip39.generateMnemonic(224, null, bip39.wordlists.japanese);
101 | } else if(number === 24) {
102 | return bip39.generateMnemonic(256, null, bip39.wordlists.japanese);
103 | } else {
104 | console.log("don't support this case")
105 | return constant.noWord;
106 | }
107 | case 'korean':
108 | if(number === 12) {
109 | return bip39.generateMnemonic(128, null, bip39.wordlists.korean);
110 | } else if(number === 15) {
111 | return bip39.generateMnemonic(160, null, bip39.wordlists.korean);
112 | } else if(number === 18) {
113 | return bip39.generateMnemonic(192, null, bip39.wordlists.korean);
114 | } else if(number === 21) {
115 | return bip39.generateMnemonic(224, null, bip39.wordlists.korean);
116 | } else if(number === 24) {
117 | return bip39.generateMnemonic(256, null, bip39.wordlists.korean);
118 | } else {
119 | console.log("don't support this case")
120 | return constant.noWord;
121 | }
122 | case 'spanish':
123 | if(number === 12) {
124 | return bip39.generateMnemonic(128, null, bip39.wordlists.spanish);
125 | } else if(number === 15) {
126 | return bip39.generateMnemonic(160, null, bip39.wordlists.spanish);
127 | } else if(number === 18) {
128 | return bip39.generateMnemonic(192, null, bip39.wordlists.spanish);
129 | } else if(number === 21) {
130 | return bip39.generateMnemonic(224, null, bip39.wordlists.spanish);
131 | } else if(number === 24) {
132 | return bip39.generateMnemonic(256, null, bip39.wordlists.spanish);
133 | } else {
134 | console.log("don't support this case")
135 | return constant.noWord;
136 | }
137 | default:
138 | console.log("Temporarily does not support the situation you want");
139 | return constant.noSupport;
140 | }
141 | };
142 |
143 | libGenerateHelpWord.wordsToEntropy = function(mnemonic, language) {
144 | if(!mnemonic && !language) {
145 | console.log("param mnemonic and language is null");
146 | return constant.paramsErr;;
147 | }
148 | switch (language) {
149 | case 'chinese_simplified':
150 | return bip39.mnemonicToEntropy(mnemonic, bip39.wordlists.chinese_simplified);
151 | case 'chinese_traditional':
152 | return bip39.mnemonicToEntropy(mnemonic, bip39.wordlists.chinese_traditional);
153 | case 'english':
154 | return bip39.mnemonicToEntropy(mnemonic, bip39.wordlists.english);
155 | case 'french':
156 | return bip39.mnemonicToEntropy(mnemonic, bip39.wordlists.french);
157 | case 'italian':
158 | return bip39.mnemonicToEntropy(mnemonic, bip39.wordlists.italian);
159 | case 'japanese':
160 | return bip39.mnemonicToEntropy(mnemonic, bip39.wordlists.japanese);
161 | case 'korean':
162 | return bip39.mnemonicToEntropy(mnemonic, bip39.wordlists.korean);
163 | case 'spanish':
164 | return bip39.mnemonicToEntropy(mnemonic, bip39.wordlists.spanish);
165 | default:
166 | console.log("Temporarily does not support the situation you want");
167 | return constant.noSupport;
168 | }
169 | };
170 |
171 | libGenerateHelpWord.entropyToWords = function(encrytMnemonic, language) {
172 | if(!encrytMnemonic && !language) {
173 | console.log("param encrytMnemonic and language is null");
174 | return constant.paramsErr;;
175 | }
176 | switch (language) {
177 | case 'chinese_simplified':
178 | return bip39.entropyToMnemonic(encrytMnemonic, bip39.wordlists.chinese_simplified);
179 | case 'chinese_traditional':
180 | return bip39.entropyToMnemonic(encrytMnemonic, bip39.wordlists.chinese_traditional);
181 | case 'english':
182 | return bip39.entropyToMnemonic(encrytMnemonic, bip39.wordlists.english);
183 | case 'french':
184 | return bip39.entropyToMnemonic(encrytMnemonic, bip39.wordlists.french);
185 | case 'italian':
186 | return bip39.entropyToMnemonic(encrytMnemonic, bip39.wordlists.italian);
187 | case 'japanese':
188 | return bip39.entropyToMnemonic(encrytMnemonic, bip39.wordlists.japanese);
189 | case 'korean':
190 | return bip39.entropyToMnemonic(encrytMnemonic, bip39.wordlists.korean);
191 | case 'spanish':
192 | return bip39.entropyToMnemonic(encrytMnemonic, bip39.wordlists.spanish);
193 | default:
194 | console.log("Temporarily does not support the situation you want");
195 | return constant.noSupport;
196 | }
197 | };
198 |
199 | libGenerateHelpWord.mnemonicToSeed = function(mnemonic, password){
200 | if(!mnemonic ) {
201 | console.log("param mnemonic and password is null");
202 | return constant.paramsErr;;
203 | }
204 | return bip39.mnemonicToSeed(mnemonic, password)
205 | };
206 |
207 | libGenerateHelpWord.mnemonicToSeedHex = function(mnemonic, password){
208 | if(!mnemonic && !password) {
209 | console.log("param mnemonic and password is null");
210 | return constant.paramsErr;;
211 | }
212 | return bip39.mnemonicToSeedHex(mnemonic, password);
213 | };
214 |
215 | libGenerateHelpWord.validateMnemonic = function (mnemonic, language) {
216 | if(!mnemonic && !language) {
217 | console.log("param mnemonic and language is null");
218 | return constant.paramsErr;;
219 | }
220 | switch (language) {
221 | case 'chinese_simplified':
222 | return bip39.validateMnemonic(mnemonic, bip39.wordlists.chinese_simplified);
223 | case 'chinese_traditional':
224 | return bip39.validateMnemonic(mnemonic, bip39.wordlists.chinese_traditional);
225 | case 'english':
226 | return bip39.validateMnemonic(mnemonic, bip39.wordlists.english);
227 | case 'french':
228 | return bip39.validateMnemonic(mnemonic, bip39.wordlists.french);
229 | case 'italian':
230 | return bip39.validateMnemonic(mnemonic, bip39.wordlists.italian);
231 | case 'japanese':
232 | return bip39.validateMnemonic(mnemonic, bip39.wordlists.japanese);
233 | case 'korean':
234 | return bip39.validateMnemonic(mnemonic, bip39.wordlists.korean);
235 | case 'spanish':
236 | return bip39.validateMnemonic(mnemonic, bip39.wordlists.spanish);
237 | default:
238 | console.log("Temporarily does not support the situation you want");
239 | return constant.noSupport;
240 | }
241 | };
242 |
243 | module.exports = libGenerateHelpWord;
244 |
245 |
246 |
--------------------------------------------------------------------------------
/sdk/sign/bitcoinSign.js:
--------------------------------------------------------------------------------
1 | const bitcoin = require('bitcoinjs-lib');
2 | const constant = require('../constant');
3 |
4 | var ligBitcoinSign = {};
5 |
6 | /**
7 | * @param privateKey
8 | * @param amount
9 | * @param utxo
10 | * @param sendFee
11 | * @param toAddress
12 | * @param changeAddress
13 | * @returns {*}
14 | */
15 | ligBitcoinSign.btcSingleSign = function (privateKey, amount, utxo, sendFee, toAddress, changeAddress) {
16 | if(!privateKey && !amount && !utxo && !sendFee && !toAddress && !changeAddress ) {
17 | console.log("one of privateKey, amount, utxo, sendFee, toAddress and changeAddress is null, please give a valid param");
18 | return constant.paramsErr;
19 | } else {
20 | var set = bitcoin.ECPair.fromWIF(privateKey);
21 | var txb = new bitcoin.TransactionBuilder();
22 | var sendAmount = parseFloat(amount);
23 | var fee = parseFloat(sendFee);
24 | sendAmount += fee;
25 | txb.setVersion(1);
26 | var totalMoney = 0;
27 | for(var i=0; i