├── .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