diff --git a/.github/workflows/npm-yarn.yml b/.github/workflows/npm-yarn.yml index d2c4877..cdb5798 100644 --- a/.github/workflows/npm-yarn.yml +++ b/.github/workflows/npm-yarn.yml @@ -2,9 +2,13 @@ name: NodeJS with Yarn on: push: - branches: [ master ] + branches: + - "master" + - "develop" pull_request: - branches: [ master ] + branches: + - "master" + - "develop" jobs: build: @@ -12,13 +16,13 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [16.x] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} @@ -29,7 +33,7 @@ jobs: - name: Build run: yarn run build - name: Archive production artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: dist path: | diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ce28ab8 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +# MetriMask Changelog + +### 1.0.7 > 1.0.8 + +- Upgrade metrixjs-wallet, this contains upgrades to the bitcoinjs-lib and various other fixes in preperation for migration to PSBT and the removal of transactionb uilder. +- Fix big with transaction list failing to display when a new tx is submitted +- Fix issues with the detection of transactions originating from this wallet +- Switch build tasks to Node 16.x \ No newline at end of file diff --git a/package.json b/package.json index f5cae5b..072a95e 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ }, "dependencies": { "@material-ui/icons": "4.0.1", + "@types/bitcoinjs-lib": "4.0.1", "@types/deep-equal": "^1.0.1", "@types/history": "^5.0.0", "@types/lodash": "^4.14.185", @@ -69,7 +70,7 @@ "classnames": "^2.2.6", "deep-equal": "^2.0.5", "follow-redirects": "1.14.8", - "metrixjs-wallet": "^0.3.1", + "metrixjs-wallet": "https://github.com/TheLindaProjectInc/metrixjs-wallet.git#bitcoinlib-js-update", "mobx": "^5.15.7", "mobx-react": "^5.2.3", "mobx-react-router": "^4.1.0", diff --git a/src/background/controllers/rpcController.ts b/src/background/controllers/rpcController.ts index 1432664..2ea222b 100644 --- a/src/background/controllers/rpcController.ts +++ b/src/background/controllers/rpcController.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-argument */ /* eslint-disable @typescript-eslint/require-await */ -const bitcoin = require('bitcoinjs-lib'); +import * as bitcoin from 'bitcoinjs-lib'; import { WalletRPCProvider, Insight, Wallet } from 'metrixjs-wallet'; import metrixMessage from 'bitcoinjs-message'; import assert from 'assert'; diff --git a/src/background/controllers/transactionController.ts b/src/background/controllers/transactionController.ts index 2051604..18cce12 100644 --- a/src/background/controllers/transactionController.ts +++ b/src/background/controllers/transactionController.ts @@ -113,7 +113,9 @@ export default class TransactionController extends IController { const [mine, other] = partition(outs, ({ addresses }) => includes(addresses, wallet.address)); const amount = sumBy(sender ? other : mine, ({ value }) => parseFloat(value)); let direction: string; - if (sender && mine[0].addresses[0] !== wallet.address) { + if (sender && !mine[0]) { + direction = 'out'; + } else if (sender && mine[0].addresses[0] !== wallet.address) { direction = 'out'; } else { direction = 'in'; diff --git a/static/manifest.json b/static/manifest.json index 6464805..49fd78d 100644 --- a/static/manifest.json +++ b/static/manifest.json @@ -1,7 +1,7 @@ { "name": "MetriMask", "description": "Metrix light wallet and transaction signing client.", - "version": "1.0.7", + "version": "1.0.8", "manifest_version": 2, "icons": { "16": "images/logo-main-16.png", diff --git a/yarn.lock b/yarn.lock index 4446e06..b02920c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,6 +37,14 @@ dependencies: regenerator-runtime "^0.13.4" +"@bitcoinerlab/secp256k1@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@bitcoinerlab/secp256k1/-/secp256k1-1.1.1.tgz#938305c30505b67b15f3de53627bc9d8b4cc7680" + integrity sha512-uhjW51WfVLpnHN7+G0saDcM/k9IqcyTbZ+bDgLF3AX8V/a3KXSE9vn7UPBrcdU72tp0J4YPR7BHp2m7MLAZ/1Q== + dependencies: + "@noble/hashes" "^1.1.5" + "@noble/secp256k1" "^1.7.1" + "@ceoimon/typed-css-modules@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@ceoimon/typed-css-modules/-/typed-css-modules-0.1.0.tgz#d097771e440c7d72f7dca524bd49bddd6b859ce9" @@ -239,6 +247,16 @@ prop-types "^15.7.2" react-is "^16.8.0 || ^17.0.0" +"@noble/hashes@^1.1.5", "@noble/hashes@^1.2.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@noble/secp256k1@^1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -276,6 +294,11 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@scure/base@^1.1.1": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.7.tgz#fe973311a5c6267846aa131bc72e96c5d40d2b30" + integrity sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g== + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -288,6 +311,13 @@ dependencies: "@types/node" "*" +"@types/bitcoinjs-lib@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/bitcoinjs-lib/-/bitcoinjs-lib-4.0.1.tgz#9bfeb09c4051860c82c1b4e907498c5232c36917" + integrity sha512-w5BzfIwdHhEB1kM4pA9AGYbS1U+YfA3DUJ6CSUZgp2DySECA47FH9J1wngLjkQaJHnRfLXoSAZrlPTK8rKmwXw== + dependencies: + "@types/node" "*" + "@types/chrome@^0.0.196": version "0.0.196" resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.196.tgz#9e0196a6fcdf3c0e12cfbcd086cd28feb5206990" @@ -382,6 +412,11 @@ version "10.3.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.3.4.tgz#c74e8aec19e555df44609b8057311052a2c84d9e" +"@types/node@10.12.18": + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + "@types/node@11.11.6": version "11.11.6" resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" @@ -1088,7 +1123,7 @@ big.js@^6.1.1: resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.1.1.tgz#63b35b19dc9775c94991ee5db7694880655d5537" integrity sha512-1vObw81a8ylZO5ePrtMay0n018TcftpTA5HFKDaSuiUDBo8biRBtjIobw60OpwuvrGk+FsxKamqN4cnmj/eXdg== -bigi@^1.1.0, bigi@^1.2.0, bigi@^1.4.0: +bigi@^1.1.0, bigi@^1.2.0: version "1.4.2" resolved "https://registry.yarnpkg.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" @@ -1113,6 +1148,11 @@ bindings@^1.3.0, bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +bip174@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" + integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== + bip32@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/bip32/-/bip32-1.0.4.tgz#188ad57a45fb1342c9aabe969d0612c704a987b4" @@ -1125,6 +1165,29 @@ bip32@^1.0.4: typeforce "^1.11.5" wif "^2.0.6" +bip32@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.6.tgz#6a81d9f98c4cd57d05150c60d8f9e75121635134" + integrity sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA== + dependencies: + "@types/node" "10.12.18" + bs58check "^2.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + tiny-secp256k1 "^1.1.3" + typeforce "^1.11.5" + wif "^2.0.6" + +bip32@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-4.0.0.tgz#7fac3c05072188d2d355a4d6596b37188f06aa2f" + integrity sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ== + dependencies: + "@noble/hashes" "^1.2.0" + "@scure/base" "^1.1.1" + typeforce "^1.11.5" + wif "^2.0.6" + bip38@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/bip38/-/bip38-3.1.1.tgz#76506a47c8b60a10a679e85f2620003d9549ec0b" @@ -1182,23 +1245,23 @@ bitcoinjs-lib@4.0.5: varuint-bitcoin "^1.0.4" wif "^2.0.1" -bitcoinjs-lib@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-3.3.2.tgz#780c9c53ecb1222adb463b58bef26386067b609a" - integrity sha512-l5qqvbaK8wwtANPf6oEffykycg4383XgEYdia1rI7/JpGf1jfRWlOUCvx5TiTZS7kyIvY4j/UhIQ2urLsvGkzw== +bitcoinjs-lib@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-5.2.0.tgz#caf8b5efb04274ded1b67e0706960b93afb9d332" + integrity sha512-5DcLxGUDejgNBYcieMIUfjORtUeNWl828VWLHJGVKZCb4zIS1oOySTUr0LGmcqJBQgTBz3bGbRQla4FgrdQEIQ== dependencies: bech32 "^1.1.2" - bigi "^1.4.0" + bip174 "^2.0.1" + bip32 "^2.0.4" bip66 "^1.1.0" - bitcoin-ops "^1.3.0" + bitcoin-ops "^1.4.0" bs58check "^2.0.0" create-hash "^1.1.0" create-hmac "^1.1.3" - ecurve "^1.0.0" merkle-lib "^2.0.10" pushdata-bitcoin "^1.0.1" randombytes "^2.0.1" - safe-buffer "^5.0.1" + tiny-secp256k1 "^1.1.1" typeforce "^1.11.3" varuint-bitcoin "^1.0.4" wif "^2.0.1" @@ -2225,6 +2288,15 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +ecpair@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ecpair/-/ecpair-2.1.0.tgz#673f826b1d80d5eb091b8e2010c6b588e8d2cb45" + integrity sha512-cL/mh3MtJutFOvFc27GPZE2pWL3a3k4YvzUWEOvilnfZVlH3Jwgx/7d6tlD7/75tNk8TG2m+7Kgtz0SI1tWcqw== + dependencies: + randombytes "^2.1.0" + typeforce "^1.18.0" + wif "^2.0.6" + ecurve@^1.0.0: version "1.0.6" resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" @@ -4437,27 +4509,31 @@ merkle-lib@^2.0.10: resolved "https://registry.yarnpkg.com/merkle-lib/-/merkle-lib-2.0.10.tgz#82b8dbae75e27a7785388b73f9d7725d0f6f3326" integrity sha1-grjbrnXieneFOItz+ddyXQ9vMyY= -metrixjs-wallet@^0.3.1: +"metrixjs-wallet@https://github.com/TheLindaProjectInc/metrixjs-wallet.git#bitcoinlib-js-update": version "0.3.1" - resolved "https://registry.yarnpkg.com/metrixjs-wallet/-/metrixjs-wallet-0.3.1.tgz#54a9912d3ac90f6b4c8a1011c12f20c15aedbb14" - integrity sha512-hBALk1fQALEyIFBYF924BwxTQFkUkUQoxU5QCTfXSdF8Ged0FbIlLJPsmk6NRCywM7KmuBUbaBVy7AdD+tuyfQ== + resolved "https://github.com/TheLindaProjectInc/metrixjs-wallet.git#95d64a83c3d0982b84af82110b68070a7378ff48" dependencies: + "@bitcoinerlab/secp256k1" "^1.1.1" "@types/bip38" "^2.0.1" "@types/secp256k1" "^4.0.2" big.js "^6.1.1" bignumber.js "^9.0.1" + bip174 "^2.0.1" + bip32 "^4.0.0" bip38 "^3.1.1" bip39 "^3.0.3" - bitcoinjs-lib "^3.3.1" + bitcoinjs-lib "^5.2.0" bs58check "^2.1.2" buffer "^6.0.3" coinselect "^3.1.11" + ecpair "^2.1.0" elliptic "^6.5.4" fetch-absolute "^1.0.0" hash.js "^1.1.7" node-fetch "2" scryptsy "^2.1.0" secp256k1 "^4.0.2" + tiny-secp256k1 "^2.2.3" micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -6786,7 +6862,7 @@ timers-browserify@^2.0.12: dependencies: setimmediate "^1.0.4" -tiny-secp256k1@^1.0.0: +tiny-secp256k1@^1.0.0, tiny-secp256k1@^1.1.1, tiny-secp256k1@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== @@ -6797,6 +6873,13 @@ tiny-secp256k1@^1.0.0: elliptic "^6.4.0" nan "^2.13.2" +tiny-secp256k1@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-2.2.3.tgz#fe1dde11a64fcee2091157d4b78bcb300feb9b65" + integrity sha512-SGcL07SxcPN2nGKHTCvRMkQLYPSoeFcvArUSCYtjVARiFAWU44cCIqYS0mYAU6nY7XfvwURuTIGo2Omt3ZQr0Q== + dependencies: + uint8array-tools "0.0.7" + tiny-warning@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" @@ -6953,7 +7036,7 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typeforce@^1.11.3, typeforce@^1.11.5: +typeforce@^1.11.3, typeforce@^1.11.5, typeforce@^1.18.0: version "1.18.0" resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== @@ -6985,6 +7068,11 @@ uglifyjs-webpack-plugin@^1.2.7: webpack-sources "^1.1.0" worker-farm "^1.5.2" +uint8array-tools@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/uint8array-tools/-/uint8array-tools-0.0.7.tgz#a7a2bb5d8836eae2fade68c771454e6a438b390d" + integrity sha512-vrrNZJiusLWoFWBqz5Y5KMCgP9W9hnjZHzZiZRT8oNAkq3d5Z5Oe76jAvVVSRh4U8GGR90N2X1dWtrhvx6L8UQ== + unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"