From 46920293af95ee2af39c1dfdccfb8d9747c17617 Mon Sep 17 00:00:00 2001 From: SDargarh Date: Wed, 15 Nov 2023 15:40:03 +0530 Subject: [PATCH 1/4] Added support for new chain Tezos --- CHANGELOG.md | 7 +- package-lock.json | 250 +++++++++++++++++++++++++++++++++++++++++--- package.json | 3 +- src/chains/index.js | 4 +- src/lib/vault.js | 10 +- src/utils/helper.js | 15 +-- 6 files changed, 255 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 543ba0e..c37eac4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -572,4 +572,9 @@ ### 2.0.0 (2023-11-02) * Removed workflow for nightly release branch -* Merging nightly release 1.31.0 into main branch \ No newline at end of file +* Merging nightly release 1.31.0 into main branch + +### 2.1.0 (2023-11-15) + +* Added support for new chain Tezos +* Update createWalletLabels function to generate labels as per the chain parameters, eg. `tezos` or `bitcoin`. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1b29dd1..1fac9e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@getsafle/safle-vault", - "version": "2.0.0", + "version": "2.1.0", "lockfileVersion": 3, "requires": true, "packages": { @@ -19,6 +19,7 @@ "@getsafle/vault-mantle-controller": "^1.0.0", "@getsafle/vault-optimism-controller": "^1.0.7", "@getsafle/vault-polygon-controller": "^1.2.7", + "@getsafle/vault-tezos-controller": "^1.0.2", "@getsafle/vault-velas-controller": "^1.3.0", "bip39": "^3.0.4", "crypto-js": "^4.1.1", @@ -1662,6 +1663,38 @@ "safe-buffer": "^5.1.1" } }, + "node_modules/@getsafle/vault-tezos-controller": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@getsafle/vault-tezos-controller/-/vault-tezos-controller-1.0.2.tgz", + "integrity": "sha512-SKTAT+0ELrLFWiPv3XJ9Wl/fA6vMb7RUcW5CThMg1p2Iqxs8UVf9Jg7IExlMRgONqEeorXubxBxQhfbFOVXHag==", + "dependencies": { + "base58-js": "^1.0.0", + "bip39": "^2.6.0", + "conseiljs": "5.1.0", + "conseiljs-softsigner": "^5.0.4-1", + "crypto-js": "^4.0.0", + "ed25519-hd-key": "^1.2.0", + "hdkey": "^2.0.1", + "loglevel": "^1.7.1", + "node-fetch": "^2.6.2", + "obs-store": "^4.0.3" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@getsafle/vault-tezos-controller/node_modules/bip39": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.6.0.tgz", + "integrity": "sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg==", + "dependencies": { + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1", + "safe-buffer": "^5.0.1", + "unorm": "^1.3.3" + } + }, "node_modules/@getsafle/vault-velas-controller": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@getsafle/vault-velas-controller/-/vault-velas-controller-1.3.0.tgz", @@ -2045,6 +2078,17 @@ "node": ">=12.0.0" } }, + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@sinclair/typebox": { "version": "0.25.24", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", @@ -2502,6 +2546,14 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/base58-js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/base58-js/-/base58-js-1.0.5.tgz", + "integrity": "sha512-LkkAPP8Zu+c0SVNRTRVDyMfKVORThX+rCViget00xdgLRrKkClCTz1T7cIrpr69ShwV5XJuuoZvMvJ43yURwkA==", + "engines": { + "node": ">= 8" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -2539,6 +2591,14 @@ "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", @@ -2614,21 +2674,13 @@ "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" }, "node_modules/bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" + "@noble/hashes": "^1.2.0" } }, - "node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - }, "node_modules/bip66": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", @@ -3203,11 +3255,84 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/conseiljs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/conseiljs/-/conseiljs-5.1.0.tgz", + "integrity": "sha512-8RnWAQNqk+0EKaCIcFQ8E0p45vVYLUiC0CUH3jf6rEEvxgZH7ZZFMDfExJa8lHmT4XXvRok324fWesasyI8nvw==", + "dependencies": { + "big-integer": "1.6.51", + "bignumber.js": "9.0.2", + "blakejs": "1.1.0", + "bs58check": "2.1.2", + "jsonpath-plus": "6.0.1", + "moo": "0.5.0", + "nearley": "2.19.1" + }, + "engines": { + "node": ">=14.18.2", + "npm": ">=6.14.15" + } + }, + "node_modules/conseiljs-softsigner": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/conseiljs-softsigner/-/conseiljs-softsigner-5.0.6.tgz", + "integrity": "sha512-OqGIrvlE0+yYKlr8Pj+g793ZKQ+t+A301RfgQz5fXD7wfmxjcaXZRYXq+FO2eU1QUX4yLezfuirvx9BL96Xb6Q==", + "dependencies": { + "bip39": "3.1.0", + "conseiljs": "5.2.5", + "ed25519-hd-key": "1.3.0", + "libsodium-wrappers-sumo": "0.7.11", + "secp256k1": "4.0.3" + }, + "engines": { + "node": ">=16.19.1", + "npm": ">=8.19.4" + } + }, + "node_modules/conseiljs-softsigner/node_modules/bignumber.js": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", + "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==", + "engines": { + "node": "*" + } + }, + "node_modules/conseiljs-softsigner/node_modules/conseiljs": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/conseiljs/-/conseiljs-5.2.5.tgz", + "integrity": "sha512-dlZJ12o0YZL3lerG7+AtPR4AF69zbvoQXCp63IJTfsbmI2v45fxLOo2G6eYHeqedEqi8p8e+yCoA5OMbqfxXQQ==", + "dependencies": { + "big-integer": "1.6.51", + "bignumber.js": "9.0.2", + "blakejs": "1.1.0", + "bs58check": "2.1.2", + "jsonpath-plus": "6.0.1", + "moo": "0.5.0", + "nearley": "2.19.1" + }, + "engines": { + "node": ">=14.18.2", + "npm": ">=6.14.15" + } + }, + "node_modules/conseiljs/node_modules/bignumber.js": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", + "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==", + "engines": { + "node": "*" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -3469,6 +3594,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" + }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", @@ -3505,6 +3635,15 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/ed25519-hd-key": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.3.0.tgz", + "integrity": "sha512-IWwAyiiuJQhgu3L8NaHb68eJxTu2pgCwxIBdgpLJdKpYZM46+AXePSVTr7fkNKaUOfOL4IrjEUaQvyVRIDP7fg==", + "dependencies": { + "create-hmac": "1.1.7", + "tweetnacl": "1.0.3" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -5971,6 +6110,14 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonpath-plus": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz", + "integrity": "sha512-EvGovdvau6FyLexFH2OeXfIITlgIbgZoAZe3usiySeaIDm5QS+A10DKNpaPBBqqRSZr2HN6HVNXxtwUAr2apEw==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -6027,6 +6174,19 @@ "node": ">=6" } }, + "node_modules/libsodium-sumo": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.13.tgz", + "integrity": "sha512-zTGdLu4b9zSNLfovImpBCbdAA4xkpkZbMnSQjP8HShyOutnGjRHmSOKlsylh1okao6QhLiz7nG98EGn+04cZjQ==" + }, + "node_modules/libsodium-wrappers-sumo": { + "version": "0.7.11", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.11.tgz", + "integrity": "sha512-DGypHOmJbB1nZn89KIfGOAkDgfv5N6SBGC3Qvmy/On0P0WD1JQvNRS/e3UL3aFF+xC0m+MYz5M+MnRnK2HMrKQ==", + "dependencies": { + "libsodium-sumo": "^0.7.11" + } + }, "node_modules/limiter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/limiter/-/limiter-2.1.0.tgz", @@ -6293,6 +6453,11 @@ "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" }, + "node_modules/moo": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.0.tgz", + "integrity": "sha512-AMv6iqhTEd5vT/cQlH6cammKS5ekyHhyqTRKi5zKMWl1RTyFnQ3ohPSBNSm8ySe2wlxSKwDonr9D5ZT44mdO3g==" + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -6352,6 +6517,32 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, + "node_modules/nearley": { + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.19.1.tgz", + "integrity": "sha512-xq47GIUGXxU9vQg7g/y1o1xuKnkO7ev4nRWqftmQrLkfnE/FjRqDaGOUakM8XHPn/6pW3bGjU2wgoJyId90rqg==", + "dependencies": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" + }, + "bin": { + "nearley-railroad": "bin/nearley-railroad.js", + "nearley-test": "bin/nearley-test.js", + "nearley-unparse": "bin/nearley-unparse.js", + "nearleyc": "bin/nearleyc.js" + } + }, + "node_modules/nearley/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -6893,6 +7084,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" + }, + "node_modules/randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dependencies": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -7080,6 +7288,14 @@ "node": ">=8" } }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, "node_modules/ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -7147,12 +7363,12 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "node_modules/secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", "hasInstallScript": true, "dependencies": { - "elliptic": "^6.5.2", + "elliptic": "^6.5.4", "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" }, diff --git a/package.json b/package.json index c68a096..4687672 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@getsafle/safle-vault", - "version": "2.0.0", + "version": "2.1.0", "description": "Safle Vault is a non-custodial, flexible and highly available crypto wallet which can be used to access dapps, send/receive crypto and store identity. Vault SDK is used to manage the vault and provide methods to generate vault, add new accounts, update the state and also enable the user to perform several vault related operations.", "main": "src/index.js", "scripts": { @@ -54,6 +54,7 @@ "@getsafle/vault-mantle-controller": "^1.0.0", "@getsafle/vault-optimism-controller": "^1.0.7", "@getsafle/vault-polygon-controller": "^1.2.7", + "@getsafle/vault-tezos-controller": "^1.0.2", "@getsafle/vault-velas-controller": "^1.3.0", "bip39": "^3.0.4", "crypto-js": "^4.1.1", diff --git a/src/chains/index.js b/src/chains/index.js index 63bca35..042475c 100644 --- a/src/chains/index.js +++ b/src/chains/index.js @@ -6,9 +6,10 @@ const optimism = require('@getsafle/vault-optimism-controller'); const arbitrum = require('@getsafle/vault-arbitrum-controller'); const mantle = require('@getsafle/vault-mantle-controller'); const velas = require('@getsafle/vault-velas-controller'); +const tezos = require('@getsafle/vault-tezos-controller'); const evmChains = { 'ethereum': 'ETH', 'bsc': 'BSC', 'polygon': 'MATIC', 'optimism': 'OP' ,'arbitrum': 'ARB', 'mantle': 'MNT', 'velas': 'VLX' }; -const nonEvmChains = { 'bitcoin': 'BTC' }; +const nonEvmChains = { 'bitcoin': 'BTC', 'tezos': 'XTZ' }; module.exports = { ethereum, @@ -19,6 +20,7 @@ module.exports = { arbitrum, mantle, velas, + tezos, evmChains, nonEvmChains, } \ No newline at end of file diff --git a/src/lib/vault.js b/src/lib/vault.js index b6a0af3..1082b7d 100644 --- a/src/lib/vault.js +++ b/src/lib/vault.js @@ -1,6 +1,7 @@ const CryptoJS = require('crypto-js'); const { KeyringController } = require('@getsafle/vault-eth-controller'); const BitcoinKeyringController= require('@getsafle/vault-bitcoin-controller').KeyringController ; +const TezosKeyringController= require('@getsafle/vault-tezos-controller').KeyringController ; const bip39 = require('bip39'); const helper = require('../utils/helper'); @@ -51,8 +52,11 @@ class Vault extends Keyring { } initializeSupportedChainKeyringController(mnemonic) { - const keyringController = new BitcoinKeyringController({mnemonic:mnemonic}); - this["bitcoin"] = keyringController; + const bitcoinKeyringController = new BitcoinKeyringController({mnemonic:mnemonic}); + this["bitcoin"] = bitcoinKeyringController; + + const tezosKeyringController = new TezosKeyringController({mnemonic:mnemonic}); + this["tezos"] = tezosKeyringController; } async generateMnemonic(entropy) { @@ -146,7 +150,7 @@ class Vault extends Keyring { const keyringInstance = await helper.getCoinInstance(chainData.toLowerCase(), mnemonic); - const accArray = await helper.getAccountsFromLogs(keyringInstance, vaultState, recoverMechanism, logs); + const accArray = await helper.getAccountsFromLogs(keyringInstance, vaultState, recoverMechanism, logs, chainData); const numberOfAcc = accArray.length; rawVault[chainData.toLowerCase()] = { public: accArray, numberOfAcc } diff --git a/src/utils/helper.js b/src/utils/helper.js index 920a07b..bbaebc2 100644 --- a/src/utils/helper.js +++ b/src/utils/helper.js @@ -82,13 +82,13 @@ async function removeEmptyAccounts(indexAddress, keyringInstance, vaultState, un return accountsArray; } -async function getAccountsFromLogs(keyringInstance, vaultState, recoverMechanism, logs) { +async function getAccountsFromLogs(keyringInstance, vaultState, recoverMechanism, logs, chainData) { //if mech = transaction - generate one acc for bitcoin let accountsArray = []; let {address} = await keyringInstance.addAccount(); - const label = this.createWalletLabels('bitcoin', 1); + const label = this.createWalletLabels(chainData, 1); accountsArray.push({ address: address, isDeleted: false, isImported: false, label, isExported: false }); let labelCounter = 2; const chains = Object.keys(Chains.nonEvmChains); @@ -98,7 +98,7 @@ async function getAccountsFromLogs(keyringInstance, vaultState, recoverMechanis for(let i=0; i < logs.length; i++){ if (logs[i].action === 'add-account' && (chains.includes(logs[i].chain))){ if (logs[i].address.toLowerCase() === address.toLowerCase()) { - const label = this.createWalletLabels('bitcoin', labelCounter); + const label = this.createWalletLabels(chainData, labelCounter); accountsArray.push({ address: address.toLowerCase(), isDeleted: false, isImported: false, label, isExported: false }); labelCounter ++; address = (await keyringInstance.addAccount()).address; @@ -255,16 +255,9 @@ function createWalletLabels(labelObj = 'all', walletIndex = 1) { if (labelObj === 'all') { chains.forEach(chain => labels[chain] = `${chain.charAt(0).toUpperCase() + chain.substr(1).toLowerCase()} Wallet ${walletIndex}` ); - } - else if (labelObj === 'bitcoin') { - labels = `${labelObj.charAt(0).toUpperCase() + labelObj.substr(1).toLowerCase()} Wallet ${walletIndex}`; } else { - chains.forEach(chain => { - if (labels[chain] !== undefined) { - labels[chain] = `${chain.charAt(0).toUpperCase() + chain.substr(1).toLowerCase()} Wallet ${walletIndex}`; - } - }) + labels = `${labelObj.charAt(0).toUpperCase() + labelObj.substr(1).toLowerCase()} Wallet ${walletIndex}`; } return labels; From 632649fae798f7b3c3d778c298c2f0f82d64566c Mon Sep 17 00:00:00 2001 From: SDargarh Date: Wed, 15 Nov 2023 16:06:04 +0530 Subject: [PATCH 2/4] Updated test wrt tezos chain addition --- CHANGELOG.md | 3 ++- src/lib/test/keyring.test.js | 1 + src/lib/test/vault.test.js | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c37eac4..9f21035 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -577,4 +577,5 @@ ### 2.1.0 (2023-11-15) * Added support for new chain Tezos -* Update createWalletLabels function to generate labels as per the chain parameters, eg. `tezos` or `bitcoin`. \ No newline at end of file +* Update createWalletLabels function to generate labels as per the chain parameters, eg. `tezos` or `bitcoin`. +* Updated test wrt tezos chain addition \ No newline at end of file diff --git a/src/lib/test/keyring.test.js b/src/lib/test/keyring.test.js index 686be62..b500043 100644 --- a/src/lib/test/keyring.test.js +++ b/src/lib/test/keyring.test.js @@ -292,6 +292,7 @@ describe('getActiveChains',()=>{ expect({ response: [ { chain: 'bitcoin', symbol: 'BTC' }, + { chain: 'tezos', symbol: 'XTZ'}, { chain: 'ethereum', symbol: 'ETH' }, { chain: 'bsc', symbol: 'BSC' }, { chain: 'polygon', symbol: 'MATIC' }, diff --git a/src/lib/test/vault.test.js b/src/lib/test/vault.test.js index 874cb54..e115abf 100644 --- a/src/lib/test/vault.test.js +++ b/src/lib/test/vault.test.js @@ -79,7 +79,7 @@ describe('getSupportedChains' , ()=>{ let result = await new Vault({}).getSupportedChains() expect({ evmChains: { ethereum: 'ETH', bsc: 'BSC', polygon: 'MATIC', optimism: 'OP', arbitrum: 'ARB', mantle: 'MNT', velas: 'VLX' }, - nonEvmChains: { bitcoin: 'BTC' } + nonEvmChains: { bitcoin: 'BTC', tezos: 'XTZ' } }).toMatchObject(result.response) }) From 578ef182ed0c0ba63a42144610639d50e396918a Mon Sep 17 00:00:00 2001 From: SDargarh Date: Wed, 15 Nov 2023 16:19:10 +0530 Subject: [PATCH 3/4] updated recover vault for tezos --- src/lib/vault.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/vault.js b/src/lib/vault.js index 1082b7d..2ce087e 100644 --- a/src/lib/vault.js +++ b/src/lib/vault.js @@ -146,7 +146,6 @@ class Vault extends Keyring { //generate other chain's keyring instance and get accounts from logs let obj = {} for ( let chainData of nonEvmChainList) { - const { response: mnemonic } = await this.exportMnemonic(pin); const keyringInstance = await helper.getCoinInstance(chainData.toLowerCase(), mnemonic); From 39a825abb5b4230ca51afaf1b137f3188c4e5e03 Mon Sep 17 00:00:00 2001 From: SDargarh Date: Fri, 17 Nov 2023 02:46:29 +0530 Subject: [PATCH 4/4] updated mnemonic assignement in restoring state --- src/lib/keyring.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/keyring.js b/src/lib/keyring.js index 2d5e9d8..a488185 100644 --- a/src/lib/keyring.js +++ b/src/lib/keyring.js @@ -429,10 +429,12 @@ class Keyring { const filteredChains = activeChains.response.filter(activeChains => !evmChainList.includes(activeChains.chain)); + const mnemonic = await helper.cryptography(decryptedVault.eth.private.encryptedMnemonic, pin, 'decryption'); + //generate other chain's keyring instance and add accounts to it as per decrypted vault if (filteredChains.length > 0) { filteredChains.forEach(async (chainData) => { - const { response: mnemonic } = await this.exportMnemonic(pin); + const keyringInstance = await helper.getCoinInstance(chainData.chain.toLowerCase(), mnemonic); @@ -449,8 +451,6 @@ class Keyring { this.logs.getState().logs.push({ timestamp: Date.now(), action: 'restore-keyring', vault: this.vault }); - const mnemonic = await helper.cryptography(decryptedVault.eth.private.encryptedMnemonic, pin, 'decryption'); - // clearing vault state and adding new accounts as per decrypted vault const restoredVault = await this.keyringInstance.createNewVaultAndRestore(JSON.stringify(encryptionKey), mnemonic);