diff --git a/Dockerfile b/Dockerfile index 9a5d8f9e90..d6ad6fd0fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -186,9 +186,9 @@ RUN cd /var/bitgo-express && \ #LINK_END #LABEL_START -LABEL created="Thu, 03 Nov 2022 20:16:00 GMT" -LABEL version=9.17.0 -LABEL git_hash=ade017e9a750032ebe84526dc227366c024cb954 +LABEL created="Tue, 29 Nov 2022 23:42:28 GMT" +LABEL version=9.21.0 +LABEL git_hash=2130f0eb28ee3a713f6b14df2c0ceddd63617ac3 #LABEL_END USER node diff --git a/README.md b/README.md index ac33448bab..60e6f8c098 100644 --- a/README.md +++ b/README.md @@ -38,8 +38,7 @@ The BitGoJS SDK use a number of branches to control the development of various p | Branch | Status | NPM | Description | |--------------|----------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------| | `master` | Unstable | N/A | Ongoing development of SDK packages | -| `rel/rc` | Unstable | `rc` | Deployed packages from `master` to `npm` for internal and external testing | -| `rel/latest` | Stable | `latest` | Deployed packages from `rel/rc` to `rel/latest`. This includes Express and is recommended to use `rel/latest` when not using Docker images for Express. | +| `rel/latest` | Stable | `latest` | Deployed packages from `master` to `rel/latest`. This includes Express and is recommended to use `rel/latest` when not using Docker images for Express. | Other tags may be released to npm (e.g. `hotfix`, `dev`, etc...), but are not considered critical to the common path for consumers usage of SDK packages unless otherwise stated. diff --git a/modules/abstract-eth/CHANGELOG.md b/modules/abstract-eth/CHANGELOG.md index e3736ee587..7aca34bc4a 100644 --- a/modules/abstract-eth/CHANGELOG.md +++ b/modules/abstract-eth/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-eth@1.2.5...@bitgo/abstract-eth@1.2.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/abstract-eth + ## [1.2.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-eth@1.2.0...@bitgo/abstract-eth@1.2.5) (2022-11-29) **Note:** Version bump only for package @bitgo/abstract-eth diff --git a/modules/abstract-eth/package.json b/modules/abstract-eth/package.json index 84230e9a47..3335cb6e34 100644 --- a/modules/abstract-eth/package.json +++ b/modules/abstract-eth/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/abstract-eth", - "version": "1.2.5", + "version": "1.2.6", "description": "BitGo SDK coin library for ETH base implementation", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -37,9 +37,9 @@ ] }, "dependencies": { - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "bignumber.js": "^8.0.1" } diff --git a/modules/abstract-utxo/CHANGELOG.md b/modules/abstract-utxo/CHANGELOG.md index f138a91421..6f57ed076b 100644 --- a/modules/abstract-utxo/CHANGELOG.md +++ b/modules/abstract-utxo/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.10.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.9.0...@bitgo/abstract-utxo@1.10.0) (2022-12-01) + +### Features + +- **abstract-utxo:** add valueString to unspents for doge recovery flow ([439f95c](https://github.com/BitGo/BitGoJS/commit/439f95c4e337e33a0812ac28b03e46b52e4a9fde)) + # [1.9.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.4.0...@bitgo/abstract-utxo@1.9.0) (2022-11-29) ### Bug Fixes diff --git a/modules/abstract-utxo/package.json b/modules/abstract-utxo/package.json index 8d09a7d8d3..a8e342c2e3 100644 --- a/modules/abstract-utxo/package.json +++ b/modules/abstract-utxo/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/abstract-utxo", - "version": "1.9.0", + "version": "1.10.0", "description": "BitGo SDK coin library for UTXO base implementation", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -38,8 +38,8 @@ }, "dependencies": { "@bitgo/blockapis": "^1.3.5", - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/unspents": "^0.11.5", "@bitgo/utxo-lib": "^7.0.0", "@types/bluebird": "^3.5.25", diff --git a/modules/abstract-utxo/src/recovery/backupKeyRecovery.ts b/modules/abstract-utxo/src/recovery/backupKeyRecovery.ts index f8a888fd7f..8dd2e735ef 100644 --- a/modules/abstract-utxo/src/recovery/backupKeyRecovery.ts +++ b/modules/abstract-utxo/src/recovery/backupKeyRecovery.ts @@ -16,6 +16,9 @@ const { type ChainCode = utxolib.bitgo.ChainCode; type RootWalletKeys = utxolib.bitgo.RootWalletKeys; type WalletUnspent = utxolib.bitgo.WalletUnspent; +type WalletUnspentJSON = utxolib.bitgo.WalletUnspent & { + valueString: string; +}; type ScriptType2Of3 = utxolib.bitgo.outputScripts.ScriptType2Of3; import { VirtualSizes } from '@bitgo/unspents'; @@ -43,9 +46,9 @@ export interface OfflineVaultTxInfo { inputs: WalletUnspent[]; } -export interface FormattedOfflineVaultTxInfo { +export interface FormattedOfflineVaultTxInfo { txInfo: { - unspents: WalletUnspent[]; + unspents: WalletUnspentJSON[]; }; txHex: string; feeInfo: Record; @@ -63,11 +66,13 @@ function formatForOfflineVault( coinName: string, txInfo: OfflineVaultTxInfo, txHex: string -): FormattedOfflineVaultTxInfo { +): FormattedOfflineVaultTxInfo { return { txHex, txInfo: { - unspents: txInfo.inputs, + unspents: txInfo.inputs.map((input) => { + return { ...input, value: Number(input.value), valueString: input.value.toString() }; + }), }, feeInfo: {}, coin: coinName, @@ -249,7 +254,7 @@ export async function backupKeyRecovery | FormattedOfflineVaultTxInfo> { +): Promise | FormattedOfflineVaultTxInfo> { if (_.isUndefined(params.userKey)) { throw new Error('missing userKey'); } diff --git a/modules/account-lib/CHANGELOG.md b/modules/account-lib/CHANGELOG.md index 773cd114d7..1b60c61af5 100644 --- a/modules/account-lib/CHANGELOG.md +++ b/modules/account-lib/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.1.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/account-lib@4.0.0...@bitgo/account-lib@4.1.0) (2022-12-01) + +### Features + +- **sdk-core:** add keyDerive to ECDSA TSS implementation ([9ff1d89](https://github.com/BitGo/BitGoJS/commit/9ff1d89ba0e42d53640f0fe7b71c53d1a2eb4a10)) + # [4.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/account-lib@2.23.0...@bitgo/account-lib@4.0.0) (2022-11-29) ### Features diff --git a/modules/account-lib/package.json b/modules/account-lib/package.json index de6c9c0107..dd0808b827 100644 --- a/modules/account-lib/package.json +++ b/modules/account-lib/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/account-lib", - "version": "4.0.0", + "version": "4.1.0", "description": "BitGo's account library functions", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -27,27 +27,27 @@ "node": ">=14 <17" }, "dependencies": { - "@bitgo/sdk-coin-algo": "^1.3.5", - "@bitgo/sdk-coin-avaxc": "^2.3.0", - "@bitgo/sdk-coin-avaxp": "^3.3.0", - "@bitgo/sdk-coin-bsc": "^3.0.0", - "@bitgo/sdk-coin-celo": "^1.3.5", - "@bitgo/sdk-coin-cspr": "^1.2.5", - "@bitgo/sdk-coin-dot": "^2.0.0", - "@bitgo/sdk-coin-etc": "^1.2.5", - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-coin-eth2": "^1.2.5", - "@bitgo/sdk-coin-hbar": "^1.3.5", - "@bitgo/sdk-coin-near": "^1.3.5", - "@bitgo/sdk-coin-polygon": "^1.3.5", - "@bitgo/sdk-coin-rbtc": "^1.3.5", - "@bitgo/sdk-coin-sol": "^2.2.5", - "@bitgo/sdk-coin-stx": "^1.4.5", - "@bitgo/sdk-coin-sui": "^1.6.0", - "@bitgo/sdk-coin-trx": "^1.3.0", - "@bitgo/sdk-coin-xtz": "^1.4.5", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-coin-algo": "^1.3.6", + "@bitgo/sdk-coin-avaxc": "^2.3.1", + "@bitgo/sdk-coin-avaxp": "^3.4.0", + "@bitgo/sdk-coin-bsc": "^3.1.0", + "@bitgo/sdk-coin-celo": "^1.3.6", + "@bitgo/sdk-coin-cspr": "^1.2.6", + "@bitgo/sdk-coin-dot": "^2.0.1", + "@bitgo/sdk-coin-etc": "^1.2.6", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-coin-eth2": "^1.2.6", + "@bitgo/sdk-coin-hbar": "^1.3.6", + "@bitgo/sdk-coin-near": "^1.3.6", + "@bitgo/sdk-coin-polygon": "^1.3.6", + "@bitgo/sdk-coin-rbtc": "^1.3.6", + "@bitgo/sdk-coin-sol": "^2.3.0", + "@bitgo/sdk-coin-stx": "^1.4.6", + "@bitgo/sdk-coin-sui": "^1.6.1", + "@bitgo/sdk-coin-trx": "^1.3.1", + "@bitgo/sdk-coin-xtz": "^1.4.6", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "bignumber.js": "^9.0.0", "bs58": "^4.0.1" }, diff --git a/modules/account-lib/test/unit/mpc/tss/ecdsa/ecdsa.ts b/modules/account-lib/test/unit/mpc/tss/ecdsa/ecdsa.ts index 07ab19db31..7d530152df 100644 --- a/modules/account-lib/test/unit/mpc/tss/ecdsa/ecdsa.ts +++ b/modules/account-lib/test/unit/mpc/tss/ecdsa/ecdsa.ts @@ -48,7 +48,25 @@ describe('TSS ECDSA TESTS', function () { const dKeyCombine = MPC.keyCombine(D.pShare, [E.nShares[1], F.nShares[1]]); const eKeyCombine = MPC.keyCombine(E.pShare, [D.nShares[2], F.nShares[2]]); const fKeyCombine = MPC.keyCombine(F.pShare, [D.nShares[3], E.nShares[3]]); - keyShares = [aKeyCombine, bKeyCombine, cKeyCombine, dKeyCombine, eKeyCombine, fKeyCombine]; + + // Shares for derived keys. + const path = 'm/0/1'; + const aKeyDerive = MPC.keyDerive(A.pShare, [B.nShares[1], C.nShares[1]], path); + const gKeyCombine: ECDSA.KeyCombined = { + xShare: aKeyDerive.xShare, + yShares: aKeyCombine.yShares, + }; + const hKeyCombine = MPC.keyCombine(B.pShare, [aKeyDerive.nShares[2], C.nShares[2]]); + keyShares = [ + aKeyCombine, + bKeyCombine, + cKeyCombine, + dKeyCombine, + eKeyCombine, + fKeyCombine, + gKeyCombine, + hKeyCombine, + ]; commonPublicKey = aKeyCombine.xShare.y; pallierMock.reset(); }); @@ -124,7 +142,7 @@ describe('TSS ECDSA TESTS', function () { let config: { signerOne: ECDSA.KeyCombined; signerTwo: ECDSA.KeyCombined; hash?: string; shouldHash?: boolean }[]; before(async () => { - const [A, B, C, D, E, F] = keyShares; + const [A, B, C, D, E, F, G, H] = keyShares; config = [ { signerOne: A, signerTwo: B }, @@ -141,6 +159,9 @@ describe('TSS ECDSA TESTS', function () { // checks with no hashing { signerOne: A, signerTwo: B, shouldHash: false }, + + // Checks with derived subkey + { signerOne: G, signerTwo: H }, ]; }); diff --git a/modules/account-lib/test/unit/mpc/tss/fixtures/ecdsa.ts b/modules/account-lib/test/unit/mpc/tss/fixtures/ecdsa.ts index 94fc015e81..ffe34c6b2c 100644 --- a/modules/account-lib/test/unit/mpc/tss/fixtures/ecdsa.ts +++ b/modules/account-lib/test/unit/mpc/tss/fixtures/ecdsa.ts @@ -117,6 +117,8 @@ export const paillerKeys = [ export const mockPShare = { i: 1, + t: 2, + c: 3, l: 'db9befbfbb99c1166c558de80c2ea4b44a78ef7717caaf6a1b10f9b4d1b82cb7e4fb83d64effed3c1ad7b13dedc3560da7f3603498d363f512cd14f71ad94c09c858d8025c96a1470680a3070be195365dc74bfea1b15fef0ad545838cc10ca29c21c0412988a8cc76633dfb65d97603c32627f21bebb0bc32dbe8361591be06d55f9838b55ee989a660fec51ec26947005cb998278dfdc6b3d0c19ab4e3ee410c91e5d32cb2a4a2d8a5a3261505a87825da2561f411a4594b71178de93dce9aba2fa67b5caeb662e8137d1fa5b8eb475d7e020e6fa9544ab0ad0a06eaa8c8e2865e90a5f17f7c836220c5c093582c27d14510a22b3896cd593fcea11c37f5831a08b54eb159551fb4c04a73d67e4314e5b2296f8e168c1b05f84d9955cfea63f059c2643f45c5ff9397783ee9d509143b0975c89efa71e21177323483f177b94fa4eae320922234a1e66c254c58ecc5d49acabc725560f35c161348625f2457e0887edeb49b98c2bb5738add6bb30773465faebe3765bf429ae795d13a730d4', m: 'd4f8390be4d0dc912e1714c71c70a315189e982ec6697ec112f91184f24de8d23e4118a3e945524a2b6be336c8b05918f3404b93bdfefd3574e8e043c641e30dc445d4c6d0a38ad3a45aa15bc8d37ce76b3a68e821f82d90f0f66416a2236334e3a0132f780005a4608de96e517041f59f25ac31816e860b00dc0a589f26d0c4dbfa5e07b847c5d4a5a405cb3e788810b226ea8befa8aa358211fd241a149f8434c96a082a9ef14adc96b521c05f54eac16afa4e5b329aa299b6fe5c3c73e7e9ac9fed0901f9a14d3cbe36513da375a1ee5654f21f8cf15dd199b468367383c36c9e350bd1082fbfce892eef0ba85163f276a34ba05fb601744b6aadfa24ee6f69ca6576c8510d27f6bd90926c884acb066727598440421c30b7147aad4b8f57f1176b66356393b03e7871ce2daf97f0b348187f38722985d2be4259212a6711f2e7c1a6af401eacf9727c3d8c592371293bbe9d1325c5e8ea9f317d0a182286cbbd60930ab40462bcc94a8e8a3a41a0a8a1c5c5639f653df5285d3eb9095e98', n: 'db9befbfbb99c1166c558de80c2ea4b44a78ef7717caaf6a1b10f9b4d1b82cb7e4fb83d64effed3c1ad7b13dedc3560da7f3603498d363f512cd14f71ad94c09c858d8025c96a1470680a3070be195365dc74bfea1b15fef0ad545838cc10ca29c21c0412988a8cc76633dfb65d97603c32627f21bebb0bc32dbe8361591be06d55f9838b55ee989a660fec51ec26947005cb998278dfdc6b3d0c19ab4e3ee410c91e5d32cb2a4a2d8a5a3261505a87825da2561f411a4594b71178de93dce9c962c7cc8e9e6bdc65d3934b93dee036b9849244ab4f248d4265c6c3b6b11415aae00dd6ce96133dfd18104f3825415ee282ae86c1a49701f9ab17a94eebef7f0a910529d274efa3548f630ce38f764770a47733727e73469c90a4052f092005421916adb8a910a3a06e23702e83b6bb5c18369304e8c176e7c2bbfdfe9b872467b337b4892252cf83222dbd192b3623a0757ca00d15961e9355fba850df4b038ce14838534740d3747ecd01f1f427924512cbdcdb61e751866c04737318ba9e9', diff --git a/modules/bitgo/CHANGELOG.md b/modules/bitgo/CHANGELOG.md index 707b1670d4..c8bfb0824c 100644 --- a/modules/bitgo/CHANGELOG.md +++ b/modules/bitgo/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [16.1.0](https://github.com/BitGo/BitGoJS/compare/bitgo@16.0.0...bitgo@16.1.0) (2022-12-01) + + +### Features + +* **abstract-utxo:** add valueString to unspents for doge recovery flow ([439f95c](https://github.com/BitGo/BitGoJS/commit/439f95c4e337e33a0812ac28b03e46b52e4a9fde)) +* **bitgo:** add api version input ([42f353f](https://github.com/BitGo/BitGoJS/commit/42f353f0b33857963d66739d34b0d0cac85e82db)) +* **sdk-core:** add keyDerive to ECDSA TSS implementation ([9ff1d89](https://github.com/BitGo/BitGoJS/commit/9ff1d89ba0e42d53640f0fe7b71c53d1a2eb4a10)) + + + + + # [16.0.0](https://github.com/BitGo/BitGoJS/compare/bitgo@14.5.0...bitgo@16.0.0) (2022-11-29) diff --git a/modules/bitgo/package.json b/modules/bitgo/package.json index 0bba0f3dab..9650e4849b 100644 --- a/modules/bitgo/package.json +++ b/modules/bitgo/package.json @@ -1,6 +1,6 @@ { "name": "bitgo", - "version": "16.0.0", + "version": "16.1.0", "description": "BitGo JavaScript SDK", "main": "./dist/src/index.js", "types": "./dist/types/src/index.d.ts", @@ -44,46 +44,46 @@ "gen-docs": "typedoc" }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/account-lib": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/account-lib": "^4.1.0", "@bitgo/blockapis": "^1.3.5", - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-coin-ada": "^2.3.0", - "@bitgo/sdk-coin-algo": "^1.3.5", - "@bitgo/sdk-coin-avaxc": "^2.3.0", - "@bitgo/sdk-coin-avaxp": "^3.3.0", - "@bitgo/sdk-coin-bch": "^1.3.5", - "@bitgo/sdk-coin-bcha": "^1.5.0", - "@bitgo/sdk-coin-bsc": "^3.0.0", - "@bitgo/sdk-coin-bsv": "^1.3.5", - "@bitgo/sdk-coin-btc": "^1.2.5", - "@bitgo/sdk-coin-btg": "^1.3.5", - "@bitgo/sdk-coin-celo": "^1.3.5", - "@bitgo/sdk-coin-cspr": "^1.2.5", - "@bitgo/sdk-coin-dash": "^1.3.5", - "@bitgo/sdk-coin-doge": "^1.8.0", - "@bitgo/sdk-coin-dot": "^2.0.0", - "@bitgo/sdk-coin-eos": "^1.3.5", - "@bitgo/sdk-coin-etc": "^1.2.5", - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-coin-eth2": "^1.2.5", - "@bitgo/sdk-coin-ethw": "^1.3.5", - "@bitgo/sdk-coin-hbar": "^1.3.5", - "@bitgo/sdk-coin-ltc": "^2.0.0", - "@bitgo/sdk-coin-near": "^1.3.5", - "@bitgo/sdk-coin-polygon": "^1.3.5", - "@bitgo/sdk-coin-rbtc": "^1.3.5", - "@bitgo/sdk-coin-sol": "^2.2.5", - "@bitgo/sdk-coin-stx": "^1.4.5", - "@bitgo/sdk-coin-sui": "^1.6.0", - "@bitgo/sdk-coin-trx": "^1.3.0", - "@bitgo/sdk-coin-xlm": "^1.2.5", - "@bitgo/sdk-coin-xrp": "^1.3.5", - "@bitgo/sdk-coin-xtz": "^1.4.5", - "@bitgo/sdk-coin-zec": "^1.3.5", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-coin-ada": "^2.3.1", + "@bitgo/sdk-coin-algo": "^1.3.6", + "@bitgo/sdk-coin-avaxc": "^2.3.1", + "@bitgo/sdk-coin-avaxp": "^3.4.0", + "@bitgo/sdk-coin-bch": "^1.3.6", + "@bitgo/sdk-coin-bcha": "^1.5.1", + "@bitgo/sdk-coin-bsc": "^3.1.0", + "@bitgo/sdk-coin-bsv": "^1.3.6", + "@bitgo/sdk-coin-btc": "^1.2.6", + "@bitgo/sdk-coin-btg": "^1.3.6", + "@bitgo/sdk-coin-celo": "^1.3.6", + "@bitgo/sdk-coin-cspr": "^1.2.6", + "@bitgo/sdk-coin-dash": "^1.3.6", + "@bitgo/sdk-coin-doge": "^1.8.1", + "@bitgo/sdk-coin-dot": "^2.0.1", + "@bitgo/sdk-coin-eos": "^1.3.6", + "@bitgo/sdk-coin-etc": "^1.2.6", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-coin-eth2": "^1.2.6", + "@bitgo/sdk-coin-ethw": "^1.3.6", + "@bitgo/sdk-coin-hbar": "^1.3.6", + "@bitgo/sdk-coin-ltc": "^2.0.1", + "@bitgo/sdk-coin-near": "^1.3.6", + "@bitgo/sdk-coin-polygon": "^1.3.6", + "@bitgo/sdk-coin-rbtc": "^1.3.6", + "@bitgo/sdk-coin-sol": "^2.3.0", + "@bitgo/sdk-coin-stx": "^1.4.6", + "@bitgo/sdk-coin-sui": "^1.6.1", + "@bitgo/sdk-coin-trx": "^1.3.1", + "@bitgo/sdk-coin-xlm": "^1.2.6", + "@bitgo/sdk-coin-xrp": "^1.3.6", + "@bitgo/sdk-coin-xtz": "^1.4.6", + "@bitgo/sdk-coin-zec": "^1.3.6", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/sjcl": "^1.0.1", - "@bitgo/statics": "^12.0.0", + "@bitgo/statics": "^12.1.0", "@bitgo/unspents": "^0.11.5", "@bitgo/utxo-lib": "^7.0.0", "@types/bluebird": "^3.5.25", @@ -98,7 +98,7 @@ "superagent": "^3.8.3" }, "devDependencies": { - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-test": "^1.2.6", "@types/create-hmac": "^1.1.0", "@types/debug": "^4.1.4", "@types/jasmine": "^3.5.12", diff --git a/modules/bitgo/test/v2/fixtures/tss/ecdsaFixtures.ts b/modules/bitgo/test/v2/fixtures/tss/ecdsaFixtures.ts index 3c20268279..e7b6ced412 100644 --- a/modules/bitgo/test/v2/fixtures/tss/ecdsaFixtures.ts +++ b/modules/bitgo/test/v2/fixtures/tss/ecdsaFixtures.ts @@ -6,6 +6,8 @@ export const keyShares = { userKeyShare: { pShare: { i: 1, + t: 2, + c: 3, l: 'a1a7728d36dacf20c79bf12a2b2241c6bd891f534e58fd7f997a19af6c4d88975e3190417b1f6c61f12b4a18947f1b52123b4b87cb7cdf963d4c2ebfdf83f966f7e209b4089fcdd02a78bd259787a330d93412fd60420d20541f9fb65f0588f9f45e923d6461bc1bfbc4e779904c4664df1da2c5f858b18534dee88c098beba97496730d908f89ee78cf681dcb7d1dce416c5a064400d9ff6b61dd3c1a0654474972dbffbbc798371d77294c5f4e5dbd3581fa9c6ebabaa6fff02980a26ed230ca4682a3e3b3fa67bf0dcc80a525b0983630cf9251643114ad2ae651e32d9cdb2753f3b362822f004ad47ebaa25af4e71d19e2dfbefc13584c39135a93557589e05023653f744ad7981cb992f18fee6f9b168d1146f43edafba2c0a66dd33afb68b3a26e05ebacbef1ed0ef88abff3ccbfa7d11dba20664008fa31a546e669ce926c6836abf71df0937f78461573238726de348a530d0da19ac27c7233d7f4f5fef158e3da28db5877642341b66ba2c91451f40b908287fb343fc9a556087b18', m: '1e7d61cf7ba86b3677a3a254c7e1753505119112005b3e49fa5d4c7bf3b7fd40b1ef795edb0358de3b4cd57e197672157528b5e00936c1c52ff4ec08abf38be50a0327e72f12eb24d7d3c7bb8a43fea87ff2f9a288c83594d4e87a1696f63b4675d80da2325485e25bdfe2d3c204b69af4761597bfe27821784f064f98bfe0cd2beb24f208be143e1f6e5a79187904f5bb5ecbdbb4cdf02ff141d64697d63d1349d9963afc830f25327c6f309baff16641df3f502353188780d8a38d1a93ac2cb60e3e5781151bb5b6937a191423e64f3e14d6b1da8e310af18c165df222f2a6b941c95316258876a58160f62a5d42e5a8e8eba9695470d8342bb9fa6c317690789cbbccccec4483990151b38e4b90b340b63cafab3963f982562942b744383e300f26a9059302eb4fb9161f93c492f968af6337c2c4879ec389e9ab7b1250ac981d4ace0a5ae19a1b159c0b55ec6dc0e537517130a69d17b5c5b8f4e6c36b0196527092506baa774cc76f2f64d3368de2561549a24425fc9944f2725f253cef', n: 'a1a7728d36dacf20c79bf12a2b2241c6bd891f534e58fd7f997a19af6c4d88975e3190417b1f6c61f12b4a18947f1b52123b4b87cb7cdf963d4c2ebfdf83f966f7e209b4089fcdd02a78bd259787a330d93412fd60420d20541f9fb65f0588f9f45e923d6461bc1bfbc4e779904c4664df1da2c5f858b18534dee88c098beba97496730d908f89ee78cf681dcb7d1dce416c5a064400d9ff6b61dd3c1a0654474972dbffbbc798371d77294c5f4e5dbd3581fa9c6ebabaa6fff02980a26ed23277696fc7b03b4ef9142784d4fdadaecea436262a757549649725776a9dd2b53bd28dfb76ff67b1b99ddafe83029087833bd9d40f3b41197f05bbbee754b425a1c30ea7f4510a4e16a448dfe5c723ba9a48a16690790b637d81cfe72b836232c3e8fa82dbb3d93cc17aa19b421e086c8939e9ec3b00fb3fae67afddb412ae0d620d4e1bf05a1c4c9448a0e97e8989b32656268f7c1e286439beef8f2436b39f43741a994b1d4976244392fffd4f1407c328ce7b4881d35be3552cccca04255da7', @@ -38,6 +40,8 @@ export const keyShares = { backupKeyShare: { pShare: { i: 2, + t: 2, + c: 3, l: 'dc2ab89c3888452c814a539a9dd8faba199ab52781ff10b7e870dce72d2c5fc1cb1f039c0f9e90d201194ea1e733730bd9dc64aa239f95da246beb3198e48f274f0b0e7084f3df5aad69b4e624ac9cab5e31dd1335499c8b29e6535858d049fb33ec4933cfefd2e4b11026df3a3818d365a3ac36a120f34b74aebe0490fe90596f0efd69d1d9e5c291f99d10278bce1a4c806e52fa111654c9d9bcb0d89dcf090f58d469e406469ebadb84b16ccc5cc8beca04bb4013991b59af0fd65d24dfd5dd8c6f54d31fbb5e679e4e30adde442a08ef9a49e9c06932f9c7f61cc91122bb412601e8f6c6668b595a50f638a261568a6ad6ba1657d84112573be994994141b6fa78ae0eec3a5d01acf24179d1f38ef1bc4b157d158318e1e2ab34426c85a99b66b3b99a1fa3466d19c225e807ac66322418f97941dbfdd26906e64034d6a55d59d28e66dc20c3d5c3eaa05c6db52216221f82273f6b11940a4a1c814bfbf15165cf475e148ae87e2b5e980f55a51de98aedda77e2923407b3b2e64357bb14', m: '1a8423324d6977cf08a81fb3c730f26b00dee9c3b7cb4b9c3576bdb9fa5ee39d62926ec8236430cc2f8bd4acc8e187c19043b87ca9972dd71be81434390f059b2a14e96ffb0bb53ebd8bf8c199282e866d2121b243015ebb3f8dbb654f913d36d35e2691ad6c6e124c1b6b65a77b51c7174d5e500a9eb9085a0d1d65eb24d5bb31c4e1625ff1dde547c8ef8ff0956fc13f185c61ccd5ce1150423fbbcfe43b23f47088ace4545f51a6d74e0b55b1be4cb18aa2b34e31479c145b9d7a2baf89bda8250b63b99827520b15554b2cd75b1e9288280a2a53c3dc49d74c84eceafea8782312d369bfe3e76cfb50c4ff4043cceb4fdf32cb24584243ee22956947896e9cfac6416708aeb358b6c33b0de3a214c73d54eda4e5311ebfbcac3d59b6d84033b8a53ba61bf862176b04f157a06e57e1d47b91840a9def99c375fee28b41eee7bd79f1eff4144210387d3d188881331a758df56a6ab99f522d1ea2b3e05c28a5bb7f5b3464df4d1e95a739ffdc42963f5b27b7801ecd3ec675b1fc5cc3ec3b', n: 'dc2ab89c3888452c814a539a9dd8faba199ab52781ff10b7e870dce72d2c5fc1cb1f039c0f9e90d201194ea1e733730bd9dc64aa239f95da246beb3198e48f274f0b0e7084f3df5aad69b4e624ac9cab5e31dd1335499c8b29e6535858d049fb33ec4933cfefd2e4b11026df3a3818d365a3ac36a120f34b74aebe0490fe90596f0efd69d1d9e5c291f99d10278bce1a4c806e52fa111654c9d9bcb0d89dcf090f58d469e406469ebadb84b16ccc5cc8beca04bb4013991b59af0fd65d24dfd7efac59033fe178db7cec6f4aed7f24694ce23f9e4bc67d2c12fc8c5e84d3fde1289af1f1232ae5b7537cccc38e1acfa3239b0002e08349919effed414b2d9e0d4e7adf934b9cc527001176dcf92e1596fb3a6a8540e692fac3ae9476325c0294ef04bee2a6e76c8e74eb3c7eb6457c1b0f4b84214624489b93751efa192185e9dafdfb8b6cf7700e17f9917cb6d45c3edd351ccf09d2cf334439b704b11058afac78874c1d538b1923acfb7f0cd625b3849e077e74261753afb8025d0928fd61', @@ -70,6 +74,8 @@ export const keyShares = { bitgoKeyShare: { pShare: { i: 3, + t: 2, + c: 3, l: 'e70a7827b2748c5264c70a46fb5427396d8e79605bf2507b581722f27530bcbf10e6a20e219d3bdc26083195bfb51c41a100751691126e6a9649ed2c037b356ee82f59ac6edeb278104d01a7a1d6cba0da72783834fb1da4fd5d0e7c040c665f8a0f23e57d5fb6c72599cf21d67a31949c59c3ace0a455a7e565ccc991dc5e717c027b272c888eaa016c8c9c54154cc71dab0ede8838189795511cf9d19738c8a2338320d551c38ff40358010ade95d74ae49a4bdcd10bff75d7e74fd6e6df5f73eff52bef90ebaaa60ffe8cfb5bff688c90c92ee3c1b20c366e044ba39f76c5a5b2120ceb46e57b109509d62ccba2a7d138f6c6a02ce6be4c5e9b065181d2700b6b4485132fd3615f687867c73be1df5e0525bef8aface335aa3426364d7df74a49f915eaf8fc967ceadf422f21999c2afad2629212a908f3ace38aae157971ac240c5a65a11ec7968fdb2e283770677d0afd0cad59eb823b5dc69bb50d7ce3b79a74c4f4bb06ca01c36e2dc51d5852d33b045e6b943a6396501b74ff08dfb8', m: '45315d66f88900fd2c906a89b58919bd9966bca242274886ef7eae732748e9818e1d8b7ad16819a6adc4662cf69d1d842c6910dfc36efbec53d2978ae8510a6fcd4eff706d25b660602d7c46dea73fe10f8322d6d5714322335de7bb972c47e0a311b05c1ae20dcc82a6101b1525d06c072b5ef7f3a7cf15b091c68d6e20489f1f4e1ccc9bb117322714d566a89748bd02caeb99331a56a594b556be60d24c7bc66eb9b9c6c39a0781d43f98765efd3c12707d8c0041fdb46bf360aa5e6a3cb7eeda5902371bb6ccabbd1ee10ec87d76883a96167ecc22c6e9f114d984d99c8fa72dbf88e474e8eb6bc50fa9e584b3fc701302363c11af4dc36ec4607ae84ad3ce27b788ffa1fd9f8190e7c3b9d2f2d2c08ed950adde6b15cf9a0c8f05488545fbce69209aa0c980271d6dc89d76d242f220d58c0e92e698b9cc69980c994f19765ffe2ffb802b2f0d27d1575ca0c96dd91276e8063fa6f35a043d7c95b4751770d925f5d5662a5f5daff7771206df1d34c9c7a7b8803a1fbec47a41636dd510', n: 'e70a7827b2748c5264c70a46fb5427396d8e79605bf2507b581722f27530bcbf10e6a20e219d3bdc26083195bfb51c41a100751691126e6a9649ed2c037b356ee82f59ac6edeb278104d01a7a1d6cba0da72783834fb1da4fd5d0e7c040c665f8a0f23e57d5fb6c72599cf21d67a31949c59c3ace0a455a7e565ccc991dc5e717c027b272c888eaa016c8c9c54154cc71dab0ede8838189795511cf9d19738c8a2338320d551c38ff40358010ade95d74ae49a4bdcd10bff75d7e74fd6e6df61a2b1c541c481384c25a3eaac80bcd450333bdc414a8e89c885bac072f3c317484f9ac3c7076017c45a22c8679adad03d36e2aa1a8e6bc02ab49eac90a3451523118d45d4101d3900f622816f460dbd43621c04ba3de03f4e4ebaaaa6ba5bd2b1ede7eb1c58a5634496eb02a07714fb0c4010cc0c253b75fccc96f56a0dedd64f9371786d94e1598f16c02e1c69e8e57e214cae8247cbbb21a538bfe9888d57fd83e5ce36a0f6be4af98c5b76fce3f5531847d873fce6d457dda2ecad5322946b', @@ -105,6 +111,8 @@ export const otherKeyShares: ECDSA.KeyShare[] = [ { pShare: { i: 2, + t: 2, + c: 3, l: 'e1f51b571774e8fcd7b60cbdddca6079535f2b11b07c954b1f9aa63e83d902d8ed2f5ee9de1ed5179bdcd1561e33e461ef14b683c2b2b95188c0968723b07b1f6ee56a5881b9534e724a3936c07e0d1653046f56b99f7e938606c81aa27741f5e6760b5b3e0ac9b8322e59496e0b79ba36508001d2ee3787dba5185bbe68597952305bd876a1a4d1433ad1b184da2cf9835014e6accfea31bb0647f7c75d3ba7ecff1c7e2699ae13466358b2b884d886f62b495a3bfc2b147af3d012e38546d1bc1e86815647ff28ad441d3412dea927f0a2f3d6c966315079915bc67180efc6a881342d5535a012bb1b2db26a5948c455cc07dace37d136d655bc199cd2ba86b741a27d92a0dc64dcb4f3c94f1b4a90663883d0eb711d20f9e09c48368d4da868f060b685024f59e9b41e9057f31d58382c7360239decb651b1c0c4fae1a3dd193c44f3bd31b56d231f29c07bd5d9003995aba8b2804d90d3e2aac836677c5e7d703d2fa5faf15e6f3a1c0cb04028f07e965f8eed55c0f3efa7289770f22a18', m: 'a9479c3250fe1deb2d631564e09acaca2a73a4bace108d43709bfacdb4056467a34c83ce8aa20da34dcc7b0a20bb89e7d7cad1b3b5d02a1ba0534d9edbaecd73a45bcc96dfdad803b0aefa2e309578679edae03dbab5e51614a0bca5fbdfc21d129c606bb3152c59a9ccfcc242771076d81f1c25defb39cc7d312e0826821fe45abf5225b011d7fa7c45cf054b12c667304ce62d54b04b3a1e1a905f5308c647fd015e2cc4122ec58cdf6295a8e0f8d6e84e5dbf9300ae8668dce7862b5074e23be09847bc16d4902beb7a00cd29b6422eb35d74e2d982bb76f1892fbdb828b56e76a606f34205ffda5c5aa9867828ba8205ea6be227de88de9d3f6b0e3ea2adecbb986409339bf6dbd0e9674839a7d023e2e06cf4f3cd1653b5030ce4c0b34704bd1bf3e5e53bd0dad90dcb1ea8a86e25bc7f861f60c2b05c11e32633fe4591240a9ac2c3ae4ee615789346db4187873f34bab43ceb3d029a26708339bb97d39e7b0bb1e864336bc60eca67bc835d3f80ef7f45858e652df84058439bad467', n: 'e1f51b571774e8fcd7b60cbdddca6079535f2b11b07c954b1f9aa63e83d902d8ed2f5ee9de1ed5179bdcd1561e33e461ef14b683c2b2b95188c0968723b07b1f6ee56a5881b9534e724a3936c07e0d1653046f56b99f7e938606c81aa27741f5e6760b5b3e0ac9b8322e59496e0b79ba36508001d2ee3787dba5185bbe68597952305bd876a1a4d1433ad1b184da2cf9835014e6accfea31bb0647f7c75d3ba7ecff1c7e2699ae13466358b2b884d886f62b495a3bfc2b147af3d012e38546d3a20454d5a6e16e33125af3914bef6b4a1b5100f07a92cb1a0bf8d7f811bb5832cf36e8fd3da067f885631712a85b387ec81ee0fa0c8bf4895e91fd2bf1720c7f1534e558066718ab89e69d8915f99dcc0140630fafbe84db5a9f4101ad80a86d9a0518a89c4cb5b87a7de9be849e4d71513131439874e688b4c05180f42e2b99e2a56fed4d3fcec4239c496731b042f99c7c8ceee72a0eb7f082203977beecb807f313dc39b8245b11bae48ffdbb50449766cb4a3735b19d277998a668ebadaf', @@ -137,6 +145,8 @@ export const otherKeyShares: ECDSA.KeyShare[] = [ { pShare: { i: 1, + t: 2, + c: 3, l: 'efe2b16d34bf453d09b432b9ceb34daeeafce37dc54d62bfac96b7dc3593bc31559c848af174a6ed8d825f9987a1ca0fb11bddeb74879b3ebdd86dfb81fc4f93ba32cdf6f1957f5bae212ae32678f01e22bb3f5077a8572e173c0d9b85749e898f52504052346f3eadfc359bccbaca543088fd8fcf86718141b5bd1b786b0f33e8b65c8240a4762777e0211c90a2ee0d07d743d28f373da2d0ff4c6a98505cd1205e4556c065b3b853405e644f1bcc8b2796ea51d02aa6f0837623ce800c6aa18b0af04da3b620dee3b7cf0c51ef5023f0da2d4b6f8b6c032451c7072f9cfb539efa7118c3f70caa46fb22a426b05e73bc99a1ee98f57c518ec0abb8b56193aa86de803b4b55034014df5a7d121e197c18714919682dd6a20c970dcc8fe22e6d20194f5235181014426aa9b5c150508e51273a5bc50c7ef226cd5a9516102936f35cfecbcb77e6e4f4ca7c437876f06c7898c3b36e8606d9a461eb7e083f52f26a88c3c2875d2dd0945c3b0c7f7b08a26c99e7a7a27f40099844d9e84fcf6b94', m: 'eed420f5f549fecc850962b22d87b0d2aef91ebd9cdd15bbb4a408a0d4da87c48c4fd6caa093587c8c534ca78f412d03c3be6722440d11989b0ca514f2a4091c7e521c2932b7ce16de659454815339daa7c7a4b96a2c01a1487f105bab027eab52914229be591b3370022e5cd5c5eec2f5308781eb6754668abd9460e6b7611ce20873dd5e75839f56e96600b73527a43077615c4cce631ba49502bf6ecc776641fa4110a09df7ffc8b7712f4df57bb3295548b54870358be8856e6d341d09f047be477e272f23a2e0bff25f01b2803e755657ebdc14fbe71a1a4cb8bb9b91bd1ffc5c1773415de675d5dd99dd6b5b458ff65eaf1269ac565f32f68aee02804f843449a6fd58003ed5265126bdc2a4a40a6ccaf3ee05dde35f1fc5af377f936a16edebbbf50f51c96c5e473c4a38eb60a531ea392bf35ccef2c683ec0233940df74091401d6e6b5351237f1e8ce6e116c54882b6af34a11f402eac824d07dbf0114e6e587d64c425841da98015129bd85639041a25c96e4f1deb3256e67a1f04', n: 'efe2b16d34bf453d09b432b9ceb34daeeafce37dc54d62bfac96b7dc3593bc31559c848af174a6ed8d825f9987a1ca0fb11bddeb74879b3ebdd86dfb81fc4f93ba32cdf6f1957f5bae212ae32678f01e22bb3f5077a8572e173c0d9b85749e898f52504052346f3eadfc359bccbaca543088fd8fcf86718141b5bd1b786b0f33e8b65c8240a4762777e0211c90a2ee0d07d743d28f373da2d0ff4c6a98505cd1205e4556c065b3b853405e644f1bcc8b2796ea51d02aa6f0837623ce800c6aa3af2121d67c2dac5747df54514b8c0f28ecdc5db4e14659860a640f5bbd765300f712e24328bcd448d83e81269a99f10b4a69d9990304ad9ede10da46a5fad8823eb84b4753861f131cbe3ddc1fb85450a72549704181956cd795f228e0982509f59dd36e732c56a68922d40f369b64ce7371832bc94fd044c722c1d6bfb0e297c4d58cea1ac69eeef9b9043cfa999ebdd3860338411fceb9304a8e1463c047fc31f71d265c6275bde8ff5fcc39e54c3859b6766252040028f77f6658cc8f6621', @@ -169,6 +179,8 @@ export const otherKeyShares: ECDSA.KeyShare[] = [ { pShare: { i: 1, + t: 2, + c: 3, l: 'e610112a99a0ab456fb0232f3d36f53d4606ba24d051a00156df386dbe84da65780e2811c85065399bc916240ce5403051e9adf1b0f75a9dd5963af613d8c4df3410400a65965656f333380c658e316b8b3a4abca3f430a0012c56e7bba9d98b74d4d46b297999475a4b1c5d1f7187f404e12995158c1713ce09602616a11ec5223d46fcd15e3910163073db383405c574b0c9c6921967e7bacd369aa65d4b22dfea7717aa122dcfdb9758d59bd519a6b8c00dbf3f381239afd4f99361c6cb4d2e24cbad9bf1e76f6222371fc29c4d87f54ddacbcec72fc2dae04caa021bfdf9137ebd696984ba756ed06bba15b8d0b8d6cb4bc346d20a4eb56d0105e7c78d44614a5a78bffdec84f5715ccd336a56fbe4ad6e06af5d0c7215553889c748ddf3f473e40ec905fbbf4d48fee35791a0dd50b699189ae1c85d8886bbd51cae307c84551289dc5001d461c6b2e28961c5101757a5bbb31600620661f684cf337397f7799bb03408a486a4d6292c6d048bb7cac3b6abca3d3df36183558e34e7d6e8', m: '4dbc51b77ae5130d27cc231fc5b03ddb5dd361f11bc56d1256d74025d54f4c283d5cf530c61f7e6b663a54b70da8e544593dd8e75a5e01138a5e10ce40ea81004b1c5f51af61cc218f2aa17b64286f539ddc2f4991116209b12c36d0a28d855714445917bb1dcdbb254659afaacb27d79632c07889f228206e71d02754e3efd07f80d2ef462815bfa77af4a301ffad19bec8c903ab5cafdd2f05e995d2eb1de2a4d3c3ae4430ba4e53ce257b04138c968d4a9353e8ce7469aeb97a89f5938ebb85d6e2e74a6b3e698b41b9fcef84034da11e6491f57b0b99e11f39c0f3b744e0056b5a7ca02c37c04a498bd573fa3a5fc82758a2ffc47d0ac352f5828373059088c59a4515866b36e8d387f20c0e929d5c556b70a5472bef9e2c1c3245a1abde5725e4412df8402091d267bb62de70f820c973fe08f41dc8cae9c8c588d3798b7892757110cd0b20aba3113dd279dc4ded47153c5a53c281b1bbe0bd50e0fbfd87f3be4ce31b3547eba6bf932e4247443887003045ba122151d8bdad4588af6b', n: 'e610112a99a0ab456fb0232f3d36f53d4606ba24d051a00156df386dbe84da65780e2811c85065399bc916240ce5403051e9adf1b0f75a9dd5963af613d8c4df3410400a65965656f333380c658e316b8b3a4abca3f430a0012c56e7bba9d98b74d4d46b297999475a4b1c5d1f7187f404e12995158c1713ce09602616a11ec5223d46fcd15e3910163073db383405c574b0c9c6921967e7bacd369aa65d4b22dfea7717aa122dcfdb9758d59bd519a6b8c00dbf3f381239afd4f99361c6cb4f6ee7aa01f6f79f141cc60cb557881b0aec54cc4e3420856d20e3e11d7f9596ab0a9f75105cd2abdbd72d7ac748f25e0342dbb377e73c186641596938de5b979c60908021238be0f8bee21c068a75290fb57036fd59640b9766b3f777db09636c67918f10bd556895ef3e97396b6f23a6cee259fb5ce8f2330be7598546b4b48e3ee9f3cf4b40f1370adfde5c16c37bd5294c6fdbfa83cafe49ebdd2e02ee96bbfcd16a9ac837a8fbad6b71456ad07a3146f79586ab88790b19fd05a16fececd3', @@ -201,6 +213,8 @@ export const otherKeyShares: ECDSA.KeyShare[] = [ { pShare: { i: 2, + t: 2, + c: 3, l: 'fc02da40f17ac81164913c963767eca53732069afbb2d5c6d2c376b959adbe276876416ecf2e40d8f85b10e4bd2f2da580e33dea0a3f5fa714fcf93f4b968ed37e35829c5fe85937fbebaa6d68a3351f972a33637f39087ff37b1bd863e67fd16b435827dc3aadec28542b5c30137da08fb9825289356412d1440a099c1d5c3edab89abcf42a5240d0e827ca449c07c5e6bb85799d46269a43c69aaa1fd48acda12e3c6558bac2b63011d71e0a59858e00f4af597c50557980388d26211f4f34b44317a91626a25cc6b36973bb23dc544abfda0e2665485c657eed3fa815c2fa8c4b1c5cb3be4a2deafed438004f8031a038247b5f562357ce3c5eb8c730fad520578ff863863a7c8235e5229f8a323bed502b78694529beb92d6d98f0224e41fc43a260917c5794f82bcaa66ece8f0c863ada2090a2f7aafe348a9d45f36c0e1c20f0a0469809c815489d58c1156656a2d94f83395d40df3fa14abbaf0592c8f7de3206ea76c8d511421b23a0785897dfb8317c0c7a7d478a82a32ea23876a8', m: '283e35021341cd98a90b82456ba801844df02f72c6bff7b6ea18612e8d1fc7c56a80ede668821ab1682a5616dd2ced270967bcc9094b5ae7b5bb133ac8088210e2e3128e0a01b312aea46b4bd933f4f0a006edfea94ab9b41428e79d5e2b865d0f8b7a771509b6cdee11677c285dc2871b3bb9865ee86e0bba77b2de8961f6eb4797beacaaaff470c72f919f791c219c56b3da48a7af0ed157e242bde7964f9a44486edf8613c47702d051a9ea497ef4fd4bc4467d6ce7a7119653bb749a2b62b3359e94efa7aa2b2acbf8eafa9475d1ece36c6a587f47a3a184dcc84cd1bed620abc9e3f39ee06ea5a9f22590d23e738385928a3ebb707454f9f540a553000e651420571f86b9d81894a5b0e211f1150b0b327648f0f248b23f6ee8915275785f1a3742bd654bc9f5269d6c508105882d0c13cdc422b3f15ab702c79f40214c52e276b1267a93be138a1f4bad307c266ed1f67e90e65635617564f6c0285936d34b2cbf5547abf586078e36c63be0365fdce40904c6762b2cd0d358e67d6d86', n: 'fc02da40f17ac81164913c963767eca53732069afbb2d5c6d2c376b959adbe276876416ecf2e40d8f85b10e4bd2f2da580e33dea0a3f5fa714fcf93f4b968ed37e35829c5fe85937fbebaa6d68a3351f972a33637f39087ff37b1bd863e67fd16b435827dc3aadec28542b5c30137da08fb9825289356412d1440a099c1d5c3edab89abcf42a5240d0e827ca449c07c5e6bb85799d46269a43c69aaa1fd48acda12e3c6558bac2b63011d71e0a59858e00f4af597c50557980388d26211f4f3719cda0284af281879d37fa808c82be78a9d8be037c8f56e5b71447061448efac79c8e584312b53fd1eefde4a59e53c224a510c119ac3d7a6a73415ded5aaf8d97ec8b23ed9251d183037f8e2c9929394b664046e907f7f40e5d08eae1d7c2f5cd10317cdaa7dbf746d80731f32d712d981c378f17021721d5a02da5d6d125ccc52fef6f538614443c9d504e4663be0f4b2ba4799ea6c30ca099e088c82dec24b8eabb20f8e7aac9eafb5dd3924631133f950ab8f47de5c189ce217d267f0f777', diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bch/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bch/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index f95d2712ed..d792921490 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bch/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bch/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "d03e57cb65ea7b86411a879afc98d428cb9f7caed4cd5c1c537ed6af6f356173:1", "address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "625f1e94548949733d43b367c4d30d3e3444cce5011300959fc6001d5f29ea06:1", "address": "37VmFTmUhwppU2FcKM3uawLjj4oYBQZsN1", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "36de98ad2db9129e3b2982e0b028f3994dabeecb75b0f80f055e8d0427218a18:1", "address": "324RMNET22VF4qLHUcVJtvWKVwbNDoj8Sv", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "bch", "txid": "d62ccec28180bfda03f1a8676bfbc568bbf6d228b14c5dfd71ca2f760dffae7f" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bcha/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bcha/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index a29ee58216..b6b8a53cb0 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bcha/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bcha/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "d03e57cb65ea7b86411a879afc98d428cb9f7caed4cd5c1c537ed6af6f356173:1", "address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "625f1e94548949733d43b367c4d30d3e3444cce5011300959fc6001d5f29ea06:1", "address": "37VmFTmUhwppU2FcKM3uawLjj4oYBQZsN1", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "36de98ad2db9129e3b2982e0b028f3994dabeecb75b0f80f055e8d0427218a18:1", "address": "324RMNET22VF4qLHUcVJtvWKVwbNDoj8Sv", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "bcha", "txid": "0480ae84648c6612413ed94f0fcf5608cbaaafed66e699f591d2d851cba5eafa" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bsv/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bsv/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index f92875f923..539b10dd35 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bsv/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/bsv/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "d03e57cb65ea7b86411a879afc98d428cb9f7caed4cd5c1c537ed6af6f356173:1", "address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "625f1e94548949733d43b367c4d30d3e3444cce5011300959fc6001d5f29ea06:1", "address": "37VmFTmUhwppU2FcKM3uawLjj4oYBQZsN1", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "36de98ad2db9129e3b2982e0b028f3994dabeecb75b0f80f055e8d0427218a18:1", "address": "324RMNET22VF4qLHUcVJtvWKVwbNDoj8Sv", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "bsv", "txid": "d62ccec28180bfda03f1a8676bfbc568bbf6d228b14c5dfd71ca2f760dffae7f" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index 155c85b731..1ff6ca0338 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "d03e57cb65ea7b86411a879afc98d428cb9f7caed4cd5c1c537ed6af6f356173:1", "address": "37qPMKZpagdNztA82mXrE81ch2kPzYxEnH", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "625f1e94548949733d43b367c4d30d3e3444cce5011300959fc6001d5f29ea06:1", "address": "37VmFTmUhwppU2FcKM3uawLjj4oYBQZsN1", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "36de98ad2db9129e3b2982e0b028f3994dabeecb75b0f80f055e8d0427218a18:1", "address": "324RMNET22VF4qLHUcVJtvWKVwbNDoj8Sv", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "btc", "txid": "0480ae84648c6612413ed94f0fcf5608cbaaafed66e699f591d2d851cba5eafa" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json index 531fed4467..c33e80b742 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "4e7134b992a57b35acec657974fb0dbaff5304f6b3645037f05f526352b18e50:1", "address": "3PeXf4UiyRneENKQrarZ3yt9dwTM4xgFZQ", "value": 100000000, + "valueString": "100000000", "chain": 11, "index": 0 }, @@ -13,6 +14,7 @@ "id": "98a101ffd98d2ce1bcddfb4b34ac071ac54da417377cceb468ddcdcc4ef19a3e:1", "address": "3Qz9psfsDLD1F7W2hdKzcyPxn16BkSxpZN", "value": 200000000, + "valueString": "200000000", "chain": 11, "index": 2 }, @@ -20,6 +22,7 @@ "id": "67b1893259423705b645ccdae1c050ea8e43017bd292d97e0e5a80b8405ad5bc:1", "address": "381yBi3uNArm5xCHCtW4FGay4wJRzSGegj", "value": 300000000, + "valueString": "300000000", "chain": 11, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "btc", "txid": "bc2f2749a68ae5230ecb90a559dcc301ceb7fdd1f23803b31a3e80e35f5d6a6d" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2tr-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2tr-unsignedRecovery.json index 58c6bcaa12..89fce8d405 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2tr-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2tr-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "9cf295ddfa67cfcc33ab4321f1c4f0c31a343069c841e41d352c7053536049ea:1", "address": "bc1phk6lhy2tka2kxsx6hjd3c0z2h2e0rcrere9lr3kqsg0p6xxqe2pq2ark68", "value": 100000000, + "valueString": "100000000", "chain": 31, "index": 0 }, @@ -13,6 +14,7 @@ "id": "03335d059c6f363eb21687bdfb57b93ecae466f0582669afe5f56cfe7de6d4f2:1", "address": "bc1punyhjurx29e2577msed4mzlu5py2snp6s2zwf2uux2ek5xk2ps6sxyqcqj", "value": 200000000, + "valueString": "200000000", "chain": 31, "index": 2 }, @@ -20,6 +22,7 @@ "id": "9d6b8af626c6ce6c62a810f74f168768b4383ec49425a84b97d6240c2f273408:1", "address": "bc1pgrsntg8rd9qdjf06demu0423ysxftqddx9twyqy38fsg9qyj82xs3y9tyr", "value": 300000000, + "valueString": "300000000", "chain": 31, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "btc", "txid": "39750e9863dc6f4296985a4212a0c9b04a992b4fb0ab93b7b1dc091f57d160ea" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json index dad4f9483f..51a8989782 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "ef0bab6daae6a8f0a6b17198ccc3cbae5554f44794dcbe028f133d3052013702:1", "address": "bc1q5e7nvvypt2qpjxq74zwtry9klsqkcyvcee85anaa3pax7ae207gsxkxwxc", "value": 100000000, + "valueString": "100000000", "chain": 21, "index": 0 }, @@ -13,6 +14,7 @@ "id": "cbbfe10f6d74c415251d56ffae4aeeb012bd03c2d1ac854cb10dfa08effd519e:1", "address": "bc1q3v9yjlrzkufgd99d07806262dhqgfjf2zjdx5sfrw8uslnjs2uts5rvzzm", "value": 200000000, + "valueString": "200000000", "chain": 21, "index": 2 }, @@ -20,6 +22,7 @@ "id": "41c356a3c28ab9713aaf75d274ab65bb17e11e51d5a160b99e326b241bc2ed01:1", "address": "bc1qyerx34sx9a2a4zz7w320tuxz3hq84xn0hm6tzr6tek77tsknfg0s2sufdt", "value": 300000000, + "valueString": "300000000", "chain": 21, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "btc", "txid": "dc9295cfa0f659af44fa78619502b296a8398502d6b67f6daf6e853dffb4f8a4" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index c4615806c3..4e0028b11c 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "94f17dccfb5b490895c56d33c7055c1d2d4c492b3f919d116a3d7274d00a35b8:1", "address": "AMvF5Gw1Mvy9igfgUKXaxNun27PNiLLNkc", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "50977419b7122fd429c79a790670f4fea5719bb97f20a70c3170d6c2bc26cc39:1", "address": "AMacyR8fVCAbBpmAku3eKCEu49SX1JbzmL", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "61844d00eb67eae0b730740f444933db2fc83e83030eff9e80f1abde64759140:1", "address": "AG9H5KbdoGq1ndqqvAV3dBQUq2ELyFa81n", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "btg", "txid": "79146ad0e3b460dcdb12f6538e84e7ffcc3fef20e5e12ae44e4d174e06a0b0d9" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json index c56480173f..6f7dc19102 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "3044550eda939274c600ff73a9f084f85ab164fabf69c1b7d8498b3627caf7b1:1", "address": "AdjPP1qukg8QxApyJ8rHnEnJy26KnBr2ik", "value": 100000000, + "valueString": "100000000", "chain": 11, "index": 0 }, @@ -13,6 +14,7 @@ "id": "cb0b658fa8b76d302afcb56b9e4eb922c2658d0836149ff8a947f61dda6b599f:1", "address": "Af51Yq33zaYmxv1b9BKjMEJ875jAY12YW1", "value": 200000000, + "valueString": "200000000", "chain": 11, "index": 2 }, @@ -20,6 +22,7 @@ "id": "b73bae8239d8c5023b115e428100c59f927b89b176edde5f874d3c2c21d5f71b:1", "address": "AN6pufR69RCXokhqeSVnyXV8Q1wQkNsJjq", "value": 300000000, + "valueString": "300000000", "chain": 11, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "btg", "txid": "ae7a020fd752d6b81aad05a9efe9828e2b5183a5b59c41bbf5b57eca237b1607" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json index c4fed5971b..043dfbbd9f 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/btg/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "c134901031c7dc789eb05f6c9000fb8022f684361298db79be0de0c99cffde89:1", "address": "btg1q5e7nvvypt2qpjxq74zwtry9klsqkcyvcee85anaa3pax7ae207gsgkznkj", "value": 100000000, + "valueString": "100000000", "chain": 21, "index": 0 }, @@ -13,6 +14,7 @@ "id": "d19986a8b745892442a2d58b0e7ab9e903966ff433702a35c724cb12209a17e6:1", "address": "btg1q3v9yjlrzkufgd99d07806262dhqgfjf2zjdx5sfrw8uslnjs2uts6rglj3", "value": 200000000, + "valueString": "200000000", "chain": 21, "index": 2 }, @@ -20,6 +22,7 @@ "id": "7ffd092e5baa2e25c71614607110825f7d1037f205f725e9f27dd5be1447b22f:1", "address": "btg1qyerx34sx9a2a4zz7w320tuxz3hq84xn0hm6tzr6tek77tsknfg0sysc5ap", "value": 300000000, + "valueString": "300000000", "chain": 21, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "btg", "txid": "e7d38436aac3dcaf5a79e2da0a74a166cac08840032bd64b7bbb81e299bae446" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/dash/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/dash/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index 4508487c62..c567eca827 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/dash/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/dash/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "af3cc2e4eeb25d9ed826b6513b71f1886f5eedf8801f63496317bb0315a46593:1", "address": "7YZ2BWqzPfj1zeh5JPCMZW1Gcaamj6AKG6", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "2a6890b46672658eeafd69e66ac8d90684ac215f64a3c9a5464735d625cee1af:1", "address": "7YDQ5f3eWvvTTnnZaxiQvKLPecdv1A4QLF", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "9fe15864c040c64d4cd63c70f035fd35fb3a26f4918a15249a590099dc4eec67:1", "address": "7Sn4BZWcq1at4bsEkE9pEJVyRVRk2qo5ay", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "dash", "txid": "e23a197e97f87b0b8b5aab0ce6065218d44b396b49b2232254fa89aacd7d51b2" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/doge/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/doge/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index f7476391da..2b443746be 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/doge/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/doge/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -5,21 +5,24 @@ { "id": "2e6cd69dbdb3a04e4b0f94cfb6554ea61a8226bc8de0e63d23f1cb87b03aca6e:1", "address": "9xae6AdiekWGuFXbSuCGUFdzPc8RyQ9USD", - "value": "9000000000000000", + "value": 9000000000000000, + "valueString": "9000000000000000", "chain": 1, "index": 0 }, { "id": "038614de4388140a27d8f9fae5443cdcc0283738c8249a6b675950fae8a57193:1", "address": "9xF1zJqNn1hiNPd5jUiKq4y7ReBaFTfSf2", - "value": "18000000000000001", + "value": 18000000000000001, + "valueString": "18000000000000001", "chain": 1, "index": 2 }, { "id": "b1542eaff30c471adaf0886941697e80a08af3e79408f87a729f578b35b82afb:1", "address": "9rog6DJM66N8yChktk9j948hCWyQGHV84D", - "value": "27000000000000001", + "value": 27000000000000001, + "valueString": "27000000000000001", "chain": 1, "index": 3 } diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index a9870dc95c..4806f1970d 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "900a43e40599f6ed31faa80fe90a29148b83ec7c11b8448046cce0d2e3392364:1", "address": "ME3XfCynXoUooPS28eXC3mG21jLqtXgiEr", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "97849e6339724c8800c645b95b058a0b0b9c3a4bff43ea3e06b643c66f2f0907:1", "address": "MDhuZMBSf4gFGXXWRE3FQab93mPz8LSpT3", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "e6575a5554e7d3256a8ecac9bad04084bd3d77f531cd9099872eec87a7136e18:1", "address": "M8GZfFeQy9LfsLcBaVUeiZkipeBpDpTB7H", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "ltc", "txid": "a984186aa30e72427ec46b915e166a8fc72a28d0499dbbc8122e076adb41f257" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json index 2dc19e04e5..ea96ded3e4 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "3db419abc9b7b1619735e95529a03b809da561fd9e657d408b54f123cc86e779:1", "address": "MVrfxwtgvYe52sbJxTqtsd8Yxe3nzJDCzE", "value": 100000000, + "valueString": "100000000", "chain": 11, "index": 0 }, @@ -13,6 +14,7 @@ "id": "ecb48ff9e6e9122c90499c1969ac326fffbed384f672d11bfdb2b6c0c557ee2c:1", "address": "MXCJ8m5qAT4S3cmvoWKLSceN6hgdhEgcDW", "value": 200000000, + "valueString": "200000000", "chain": 11, "index": 2 }, @@ -20,6 +22,7 @@ "id": "5b5b37ff6674ae0433323adf81582b629023baaa81b344e8dba2e8fd26b2ab34:1", "address": "MEE7VbTsKHiBtTUBJmVQ4uqNPdtszrNLUH", "value": 300000000, + "valueString": "300000000", "chain": 11, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "ltc", "txid": "687e0da1f855f926f8d8d8e8e03d6cfc469819acc5e59557bc4d041d73e2cbed" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json index db7339f77f..ce61674bee 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/ltc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "4cb4b3a669119ee990be29ec8cab49e3bfc781c9bb440aebf25aba8b89821d90:1", "address": "ltc1q5e7nvvypt2qpjxq74zwtry9klsqkcyvcee85anaa3pax7ae207gs9jg7ua", "value": 100000000, + "valueString": "100000000", "chain": 21, "index": 0 }, @@ -13,6 +14,7 @@ "id": "07c88610fe1104c162a444d7697750f7fd0b1e57b002f1d145b98d1cecbc03aa:1", "address": "ltc1q3v9yjlrzkufgd99d07806262dhqgfjf2zjdx5sfrw8uslnjs2utsh8zjc7", "value": 200000000, + "valueString": "200000000", "chain": 21, "index": 2 }, @@ -20,6 +22,7 @@ "id": "6c2fc97bd00dbe242c95a386045a0ae906248b81ec995d4206884b1890fad3eb:1", "address": "ltc1qyerx34sx9a2a4zz7w320tuxz3hq84xn0hm6tzr6tek77tsknfg0sf5jehw", "value": 300000000, + "valueString": "300000000", "chain": 21, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "ltc", "txid": "8afd5e7276d3a81be210eda138fce796fd71fefc18863785905fe682a4a0c46d" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbch/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbch/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index 7d838e3982..bceaf89c1b 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbch/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbch/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "1884e8e81a047cde56747df2896ce1ede6edd79345dc3c89cbead35ad6eb2823:1", "address": "2MyPbR4VrC98jCfnfhu9ir4zsuNxZiPS85K", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "68abb049f24b036261e665aab871f5b4cb0312feba66d8bd46b1c3aed229af8a:1", "address": "2My3yKChWKQLAfot9zUfnCtKzwR1hxdfvE4", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "dd3316a9bf6661005eefdf82bec8c5a7b0cb993c345c098b1a92edabf0ddda65:1", "address": "2MscdR7AUdUzbGcxq9k7BWsVaiHoXwk2Rn4", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tbch", "txid": "bfc5cd7b3a8e79841e2a22e438d532e4020006e0cc5dde105f8ce97db1e2d94e" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbcha/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbcha/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index 2873097c52..6b0a3ad651 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbcha/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbcha/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "1884e8e81a047cde56747df2896ce1ede6edd79345dc3c89cbead35ad6eb2823:1", "address": "2MyPbR4VrC98jCfnfhu9ir4zsuNxZiPS85K", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "68abb049f24b036261e665aab871f5b4cb0312feba66d8bd46b1c3aed229af8a:1", "address": "2My3yKChWKQLAfot9zUfnCtKzwR1hxdfvE4", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "dd3316a9bf6661005eefdf82bec8c5a7b0cb993c345c098b1a92edabf0ddda65:1", "address": "2MscdR7AUdUzbGcxq9k7BWsVaiHoXwk2Rn4", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tbcha", "txid": "b8afbf9d50494f83fda31b80a3ef29227382ff77580b2a16794c50e4a12a5b57" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbsv/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbsv/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index f05d7666d6..88ed79a55f 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbsv/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbsv/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "1884e8e81a047cde56747df2896ce1ede6edd79345dc3c89cbead35ad6eb2823:1", "address": "2MyPbR4VrC98jCfnfhu9ir4zsuNxZiPS85K", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "68abb049f24b036261e665aab871f5b4cb0312feba66d8bd46b1c3aed229af8a:1", "address": "2My3yKChWKQLAfot9zUfnCtKzwR1hxdfvE4", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "dd3316a9bf6661005eefdf82bec8c5a7b0cb993c345c098b1a92edabf0ddda65:1", "address": "2MscdR7AUdUzbGcxq9k7BWsVaiHoXwk2Rn4", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tbsv", "txid": "bfc5cd7b3a8e79841e2a22e438d532e4020006e0cc5dde105f8ce97db1e2d94e" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index 540f80a400..ddd88b755d 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "1884e8e81a047cde56747df2896ce1ede6edd79345dc3c89cbead35ad6eb2823:1", "address": "2MyPbR4VrC98jCfnfhu9ir4zsuNxZiPS85K", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "68abb049f24b036261e665aab871f5b4cb0312feba66d8bd46b1c3aed229af8a:1", "address": "2My3yKChWKQLAfot9zUfnCtKzwR1hxdfvE4", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "dd3316a9bf6661005eefdf82bec8c5a7b0cb993c345c098b1a92edabf0ddda65:1", "address": "2MscdR7AUdUzbGcxq9k7BWsVaiHoXwk2Rn4", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tbtc", "txid": "b8afbf9d50494f83fda31b80a3ef29227382ff77580b2a16794c50e4a12a5b57" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json index bd45ab2963..4c5ae2e099 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "37c6cb51a6133bfe7d83a3f91320f66cdc8896b97883171742a78c472e380618:1", "address": "2NFCjioQkatHzS9wxXiURfvsQrHfWqT3yZj", "value": 100000000, + "valueString": "100000000", "chain": 11, "index": 0 }, @@ -13,6 +14,7 @@ "id": "3f62add70f11b60e41a07a6e37aa90fa658cecda0f7cf2e4c4809303fa607ece:1", "address": "2NGYMtcbtpniMSu8aNkwsEvPDzMJMY2Bhbg", "value": 200000000, + "valueString": "200000000", "chain": 11, "index": 2 }, @@ -20,6 +22,7 @@ "id": "21496a50e927ede95b5c0f393ada77849f3604a04df1859c38a8f1f49c8860d4:1", "address": "2MyaBFSyvydN7Hjppt27vsDaEHHWbq2btjH", "value": 300000000, + "valueString": "300000000", "chain": 11, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tbtc", "txid": "40140685fabaacaf00076fd2b8cc15b210aa32524909a7235c2aad8199d3bf97" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2tr-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2tr-unsignedRecovery.json index df2bffc85f..38d84885db 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2tr-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2tr-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "19cd39e8d5366f9ac9c34c4ba0548f632bd4354945f25bfac4460e38756eab2c:1", "address": "tb1phk6lhy2tka2kxsx6hjd3c0z2h2e0rcrere9lr3kqsg0p6xxqe2pqa44eqg", "value": 100000000, + "valueString": "100000000", "chain": 31, "index": 0 }, @@ -13,6 +14,7 @@ "id": "2c54d47f64f69f6707a86bdf7ba2a57d27fbc0e068b4e4250c38331fd30e97a3:1", "address": "tb1punyhjurx29e2577msed4mzlu5py2snp6s2zwf2uux2ek5xk2ps6s3vkh6a", "value": 200000000, + "valueString": "200000000", "chain": 31, "index": 2 }, @@ -20,6 +22,7 @@ "id": "3f7d14d4a648206270a9a389b2c1422a78d98d1bf34313d358aa9a05a04a53bf:1", "address": "tb1pgrsntg8rd9qdjf06demu0423ysxftqddx9twyqy38fsg9qyj82xsxvny7v", "value": 300000000, + "valueString": "300000000", "chain": 31, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tbtc", "txid": "6d6f51237ab17dc4f6be624766dcba11545b2bc8c8d62f5af34fad388042e6fe" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json index 0dfa7ffd87..ba9f51f715 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tbtc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "2acd5a21e467404c8fcf1b377221ec43192251193f49ccff456fad549e2720cb:1", "address": "tb1q5e7nvvypt2qpjxq74zwtry9klsqkcyvcee85anaa3pax7ae207gs37spuh", "value": 100000000, + "valueString": "100000000", "chain": 21, "index": 0 }, @@ -13,6 +14,7 @@ "id": "3dbcc267fd848a5f7a28dd1401506a11ac7f060522d554061c5e38b311614d13:1", "address": "tb1q3v9yjlrzkufgd99d07806262dhqgfjf2zjdx5sfrw8uslnjs2utsrt6dc5", "value": 200000000, + "valueString": "200000000", "chain": 21, "index": 2 }, @@ -20,6 +22,7 @@ "id": "22ef204a5823ec237b0ba181170f5283b13535840381afdd25bf844dc9d9fba7:1", "address": "tb1qyerx34sx9a2a4zz7w320tuxz3hq84xn0hm6tzr6tek77tsknfg0sac2xhy", "value": 300000000, + "valueString": "300000000", "chain": 21, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tbtc", "txid": "2eae9f2a0c22b3ddf7882879de5e5180afadd5e1fc68f3c93f1699967d54398e" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tdash/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tdash/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index 3b7bf272bf..dd5ec10140 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tdash/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tdash/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "85a8136b41f6f72dc71988b750974181ad2ccebbb84d3f8d4ed0018cb1758473:1", "address": "8kZq8qjrXD7eSx7LNeCK1spdW6Mbun1sYn", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "25833ef2fa6a68628395d6e72d015c854072b1e941d07adb7f02ed8cc3d6ad7b:1", "address": "8kED2ywWeUK5v6CpfDiNNh9kY8Qk7BCrTC", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "e976df41a633b0819d0d6f4c8a0b594962a355f1b1ff35a4277ac399148534ec:1", "address": "8ens8tQUxYyWWuHVpV9mggKLK1Ca9UtntA", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tdash", "txid": "3edbbb10fde896b2e7d1c40412c22f4bb5e8a4e0e695074d80fe5ec1fad56c46" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tdoge/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tdoge/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index 6d13d0deeb..013bc7a85b 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tdoge/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tdoge/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -5,21 +5,24 @@ { "id": "1884e8e81a047cde56747df2896ce1ede6edd79345dc3c89cbead35ad6eb2823:1", "address": "2MyPbR4VrC98jCfnfhu9ir4zsuNxZiPS85K", - "value": "9000000000000000", + "value": 9000000000000000, + "valueString": "9000000000000000", "chain": 1, "index": 0 }, { "id": "68abb049f24b036261e665aab871f5b4cb0312feba66d8bd46b1c3aed229af8a:1", "address": "2My3yKChWKQLAfot9zUfnCtKzwR1hxdfvE4", - "value": "18000000000000001", + "value": 18000000000000001, + "valueString": "18000000000000001", "chain": 1, "index": 2 }, { "id": "dd3316a9bf6661005eefdf82bec8c5a7b0cb993c345c098b1a92edabf0ddda65:1", "address": "2MscdR7AUdUzbGcxq9k7BWsVaiHoXwk2Rn4", - "value": "27000000000000001", + "value": 27000000000000001, + "valueString": "27000000000000001", "chain": 1, "index": 3 } diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index dbffb89492..282f66f518 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "501f041b8c185211fa79e808efab8e272c83c68591421d075f3e1ef4cff11e4f:1", "address": "QSkMY5N6DFBpLrYiL1BjvmSK3mQPb8W877", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "90d757c7fbddc72cba697268a5c021d42fdcb3b805ea468069d25143b2a3d14a:1", "address": "QSQjSDZkLWPFozeCcahoHamS5oTXoc3LZe", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "d3ade8c91f76d9d96e38abfb3fce2b9f81aef9d9940ac81aee21d3c9e9d4d1bd:1", "address": "QLyPY82ieb3gQoismr9CbZw1rgFMtCBbR4", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tltc", "txid": "b292bcadbfe54a1cc4fc2dfe35d0118a8b360a92aec2c4ddfc5201f2173f7215" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json index 3e0ab96d57..d0c21d3d7d 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2shP2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "63c5a1ab4de089fe6182acca8445d1c42613bc3567df04e051ce0aebb1c22188:1", "address": "QiZVqpGzbzM5aLi19pWSkdJqzg7LkJqXZ9", "value": 100000000, + "valueString": "100000000", "chain": 11, "index": 0 }, @@ -13,6 +14,7 @@ "id": "8148ca246eac4d9b25356212afb7cf1f63643e03fb50adb189fafb8721309073:1", "address": "Qju81dU8qtmSb5tczrytKcpf8jkBNYGK8n", "value": 200000000, + "valueString": "200000000", "chain": 11, "index": 2 }, @@ -20,6 +22,7 @@ "id": "756592b6b60a323abd269ed53b611c05cf69add5f79686145d10000c76f73859:1", "address": "QSvwNTrAzjRCRvasW89wwv1fRfxRfM5Bru", "value": 300000000, + "valueString": "300000000", "chain": 11, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tltc", "txid": "8abe3c4a62461e1168d4980614af880f0b44a1378dd79907dab941ea846ce53c" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json index 3aa3f2a834..d894b1dd21 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tltc/recovery/backupKeyRecovery-p2wsh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "8d7cab38b95c001d40d41ad39993d94b77171acede1a20ccfde9a3ac7946cdc6:1", "address": "tltc1q5e7nvvypt2qpjxq74zwtry9klsqkcyvcee85anaa3pax7ae207gswavqrg", "value": 100000000, + "valueString": "100000000", "chain": 21, "index": 0 }, @@ -13,6 +14,7 @@ "id": "9ba0ab3c9853f4db24fefad69f0eb4e5ae41b09babea52ce6a09bd560103a970:1", "address": "tltc1q3v9yjlrzkufgd99d07806262dhqgfjf2zjdx5sfrw8uslnjs2utsugxv8t", "value": 200000000, + "valueString": "200000000", "chain": 21, "index": 2 }, @@ -20,6 +22,7 @@ "id": "d63b6652fbb80dcc4c111bb124b9cb7d5c730990719f07175fc44dcb0cd6e22f:1", "address": "tltc1qyerx34sx9a2a4zz7w320tuxz3hq84xn0hm6tzr6tek77tsknfg0szmk8gm", "value": 300000000, + "valueString": "300000000", "chain": 21, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tltc", "txid": "f541e7d7a1d3e24659bc13f84369ebffc127da324a5793c419a155ec8e82b81d" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tzec/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tzec/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index c6cffd7bbd..6dcf11e845 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tzec/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/tzec/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "765c76759749b4c618a5d3e3a2767d6424675225761e044c785f1fe02cd3db73:1", "address": "t2ChBQL66RU2M9DnktwM1uZJB4BAeZTVZAQ", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "0cdb21cdc8bfafc29292f5f1cc12662b6c33b59ba4c94251338a3e4d6c69a413:1", "address": "t2CMZJUHkYjDncMtFBWs5GNdJ6DDnsLmM5p", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "3d2144a93b2debba4dc7f2374947aee869a74c91e11f956e59ad6ad0526345e9:1", "address": "t26vDQNkirotDDAxvLnJUaMnss61cu3WNJi", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "tzec", "txid": "3b48451fcd797cb6e5963a3ae63b0ac072b1470624889e3c28c4bc648d7a53e9" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/zec/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/zec/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json index 772343ee02..d1181074c5 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/fixtures/zec/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json +++ b/modules/bitgo/test/v2/unit/coins/utxo/fixtures/zec/recovery/backupKeyRecovery-p2sh-unsignedRecovery.json @@ -6,6 +6,7 @@ "id": "215bf9b78362b0a0b587fffb180e03b9ff95161b605555f641c4b691948ff370:1", "address": "t3QhzMeyxZ1QybXD1yCLyMw7XwgwUjsvcvH", "value": 100000000, + "valueString": "100000000", "chain": 1, "index": 0 }, @@ -13,6 +14,7 @@ "id": "d5130d74906e10b6ddf445c24d949e5601ef881cbe1c4e498895b6a674a266b2:1", "address": "t3QNNFoBcgGcR4fJWFms2ikSeyizd1Qh9h6", "value": 200000000, + "valueString": "200000000", "chain": 1, "index": 2 }, @@ -20,6 +22,7 @@ "id": "433c939276cae41b72270398c43cde8de24fe97103a1de9607d95a33cddc3bac:1", "address": "t3Jw2MheazMGqfUPBR3JS2jcEkbnSz3W4iq", "value": 300000000, + "valueString": "300000000", "chain": 1, "index": 3 } @@ -28,4 +31,4 @@ "feeInfo": {}, "coin": "zec", "txid": "7f65d883b9726053933919e08f4fe1e62c3f13e0156af63820b0b7fb9d69cede" -} \ No newline at end of file +} diff --git a/modules/bitgo/test/v2/unit/wallet.ts b/modules/bitgo/test/v2/unit/wallet.ts index a4e1b7d2fa..2fd4055a1c 100644 --- a/modules/bitgo/test/v2/unit/wallet.ts +++ b/modules/bitgo/test/v2/unit/wallet.ts @@ -1682,6 +1682,18 @@ describe('V2 Wallet:', function () { }).should.be.rejectedWith('transaction type not supported: stake'); }); + it('should fail for full api version compatibility', async function () { + await custodialTssWallet.prebuildTransaction({ + reqId, + apiVersion: 'lite', + recipients: [{ + address: '6DadkZcx9JZgeQUDbHh12cmqCpaqehmVxv6sGy49jrah', + amount: '1000', + }], + type: 'transfer', + }).should.be.rejectedWith(`Custodial and ECDSA MPC algorithm must always use 'full' api version`); + }); + it('should build a single recipient transfer transaction for full', async function () { const recipients = [{ address: '6DadkZcx9JZgeQUDbHh12cmqCpaqehmVxv6sGy49jrah', @@ -1942,6 +1954,44 @@ describe('V2 Wallet:', function () { intent.isTss!.should.equal(true); intent.intentType.should.equal('fillNonce'); }); + + it('should build a single recipient transfer transaction providing apiVersion parameter as "full" ', async function () { + const recipients = [{ + address: '6DadkZcx9JZgeQUDbHh12cmqCpaqehmVxv6sGy49jrah', + amount: '1000', + }]; + + const prebuildTxWithIntent = sandbox.stub(TssUtils.prototype, 'prebuildTxWithIntent'); + prebuildTxWithIntent.resolves(txRequestFull); + prebuildTxWithIntent.calledOnceWithExactly({ + reqId, + recipients, + intentType: 'payment', + }, 'full'); + + const txPrebuild = await custodialTssWallet.prebuildTransaction({ + reqId, + apiVersion: 'full', + recipients, + type: 'transfer', + }); + + txPrebuild.should.deepEqual({ + walletId: tssWallet.id(), + wallet: custodialTssWallet, + txRequestId: 'id', + txHex: 'ababcdcd', + buildParams: { + apiVersion: 'full', + recipients, + type: 'transfer', + }, + feeInfo: { + fee: 5000, + feeString: '5000', + }, + }); + }); }); describe('Transaction signing', function () { diff --git a/modules/express/CHANGELOG.md b/modules/express/CHANGELOG.md index 3b85d6e2b7..b9be1ace26 100644 --- a/modules/express/CHANGELOG.md +++ b/modules/express/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [9.21.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/express@9.21.0...@bitgo/express@9.21.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/express + + + + + # [9.21.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/express@9.15.0...@bitgo/express@9.21.0) (2022-11-29) diff --git a/modules/express/package.json b/modules/express/package.json index a7b83f61ae..bfbc5726fd 100644 --- a/modules/express/package.json +++ b/modules/express/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/express", - "version": "9.21.0", + "version": "9.21.1", "private": true, "description": "Local signing server and proxy for the BitGo platform", "main": "./dist/src/index.js", @@ -37,9 +37,9 @@ "fmt": "yarn prettier --write '{src,test}/**/*.{ts,js,json}'" }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/sdk-core": "^4.1.0", "argparse": "^1.0.10", - "bitgo": "^16.0.0", + "bitgo": "^16.1.0", "bluebird": "^3.5.3", "body-parser": "^1.19.0", "connect-timeout": "^1.9.0", @@ -51,7 +51,7 @@ "superagent": "^3.8.3" }, "devDependencies": { - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-test": "^1.2.6", "@types/argparse": "^1.0.36", "@types/bluebird": "^3.5.25", "@types/body-parser": "^1.17.0", diff --git a/modules/sdk-api/CHANGELOG.md b/modules/sdk-api/CHANGELOG.md index 98e2ffcbb8..406f286e89 100644 --- a/modules/sdk-api/CHANGELOG.md +++ b/modules/sdk-api/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.9.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-api@1.9.0...@bitgo/sdk-api@1.9.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-api + # [1.9.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-api@1.4.0...@bitgo/sdk-api@1.9.0) (2022-11-29) ### Features diff --git a/modules/sdk-api/package.json b/modules/sdk-api/package.json index 01a4b07848..222f173390 100644 --- a/modules/sdk-api/package.json +++ b/modules/sdk-api/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-api", - "version": "1.9.0", + "version": "1.9.1", "description": "REST wrapper for BitGoJS", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -50,7 +50,7 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/sjcl": "^1.0.1", "@bitgo/unspents": "^0.11.5", "@bitgo/utxo-lib": "^7.0.0", diff --git a/modules/sdk-coin-ada/CHANGELOG.md b/modules/sdk-coin-ada/CHANGELOG.md index d4ec1cbc4b..c4b3199950 100644 --- a/modules/sdk-coin-ada/CHANGELOG.md +++ b/modules/sdk-coin-ada/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.3.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-ada@2.3.0...@bitgo/sdk-coin-ada@2.3.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-ada + # [2.3.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-ada@2.2.0...@bitgo/sdk-coin-ada@2.3.0) (2022-11-29) ### Features diff --git a/modules/sdk-coin-ada/package.json b/modules/sdk-coin-ada/package.json index 8c78c93104..c9e4698e5e 100644 --- a/modules/sdk-coin-ada/package.json +++ b/modules/sdk-coin-ada/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-ada", - "version": "2.3.0", + "version": "2.3.1", "description": "BitGo SDK coin library for Ada", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@emurgo/cardano-serialization-lib-browser": "^10.2.0", "@emurgo/cardano-serialization-lib-nodejs": "^10.2.0", "bech32": "^2.0.0", @@ -51,7 +51,7 @@ "tweetnacl": "^1.0.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-algo/CHANGELOG.md b/modules/sdk-coin-algo/CHANGELOG.md index 0732fd114e..e4a116aa29 100644 --- a/modules/sdk-coin-algo/CHANGELOG.md +++ b/modules/sdk-coin-algo/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-algo@1.3.5...@bitgo/sdk-coin-algo@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-algo + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-algo@1.3.0...@bitgo/sdk-coin-algo@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-algo diff --git a/modules/sdk-coin-algo/package.json b/modules/sdk-coin-algo/package.json index 5a545160af..a0d8a56f0e 100644 --- a/modules/sdk-coin-algo/package.json +++ b/modules/sdk-coin-algo/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-algo", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Algorand", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "@hashgraph/cryptography": "1.1.2", "@stablelib/hex": "^1.0.0", @@ -55,8 +55,8 @@ "tweetnacl": "^1.0.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "should": "^13.1.3", "sinon": "^7.5.0" } diff --git a/modules/sdk-coin-avaxc/CHANGELOG.md b/modules/sdk-coin-avaxc/CHANGELOG.md index 10dfa824a9..4189e7c386 100644 --- a/modules/sdk-coin-avaxc/CHANGELOG.md +++ b/modules/sdk-coin-avaxc/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.3.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxc@2.3.0...@bitgo/sdk-coin-avaxc@2.3.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-avaxc + # [2.3.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxc@2.2.0...@bitgo/sdk-coin-avaxc@2.3.0) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-coin-avaxc/package.json b/modules/sdk-coin-avaxc/package.json index 3e61f47e20..84d03f16d9 100644 --- a/modules/sdk-coin-avaxc/package.json +++ b/modules/sdk-coin-avaxc/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-avaxc", - "version": "2.3.0", + "version": "2.3.1", "description": "BitGo SDK coin library for Avalanche c-chain", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,10 +40,10 @@ ] }, "dependencies": { - "@bitgo/sdk-coin-avaxp": "^3.3.0", - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-coin-avaxp": "^3.4.0", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "@ethereumjs/common": "^2.4.0", "bignumber.js": "^8.0.1", @@ -55,7 +55,7 @@ "superagent": "^3.8.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-avaxp/CHANGELOG.md b/modules/sdk-coin-avaxp/CHANGELOG.md index 46d5e494af..430e6ebc79 100644 --- a/modules/sdk-coin-avaxp/CHANGELOG.md +++ b/modules/sdk-coin-avaxp/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [3.4.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.3.0...@bitgo/sdk-coin-avaxp@3.4.0) (2022-12-01) + +### Features + +- **sdk-coin-avaxp:** verify import in P ([ce70af4](https://github.com/BitGo/BitGoJS/commit/ce70af459d1e2dcd1025178a930ddf8a84454bfd)) + # [3.3.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@3.2.0...@bitgo/sdk-coin-avaxp@3.3.0) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-coin-avaxp/package.json b/modules/sdk-coin-avaxp/package.json index c8a9bfdb92..2405bfd57a 100644 --- a/modules/sdk-coin-avaxp/package.json +++ b/modules/sdk-coin-avaxp/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-avaxp", - "version": "3.3.0", + "version": "3.4.0", "description": "BitGo's SDK coin library for avaxp coin", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -43,13 +43,13 @@ ] }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "@types/elliptic": "^6.4.12" }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "avalanche": "3.15.3", "bignumber.js": "^9.0.0", diff --git a/modules/sdk-coin-avaxp/src/avaxp.ts b/modules/sdk-coin-avaxp/src/avaxp.ts index 60b17400fc..ae34e32431 100644 --- a/modules/sdk-coin-avaxp/src/avaxp.ts +++ b/modules/sdk-coin-avaxp/src/avaxp.ts @@ -23,6 +23,7 @@ import { ExplainTransactionOptions, AvaxpVerifyTransactionOptions, AvaxpTransactionStakingOptions, + AvaxpTransactionParams, } from './iface'; import utils from './lib/utils'; import _ from 'lodash'; @@ -121,6 +122,28 @@ export class AvaxP extends BaseCoin { } } + /** + * Check if import txn into P is valid, based on expected tx params. + * + * @param {AvaxpLib.AvaxpEntry[]} explainedTxInputs tx inputs (unspents to be imported) + * @param {AvaxpTransactionParams} txParams expected tx info to check against + */ + validateImportTx(explainedTxInputs: AvaxpLib.AvaxpEntry[], txParams: AvaxpTransactionParams): void { + if (txParams.unspents) { + if (explainedTxInputs.length !== txParams.unspents.length) { + throw new Error(`Expected ${txParams.unspents.length} UTXOs, transaction had ${explainedTxInputs.length}`); + } + + const unspents = new Set(txParams.unspents); + + for (const unspent of explainedTxInputs) { + if (!unspents.has(unspent.id)) { + throw new Error(`Transaction should not contain the UTXO: ${unspent.id}`); + } + } + } + } + async verifyTransaction(params: AvaxpVerifyTransactionOptions): Promise { const txHex = params.txPrebuild && params.txPrebuild.txHex; if (!txHex) { @@ -163,6 +186,7 @@ export class AvaxP extends BaseCoin { break; case TransactionType.Import: if (tx.isTransactionForCChain) { + // Import to C-chain if ( (params.txParams.recipients && params.txParams.recipients.length !== 0) || explainedTx.outputs.length !== 1 @@ -170,7 +194,11 @@ export class AvaxP extends BaseCoin { throw new Error('Expected 1 output in import txn and does not require recipients'); } } else { - // TODO: BG-55595 - verify import txn on P chain + // Import to P-chain + if (explainedTx.outputs.length !== 1) { + throw new Error('Expected 1 output in import txn'); + } + this.validateImportTx(explainedTx.inputs, params.txParams); } break; default: diff --git a/modules/sdk-coin-avaxp/src/iface.ts b/modules/sdk-coin-avaxp/src/iface.ts index 3773c98605..2d41aacfea 100644 --- a/modules/sdk-coin-avaxp/src/iface.ts +++ b/modules/sdk-coin-avaxp/src/iface.ts @@ -47,6 +47,8 @@ export interface AvaxpTransactionParams extends TransactionParams { type?: string; value: string; }; + unspents?: string[]; + sourceChain?: string; } export interface AvaxpVerifyTransactionOptions extends VerifyTransactionOptions { diff --git a/modules/sdk-coin-avaxp/src/lib/iface.ts b/modules/sdk-coin-avaxp/src/lib/iface.ts index 32372759d9..d1d5d924f8 100644 --- a/modules/sdk-coin-avaxp/src/lib/iface.ts +++ b/modules/sdk-coin-avaxp/src/lib/iface.ts @@ -2,6 +2,9 @@ import { Entry, TransactionExplanation as BaseTransactionExplanation, Transactio import { BaseTx as PMVBaseTx, TransferableOutput, Tx as PMVTx } from 'avalanche/dist/apis/platformvm'; import { EVMBaseTx, EVMOutput, Tx as EMVTx } from 'avalanche/dist/apis/evm'; +export interface AvaxpEntry extends Entry { + id: string; +} export interface TransactionExplanation extends BaseTransactionExplanation { type: TransactionType; rewardAddresses: string[]; diff --git a/modules/sdk-coin-avaxp/test/unit/avaxp.ts b/modules/sdk-coin-avaxp/test/unit/avaxp.ts index dc11e5e13c..c23c34ea02 100644 --- a/modules/sdk-coin-avaxp/test/unit/avaxp.ts +++ b/modules/sdk-coin-avaxp/test/unit/avaxp.ts @@ -473,6 +473,44 @@ describe('Avaxp', function () { isTransactionVerified.should.equal(true); }); + it('should succeed to verify import to P transaction', async () => { + const txPrebuild = { + txHex: IMPORT_P.fullsigntxHex, + txInfo: {}, + }; + const txParams = { + recipients: [], + type: 'Import', + locktime: 0, + memo: undefined, + unspents: ['e8ixKnba52yufXrTVKrTXVQTj5cd5e6o6Lc3rVkhahDGEs72L:0'], + }; + const isTransactionVerified = await basecoin.verifyTransaction({ txParams, txPrebuild }); + isTransactionVerified.should.equal(true); + }); + + it('should fail to verify import to P transaction with wrong unspents', async () => { + const txPrebuild = { + txHex: IMPORT_P.fullsigntxHex, + txInfo: {}, + }; + const txParams = { + recipients: [], + type: 'Import', + locktime: 0, + memo: undefined, + unspents: ['test:1'], + }; + await basecoin + .verifyTransaction({ + txParams, + txPrebuild, + }) + .should.be.rejectedWith( + 'Transaction should not contain the UTXO: e8ixKnba52yufXrTVKrTXVQTj5cd5e6o6Lc3rVkhahDGEs72L:0' + ); + }); + it('should succeed to verify export transaction', async () => { const txPrebuild = { txHex: EXPORT_P_2_C_VERIFY.txHex, diff --git a/modules/sdk-coin-bch/CHANGELOG.md b/modules/sdk-coin-bch/CHANGELOG.md index 1d9fb6cb1a..4614d5dbcf 100644 --- a/modules/sdk-coin-bch/CHANGELOG.md +++ b/modules/sdk-coin-bch/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-bch@1.3.5...@bitgo/sdk-coin-bch@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-bch + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-bch@1.3.0...@bitgo/sdk-coin-bch@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-bch diff --git a/modules/sdk-coin-bch/package.json b/modules/sdk-coin-bch/package.json index a60d29193d..d992e2fee3 100644 --- a/modules/sdk-coin-bch/package.json +++ b/modules/sdk-coin-bch/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-bch", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Bitcoin Cash", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,12 +40,12 @@ ] }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-bcha/CHANGELOG.md b/modules/sdk-coin-bcha/CHANGELOG.md index 108f6cd8ad..c4fd1b3b7a 100644 --- a/modules/sdk-coin-bcha/CHANGELOG.md +++ b/modules/sdk-coin-bcha/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.5.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-bcha@1.5.0...@bitgo/sdk-coin-bcha@1.5.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-bcha + # [1.5.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-bcha@1.3.0...@bitgo/sdk-coin-bcha@1.5.0) (2022-11-29) ### Features diff --git a/modules/sdk-coin-bcha/package.json b/modules/sdk-coin-bcha/package.json index ec99504d9d..e203010330 100644 --- a/modules/sdk-coin-bcha/package.json +++ b/modules/sdk-coin-bcha/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-bcha", - "version": "1.5.0", + "version": "1.5.1", "description": "BitGo SDK coin library for Bitcoin abc", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,13 +40,13 @@ ] }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/sdk-coin-bch": "^1.3.5", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/sdk-coin-bch": "^1.3.6", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-bsc/CHANGELOG.md b/modules/sdk-coin-bsc/CHANGELOG.md index 24fec367c4..5009cd08e1 100644 --- a/modules/sdk-coin-bsc/CHANGELOG.md +++ b/modules/sdk-coin-bsc/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [3.1.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-bsc@3.0.0...@bitgo/sdk-coin-bsc@3.1.0) (2022-12-01) + +### Features + +- **sdk-core:** add keyDerive to ECDSA TSS implementation ([9ff1d89](https://github.com/BitGo/BitGoJS/commit/9ff1d89ba0e42d53640f0fe7b71c53d1a2eb4a10)) + # [3.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-bsc@1.3.0...@bitgo/sdk-coin-bsc@3.0.0) (2022-11-29) ### Features diff --git a/modules/sdk-coin-bsc/package.json b/modules/sdk-coin-bsc/package.json index 18ae77268d..3b1b99cc36 100644 --- a/modules/sdk-coin-bsc/package.json +++ b/modules/sdk-coin-bsc/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-bsc", - "version": "3.0.0", + "version": "3.1.0", "description": "BitGo SDK coin library for Binance Smart Chain", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,14 +40,14 @@ ] }, "dependencies": { - "@bitgo/abstract-eth": "^1.2.5", - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/abstract-eth": "^1.2.6", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@ethereumjs/common": "^2.4.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-bsc/test/fixtures/ecdsa.ts b/modules/sdk-coin-bsc/test/fixtures/ecdsa.ts index fffb1ae728..af3ec4b075 100644 --- a/modules/sdk-coin-bsc/test/fixtures/ecdsa.ts +++ b/modules/sdk-coin-bsc/test/fixtures/ecdsa.ts @@ -2,6 +2,8 @@ export const keyShares = { A: { pShare: { i: 1, + t: 2, + c: 3, l: 'e8ade89d248c10cda89063852841bf8a0da216e3cf29e1bb8323c1411f1d440a7e696edf2eda0d41d67f9e7e7f07df2f2d4839f133819fd2eb30366fdd08da68d25c8b8f24f42d8e25277a44a522f0ad8bf3bba8dbea075b484b8cdea38af9830b8233e60184fb5a09955ba8f742f925e24d5cb2890a64a04c643dc09063c924716288deb8a68d2fc7f5fd847fa6e1f27280c00140f42c9ab32ccc044ff0f571dc2354c1423840fb29b6ac4a33fce555af85a02df1b0a1af44d696797cb5ccda227866a6475a533cd8c6545924c95e948f0ab34fbd1c6775f444bd6d210338ee5fb292cdb8075c077f15accbb5f61840fecb5c721332ac6c8de86f21de70d251a66a2919b83e4c2de77f19dee7c8d1f29416b87faec311e59e7acf085cf6ed678f4aab7a99080baad57147ed216bc44fd6e3c43d88c50fb0395af175092a8cd0dd0c991785ee072d98993f6086931c46f644661ac7a161a29d47402e6ad0dfb23a905da113bc918045b09f228687ed74b626f4cfab450b9b39ba1aee20285100', m: '67eda115fee32f93cbb120ceec526a3abd5f1c6749a939e99db4309244abfccd5fb30f4dfa383dca071f69c68bc812f5e7b90901e9b53ef3a5b7cf6a740d7162688435c497ca06a2eac8586847f15f14af095bc45fa63a6844ba1a9ea3f26b5597d0c443def85c076984359eed5067fa6f8afe56287119c7bcf945ad062b5aae1f8a5796496c77f58cf72f057a7d4d4c35af6c5740d699ccf6640f30b3280fe3d0eed25fd4129bfae20be3e65182ea2fa82c6c35febf55e6aada42c5e2707be580623fd44819176c99e97989a6de0a34e55d5d1217f1fc95a9bc600207122d55d436a2d2e545ee60bf6ad1ac8f158ee075da910cb231bef824bf7e5eae302d30538524d3b383d641d94ce1e17656a8c5219f0a4735c3019f437ad875cb4585e2f3f0aab925eb1ba34510a8b868d167212ab08df8ad5affaf42e5d6fb6355e5400b4f35fd53805f50ec21b9b04dbbe855f0856675d999bb1c21c668e44ce1c89eb7cddecb14e6668a4e73330f833fb9aa0c541f33ef7ee7c72e3c2eb238585fcd', n: 'e8ade89d248c10cda89063852841bf8a0da216e3cf29e1bb8323c1411f1d440a7e696edf2eda0d41d67f9e7e7f07df2f2d4839f133819fd2eb30366fdd08da68d25c8b8f24f42d8e25277a44a522f0ad8bf3bba8dbea075b484b8cdea38af9830b8233e60184fb5a09955ba8f742f925e24d5cb2890a64a04c643dc09063c924716288deb8a68d2fc7f5fd847fa6e1f27280c00140f42c9ab32ccc044ff0f571dc2354c1423840fb29b6ac4a33fce555af85a02df1b0a1af44d696797cb5ccdc5857f09e74b106e1e4138a7683c26cb35d7c84c503dee237f702fd694a47a09b80dc788dc5b3434160c42fb539b5d99468080675c0243650a8255e95e472a1c2548f0da4e0454f28841f28f8641ff00fb2292a0a1445d5c787aa91ebee80753abcc966ddcc66c2f192aedae1e3eb00343d13186b4e370d76097224f3203f674082e50020ad8b2a779a327bc1aa1e22cdabecbe53f24811255cc5f39e4261920394038e951cd8933aae4a8a5c7dd93da87dc0c5217aae655dab314838ff509167', @@ -35,6 +37,8 @@ export const keyShares = { B: { pShare: { i: 2, + t: 2, + c: 3, l: 'e3c66fb7ed957c58787aae6d68eadfb21c58d69fc895b7abb74caf544c8fd0470802036105cef1685d58cd832498a4b12ce9294453d75cf06a004e335171d012dbba25408d68951d08c5bb3796eabf2e7c944367d82142f59b9f87d32e93944b6ce22519771f0ed860ce70748bef239204044800a4e62ddf841b6b8cd7198bb947921abd13cc38c400346ee4afff797fce91cda3612b1a2bcd893878772e06efd68c3f01b5872bbf23ca8887c4f97dc92475b6a8299d3fb6b1f6e2b935c250b462e95d7b61e91dde02ea3ad8540c6c9b88a1dca3eac1b591fc185dd92848fb6a0ef4e9f902580ff07592654e9313d65c2ff2ef5c7faebf1995861e158e2e1a4a742a2fb6020027daf140ee8b9f7144207188eb6a45d7d3363de695b1a151f6b47fbed832740c07db82a3df59bf04edd64bbd6cdf3ee627738c07933d3fcd94d60b1fc974a0826f4ab3136b1c5210b6c54f905a62da7b0a45d6cd2c33b58db214b933eceb05da1a9278709e8d60d352cefcd6ab0e29cfe6017a0f543f794e5a60', m: 'c4e60ac80322dbeb362a0f6ff6af3b497b339935ae189050c4ef45fcf09d60868b8278b088d5cb2a5c4d570b02284275edbbf5b1f5a56e91f66812a37ad0db9fd9c04b123eddb5f2a2755ee8432da20a2d9d1cc074360391a9e66d9e14960072ca58ff8b3871350c18fc0afe1d51687cf2d017a790522ce80541aa1b4240fab4e059b347861064b59f4bb76b0d7c4c5e7f827f4f54988d933e9bef51ec7dbb163c3f8bf720fd31027eebf6c9659f3980c4d86a5bc6fe14b1a78988b656557a2c5a588ec416af18c2118e01d358362d5ec4d80d25cbbc1f400ec98773433f4145d5e3f27b74973d96df58a61a0603aa06c713e441c8e699cdcc531d7260b0532205991c894de822b436d9501af58bee7c59f55ce2d0a9a30d408a9af7c66eeafcbd2373b2d33897820d934bd3d7819bf933157f7551ac50684d41da4ee0dbd1dae77a866a1fb1e4d12146eb7b7294437ddbd6c60af68e34a6c6d50639c4b22cb1db3adda3f3e36468a57d3084a59656d05a04302dc845ebee6bbf791e8a6a85dc', n: 'e3c66fb7ed957c58787aae6d68eadfb21c58d69fc895b7abb74caf544c8fd0470802036105cef1685d58cd832498a4b12ce9294453d75cf06a004e335171d012dbba25408d68951d08c5bb3796eabf2e7c944367d82142f59b9f87d32e93944b6ce22519771f0ed860ce70748bef239204044800a4e62ddf841b6b8cd7198bb947921abd13cc38c400346ee4afff797fce91cda3612b1a2bcd893878772e06efd68c3f01b5872bbf23ca8887c4f97dc92475b6a8299d3fb6b1f6e2b935c250b66944b41e6b9ecaea681deb868cff7e71674b23693b193f15dc7b6f6948f1d683042a7f8250de0698c5940c8553aca4c0f2c40079f5c858463b2d7bbcf810b357ee400e2abca1451bc3d686f55f7a46154f0b9321595881acd3d47555a45f8f236d7b1546ec06b18d19a51c64acf28d029f2a3cadb0017cd57d8852ccaea3926dfd15ed70a18e6373ec77b1fe4c8291312442a719a574acc9460a08de2c27c9ae16306f986c607d5ae5689d203a9e8444b71560518e4f3b436ed033943b962acd', @@ -68,6 +72,8 @@ export const keyShares = { C: { pShare: { i: 3, + t: 2, + c: 3, l: 'b6dbb186434ce2126ed8e32d6bc273603d05e973e9c3fd2978cc8e1e70bca14d4c4fd2c4713f5002f95845faef74c5f7198fa7abfd9ea1faac8be0a4df6aa26048c6747afb3a2ee31504d9b3aa0d6aae19707a2431251f419abf5d4204d2d891b7ea17b487efca1255c768b5537b34efcb223e9cac679329da9a7e78401d9935cb7849d3b5f163b0f2a9344e39d800860ca6d3c9dee941d7f13389901c2f659aa3e6c32f09399941bb9db86c843d3069f99f10baf0c53cbcc78deb950a815e1be3ef1e605aa63f83164c3a50799aaca22341f60484519f109bb075cdfb08e73c5056bf43830e50076a2977b900b2cbdad91c6e70a537d353d0ce3c3697fa10c649286f565df6491bad9407d8def460a7245a8fedb249fb6c85aa14384db2d8b261186e0d277de05b13ee0ab35fc4fa0396d16e3fbea1d639524822a7ce85e9cbb29c9d8c5c30b7895a00b5e89611e488cf98498fc0355ebd2a23f7449a53f7b477cece028812c20cabf27fa897e569e0cc2aeff84af8f0570ded9f037284f260', m: 'adb4f98a1dd1bd7f6bcd3830e44b554b4ba4179c52eb52e70bc9736396d20fba6a66041c03e188e7662cbdcdee75034096fb514d93d790e2f094c39c70482fc36a5171a0e114a4b9d44b2b30aaa64e881b20a839d863fd61d835efaf055e9d9b008c0b7ce680f51c9dea18ff8d2f12b848f916952d8bb520db60e502c2496b6b68d936daaa475e2a21848c59186078edc2d822dce06c374809212a0ca3e48f4ad352157fb5eb52dd5b6f68b9530d092f5b2d4d990d358b80b1a721be86711e51524f4e38f9cbe34dcae714f303864207759cd7f3fe73504cdbad99e3829de1db86bfc24b1dbbf3cf8e9354f18c4c52181be83e569a96f4c6b13f7b00391a03233eca8be0f25ccb50b6b9702a3f7a035beb7efe18f10d600b88f5a5baccfd822784404483c51a867bdb2c70f2fe8ed2afe0a01bdb3dd3b0fc66125f66e46209550a7a09d3f17f7fe3839bb12d8890ad436012ed1d2e6547c048a253e95aa01a618c60e5828fe32262fdc03ac4dc600780a90323c2f61edf3b0f531e294fa43b7f', n: 'b6dbb186434ce2126ed8e32d6bc273603d05e973e9c3fd2978cc8e1e70bca14d4c4fd2c4713f5002f95845faef74c5f7198fa7abfd9ea1faac8be0a4df6aa26048c6747afb3a2ee31504d9b3aa0d6aae19707a2431251f419abf5d4204d2d891b7ea17b487efca1255c768b5537b34efcb223e9cac679329da9a7e78401d9935cb7849d3b5f163b0f2a9344e39d800860ca6d3c9dee941d7f13389901c2f659aa3e6c32f09399941bb9db86c843d3069f99f10baf0c53cbcc78deb950a815e1dce71db43eb81ea740339c3605aab8ea5d0b250dc712a0d1c0807a9706a64cb66bb334f8866ac83696a0e09ff8f06103d7d4a5f439cb7db29499414a6693313cf39a90a76deca6cf8a13acc9e625b4b3aad4ebc7ea76ee322df769812851309514809560925514b36ea63e2e10810f270417b67c54d9cffab0dcf9a5fa6845bba5066165ab9dd757dbe4ff2a5c531e5c6e5757e195f15cb6b97081fd8e978de896449830c166e328989e39942d608bb5c4a0016ec68d393469db057120df7b0c5', diff --git a/modules/sdk-coin-bsv/CHANGELOG.md b/modules/sdk-coin-bsv/CHANGELOG.md index 10c3602aa5..f27629f9ca 100644 --- a/modules/sdk-coin-bsv/CHANGELOG.md +++ b/modules/sdk-coin-bsv/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-bsv@1.3.5...@bitgo/sdk-coin-bsv@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-bsv + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-bsv@1.3.0...@bitgo/sdk-coin-bsv@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-bsv diff --git a/modules/sdk-coin-bsv/package.json b/modules/sdk-coin-bsv/package.json index 91406651c9..7bb3e3cf49 100644 --- a/modules/sdk-coin-bsv/package.json +++ b/modules/sdk-coin-bsv/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-bsv", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Bitcoin sv", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,13 +40,13 @@ ] }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/sdk-coin-bch": "^1.3.5", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/sdk-coin-bch": "^1.3.6", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-btc/CHANGELOG.md b/modules/sdk-coin-btc/CHANGELOG.md index 5fee7e3ada..4e518bc71f 100644 --- a/modules/sdk-coin-btc/CHANGELOG.md +++ b/modules/sdk-coin-btc/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-btc@1.2.5...@bitgo/sdk-coin-btc@1.2.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-btc + ## [1.2.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-btc@1.2.0...@bitgo/sdk-coin-btc@1.2.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-btc diff --git a/modules/sdk-coin-btc/package.json b/modules/sdk-coin-btc/package.json index eb8fc3cb42..97bf1c1b9b 100644 --- a/modules/sdk-coin-btc/package.json +++ b/modules/sdk-coin-btc/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-btc", - "version": "1.2.5", + "version": "1.2.6", "description": "BitGo SDK coin library for Bitcoin", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,12 +40,12 @@ ] }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-btg/CHANGELOG.md b/modules/sdk-coin-btg/CHANGELOG.md index a8c7c98d46..243f6119da 100644 --- a/modules/sdk-coin-btg/CHANGELOG.md +++ b/modules/sdk-coin-btg/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-btg@1.3.5...@bitgo/sdk-coin-btg@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-btg + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-btg@1.3.0...@bitgo/sdk-coin-btg@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-btg diff --git a/modules/sdk-coin-btg/package.json b/modules/sdk-coin-btg/package.json index 7c3b59d4e2..4e62249223 100644 --- a/modules/sdk-coin-btg/package.json +++ b/modules/sdk-coin-btg/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-btg", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Bitcoin Gold", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,12 +40,12 @@ ] }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-celo/CHANGELOG.md b/modules/sdk-coin-celo/CHANGELOG.md index d5590cd904..ff6c5334f1 100644 --- a/modules/sdk-coin-celo/CHANGELOG.md +++ b/modules/sdk-coin-celo/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-celo@1.3.5...@bitgo/sdk-coin-celo@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-celo + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-celo@1.3.0...@bitgo/sdk-coin-celo@1.3.5) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-coin-celo/package.json b/modules/sdk-coin-celo/package.json index 30d5f74423..9c41ed238a 100644 --- a/modules/sdk-coin-celo/package.json +++ b/modules/sdk-coin-celo/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-celo", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Celo", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,10 +40,10 @@ ] }, "dependencies": { - "@bitgo/abstract-eth": "^1.2.5", - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/abstract-eth": "^1.2.6", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@celo/connect": "^2.0.0", "@celo/contractkit": "^2.0.0", "@celo/wallet-base": "^2.0.0", @@ -55,7 +55,7 @@ "ethers": "^5.1.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-cspr/CHANGELOG.md b/modules/sdk-coin-cspr/CHANGELOG.md index eb8d90c1da..e067dfc68c 100644 --- a/modules/sdk-coin-cspr/CHANGELOG.md +++ b/modules/sdk-coin-cspr/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-cspr@1.2.5...@bitgo/sdk-coin-cspr@1.2.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-cspr + ## [1.2.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-cspr@1.2.0...@bitgo/sdk-coin-cspr@1.2.5) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-coin-cspr/package.json b/modules/sdk-coin-cspr/package.json index e64c5311e6..aa2069fdbf 100644 --- a/modules/sdk-coin-cspr/package.json +++ b/modules/sdk-coin-cspr/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-cspr", - "version": "1.2.5", + "version": "1.2.6", "description": "BitGo SDK coin library for Casper", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "@ethersproject/bignumber": "^5.6.0", "@stablelib/hex": "^1.0.0", @@ -51,8 +51,8 @@ "secp256k1": "4.0.2" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "tweetnacl": "^1.0.3" } } diff --git a/modules/sdk-coin-dash/CHANGELOG.md b/modules/sdk-coin-dash/CHANGELOG.md index 8e3074a054..0cc45a5d60 100644 --- a/modules/sdk-coin-dash/CHANGELOG.md +++ b/modules/sdk-coin-dash/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-dash@1.3.5...@bitgo/sdk-coin-dash@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-dash + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-dash@1.3.0...@bitgo/sdk-coin-dash@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-dash diff --git a/modules/sdk-coin-dash/package.json b/modules/sdk-coin-dash/package.json index 75f60ac739..7f14da898a 100644 --- a/modules/sdk-coin-dash/package.json +++ b/modules/sdk-coin-dash/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-dash", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Dash", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,12 +40,12 @@ ] }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-doge/CHANGELOG.md b/modules/sdk-coin-doge/CHANGELOG.md index 647ac65ffd..9a45f64f63 100644 --- a/modules/sdk-coin-doge/CHANGELOG.md +++ b/modules/sdk-coin-doge/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.8.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-doge@1.8.0...@bitgo/sdk-coin-doge@1.8.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-doge + # [1.8.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-doge@1.3.0...@bitgo/sdk-coin-doge@1.8.0) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-coin-doge/package.json b/modules/sdk-coin-doge/package.json index 05f24b06e0..0ff8355978 100644 --- a/modules/sdk-coin-doge/package.json +++ b/modules/sdk-coin-doge/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-doge", - "version": "1.8.0", + "version": "1.8.1", "description": "BitGo SDK coin library for Dogecoin", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,12 +40,12 @@ ] }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-dot/CHANGELOG.md b/modules/sdk-coin-dot/CHANGELOG.md index c7d7de37b4..c1a4e94b44 100644 --- a/modules/sdk-coin-dot/CHANGELOG.md +++ b/modules/sdk-coin-dot/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-dot@2.0.0...@bitgo/sdk-coin-dot@2.0.1) (2022-12-01) + +### Bug Fixes + +- **sdk-coin-dot:** update DOT transferAll value to zero ([5bb9852](https://github.com/BitGo/BitGoJS/commit/5bb98529179121d075090d7d22f1ebf1c4ee7dec)) + # [2.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-dot@1.3.0...@bitgo/sdk-coin-dot@2.0.0) (2022-11-29) ### Features diff --git a/modules/sdk-coin-dot/package.json b/modules/sdk-coin-dot/package.json index 7d28e87b22..9b80c64577 100644 --- a/modules/sdk-coin-dot/package.json +++ b/modules/sdk-coin-dot/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-dot", - "version": "2.0.0", + "version": "2.0.1", "description": "BitGo SDK coin library for Polkadot", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@polkadot/api": "9.3.3", "@polkadot/keyring": "^10.1.8", "@polkadot/types": "9.3.3", @@ -57,8 +57,8 @@ "tweetnacl": "^1.0.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "@types/lodash": "^4.14.151" } } diff --git a/modules/sdk-coin-dot/src/lib/transaction.ts b/modules/sdk-coin-dot/src/lib/transaction.ts index 0bda68cea5..042d191f07 100644 --- a/modules/sdk-coin-dot/src/lib/transaction.ts +++ b/modules/sdk-coin-dot/src/lib/transaction.ts @@ -415,7 +415,7 @@ export class Transaction extends BaseTransaction { pub: Buffer.from(decodeAddress(txMethod.dest.id)).toString('hex'), }); to = keypairDest.getAddress(utils.getAddressFormat(this._coinConfig.name as DotAssetTypes)); - value = 'sweep'; + value = '0'; // DOT transferAll's do not deserialize amounts from = decodedTx.address; } else if (utils.isTransfer(txMethod)) { const keypairDest = new KeyPair({ diff --git a/modules/sdk-coin-dot/test/unit/transactionBuilder/transferBuilder.ts b/modules/sdk-coin-dot/test/unit/transactionBuilder/transferBuilder.ts index 02ff4b2cce..a113f8c526 100644 --- a/modules/sdk-coin-dot/test/unit/transactionBuilder/transferBuilder.ts +++ b/modules/sdk-coin-dot/test/unit/transactionBuilder/transferBuilder.ts @@ -14,6 +14,9 @@ describe('Dot Transfer Builder', () => { const sender = accounts.account1; const receiver = accounts.account2; + // Consolidation/sweep tx's do not deseialize amounts. + const consolidationValue = '0'; + beforeEach(() => { const config = buildTestConfig(); builder = new TransferBuilder(config).material(utils.getMaterial(config)); @@ -344,11 +347,11 @@ describe('Dot Transfer Builder', () => { const inputs = tx.inputs[0]; should.deepEqual(inputs.address, sender.address); - should.deepEqual(inputs.value, 'sweep'); + should.deepEqual(inputs.value, consolidationValue); const outputs = tx.outputs[0]; should.deepEqual(outputs.address, receiver.address); - should.deepEqual(outputs.value, 'sweep'); + should.deepEqual(outputs.value, consolidationValue); }); it('should build an unsigned sweep transaction', async () => { @@ -376,11 +379,11 @@ describe('Dot Transfer Builder', () => { const inputs = tx.inputs[0]; should.deepEqual(inputs.address, sender.address); - should.deepEqual(inputs.value, 'sweep'); + should.deepEqual(inputs.value, consolidationValue); const outputs = tx.outputs[0]; should.deepEqual(outputs.address, receiver.address); - should.deepEqual(outputs.value, 'sweep'); + should.deepEqual(outputs.value, consolidationValue); }); it('should build from raw signed sweep transaction', async () => { @@ -403,11 +406,11 @@ describe('Dot Transfer Builder', () => { const inputs = tx.inputs[0]; should.deepEqual(inputs.address, sender.address); - should.deepEqual(inputs.value, 'sweep'); + should.deepEqual(inputs.value, consolidationValue); const outputs = tx.outputs[0]; should.deepEqual(outputs.address, receiver.address); - should.deepEqual(outputs.value, 'sweep'); + should.deepEqual(outputs.value, consolidationValue); }); it('should build from an unsigned sweep transaction', async () => { @@ -432,11 +435,11 @@ describe('Dot Transfer Builder', () => { const inputs = tx.inputs[0]; should.deepEqual(inputs.address, sender.address); - should.deepEqual(inputs.value, 'sweep'); + should.deepEqual(inputs.value, consolidationValue); const outputs = tx.outputs[0]; should.deepEqual(outputs.address, receiver.address); - should.deepEqual(outputs.value, 'sweep'); + should.deepEqual(outputs.value, consolidationValue); }); }); }); diff --git a/modules/sdk-coin-eos/CHANGELOG.md b/modules/sdk-coin-eos/CHANGELOG.md index 8f4969dac4..6fd26f9c79 100644 --- a/modules/sdk-coin-eos/CHANGELOG.md +++ b/modules/sdk-coin-eos/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-eos@1.3.5...@bitgo/sdk-coin-eos@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-eos + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-eos@1.3.0...@bitgo/sdk-coin-eos@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-eos diff --git a/modules/sdk-coin-eos/package.json b/modules/sdk-coin-eos/package.json index b079516a5b..1a94e66f95 100644 --- a/modules/sdk-coin-eos/package.json +++ b/modules/sdk-coin-eos/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-eos", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Eos", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "bignumber.js": "^9.0.2", "eosjs": "^21.0.2", @@ -50,8 +50,8 @@ "superagent": "^3.8.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "@types/lodash": "^4.14.121" } } diff --git a/modules/sdk-coin-etc/CHANGELOG.md b/modules/sdk-coin-etc/CHANGELOG.md index 5a9de751dd..2e58992d42 100644 --- a/modules/sdk-coin-etc/CHANGELOG.md +++ b/modules/sdk-coin-etc/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-etc@1.2.5...@bitgo/sdk-coin-etc@1.2.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-etc + ## [1.2.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-etc@1.2.0...@bitgo/sdk-coin-etc@1.2.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-etc diff --git a/modules/sdk-coin-etc/package.json b/modules/sdk-coin-etc/package.json index eac016fe43..d2bc5f4663 100644 --- a/modules/sdk-coin-etc/package.json +++ b/modules/sdk-coin-etc/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-etc", - "version": "1.2.5", + "version": "1.2.6", "description": "BitGo SDK coin library for Ethereum classic", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,15 +40,15 @@ ] }, "dependencies": { - "@bitgo/abstract-eth": "^1.2.5", - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/abstract-eth": "^1.2.6", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@ethereumjs/common": "^2.4.0", "ethereumjs-abi": "^0.6.5" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-eth/CHANGELOG.md b/modules/sdk-coin-eth/CHANGELOG.md index 8cd9a6a8d0..57c3eb438f 100644 --- a/modules/sdk-coin-eth/CHANGELOG.md +++ b/modules/sdk-coin-eth/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.7.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-eth@2.7.0...@bitgo/sdk-coin-eth@2.7.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-eth + # [2.7.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-eth@2.2.0...@bitgo/sdk-coin-eth@2.7.0) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-coin-eth/package.json b/modules/sdk-coin-eth/package.json index d6b7c627be..d2c8b36cb7 100644 --- a/modules/sdk-coin-eth/package.json +++ b/modules/sdk-coin-eth/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-eth", - "version": "2.7.0", + "version": "2.7.1", "description": "BitGo SDK coin library for Ethereum", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "@ethereumjs/common": "^2.4.0", "@ethereumjs/tx": "^3.3.0", @@ -57,8 +57,8 @@ "superagent": "^3.8.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "tweetnacl": "^1.0.3" } } diff --git a/modules/sdk-coin-eth2/CHANGELOG.md b/modules/sdk-coin-eth2/CHANGELOG.md index 97957d8f8b..bd7053fa83 100644 --- a/modules/sdk-coin-eth2/CHANGELOG.md +++ b/modules/sdk-coin-eth2/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-eth2@1.2.5...@bitgo/sdk-coin-eth2@1.2.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-eth2 + ## [1.2.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-eth2@1.2.0...@bitgo/sdk-coin-eth2@1.2.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-eth2 diff --git a/modules/sdk-coin-eth2/package.json b/modules/sdk-coin-eth2/package.json index 81f3f3bde0..026b217802 100644 --- a/modules/sdk-coin-eth2/package.json +++ b/modules/sdk-coin-eth2/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-eth2", - "version": "1.2.5", + "version": "1.2.6", "description": "BitGo SDK coin library for Eth2", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,14 +40,14 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/sdk-core": "^4.1.0", "bignumber.js": "^8.0.1", "ethereumjs-util": "7.1.5", "lodash": "^4.17.14", "superagent": "^3.8.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-ethw/CHANGELOG.md b/modules/sdk-coin-ethw/CHANGELOG.md index 3bc01b9211..c088a5121c 100644 --- a/modules/sdk-coin-ethw/CHANGELOG.md +++ b/modules/sdk-coin-ethw/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-ethw@1.3.5...@bitgo/sdk-coin-ethw@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-ethw + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-ethw@1.3.0...@bitgo/sdk-coin-ethw@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-ethw diff --git a/modules/sdk-coin-ethw/package.json b/modules/sdk-coin-ethw/package.json index 2863aa2585..fd9efb53cf 100644 --- a/modules/sdk-coin-ethw/package.json +++ b/modules/sdk-coin-ethw/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-ethw", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Ethereum pow", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,16 +40,16 @@ ] }, "dependencies": { - "@bitgo/abstract-eth": "^1.2.5", - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/abstract-eth": "^1.2.6", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "bignumber.js": "^9.0.0", "ethereumjs-util": "7.1.5", "superagent": "^3.8.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-hbar/CHANGELOG.md b/modules/sdk-coin-hbar/CHANGELOG.md index 6e1d6e5fc3..fe1be75cd2 100644 --- a/modules/sdk-coin-hbar/CHANGELOG.md +++ b/modules/sdk-coin-hbar/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-hbar@1.3.5...@bitgo/sdk-coin-hbar@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-hbar + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-hbar@1.3.0...@bitgo/sdk-coin-hbar@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-hbar diff --git a/modules/sdk-coin-hbar/package.json b/modules/sdk-coin-hbar/package.json index 109eab6325..37fb3426ce 100644 --- a/modules/sdk-coin-hbar/package.json +++ b/modules/sdk-coin-hbar/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-hbar", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Hbar", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,9 +40,9 @@ ] }, "dependencies": { - "@bitgo/sdk-coin-algo": "^1.3.5", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-coin-algo": "^1.3.6", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@hashgraph/proto": "2.0.1-beta.2", "@hashgraph/sdk": "~2.3.0", "@stablelib/sha384": "^1.0.0", @@ -54,7 +54,7 @@ "tweetnacl": "^1.0.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-ltc/CHANGELOG.md b/modules/sdk-coin-ltc/CHANGELOG.md index 78b3830bb0..16fc0f2708 100644 --- a/modules/sdk-coin-ltc/CHANGELOG.md +++ b/modules/sdk-coin-ltc/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-ltc@2.0.0...@bitgo/sdk-coin-ltc@2.0.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-ltc + # [2.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-ltc@1.3.0...@bitgo/sdk-coin-ltc@2.0.0) (2022-11-29) ### Features diff --git a/modules/sdk-coin-ltc/package.json b/modules/sdk-coin-ltc/package.json index 2c0c193479..c305162aac 100644 --- a/modules/sdk-coin-ltc/package.json +++ b/modules/sdk-coin-ltc/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-ltc", - "version": "2.0.0", + "version": "2.0.1", "description": "BitGo SDK coin library for Litecoin", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,12 +40,12 @@ ] }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-near/CHANGELOG.md b/modules/sdk-coin-near/CHANGELOG.md index 6007a2e002..d99c5a3108 100644 --- a/modules/sdk-coin-near/CHANGELOG.md +++ b/modules/sdk-coin-near/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-near@1.3.5...@bitgo/sdk-coin-near@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-near + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-near@1.3.0...@bitgo/sdk-coin-near@1.3.5) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-coin-near/package.json b/modules/sdk-coin-near/package.json index eb6bd0b7f7..d432dbd628 100644 --- a/modules/sdk-coin-near/package.json +++ b/modules/sdk-coin-near/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-near", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Near", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@stablelib/hex": "^1.0.0", "bignumber.js": "^9.0.0", "bn.js": "^5.2.1", @@ -53,8 +53,8 @@ "tweetnacl": "^1.0.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "@types/lodash": "^4.14.121" } } diff --git a/modules/sdk-coin-polygon/CHANGELOG.md b/modules/sdk-coin-polygon/CHANGELOG.md index b95f180739..a9d127e9fc 100644 --- a/modules/sdk-coin-polygon/CHANGELOG.md +++ b/modules/sdk-coin-polygon/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polygon@1.3.5...@bitgo/sdk-coin-polygon@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-polygon + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-polygon@1.3.0...@bitgo/sdk-coin-polygon@1.3.5) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-coin-polygon/package.json b/modules/sdk-coin-polygon/package.json index 9a88ecf48f..2b0a98364e 100644 --- a/modules/sdk-coin-polygon/package.json +++ b/modules/sdk-coin-polygon/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-polygon", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Polygon", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,10 +40,10 @@ ] }, "dependencies": { - "@bitgo/abstract-eth": "^1.2.5", - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/abstract-eth": "^1.2.6", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "@ethereumjs/common": "^2.4.0", "@ethereumjs/tx": "^3.3.0", @@ -53,8 +53,8 @@ "superagent": "^3.8.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "secp256k1": "^4.0.2" } } diff --git a/modules/sdk-coin-rbtc/CHANGELOG.md b/modules/sdk-coin-rbtc/CHANGELOG.md index b657f387db..95b24d19f6 100644 --- a/modules/sdk-coin-rbtc/CHANGELOG.md +++ b/modules/sdk-coin-rbtc/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-rbtc@1.3.5...@bitgo/sdk-coin-rbtc@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-rbtc + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-rbtc@1.3.0...@bitgo/sdk-coin-rbtc@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-rbtc diff --git a/modules/sdk-coin-rbtc/package.json b/modules/sdk-coin-rbtc/package.json index afd91ebf42..2cc0e4e423 100644 --- a/modules/sdk-coin-rbtc/package.json +++ b/modules/sdk-coin-rbtc/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-rbtc", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Rootstock rsk", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,16 +40,16 @@ ] }, "dependencies": { - "@bitgo/abstract-eth": "^1.2.5", - "@bitgo/sdk-coin-eth": "^2.7.0", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/abstract-eth": "^1.2.6", + "@bitgo/sdk-coin-eth": "^2.7.1", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@ethereumjs/common": "^2.4.0", "ethereumjs-abi": "^0.6.5", "ethereumjs-util": "7.1.5" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-sol/CHANGELOG.md b/modules/sdk-coin-sol/CHANGELOG.md index fbe637825f..f1e6307b3c 100644 --- a/modules/sdk-coin-sol/CHANGELOG.md +++ b/modules/sdk-coin-sol/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.3.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-sol@2.2.5...@bitgo/sdk-coin-sol@2.3.0) (2022-12-01) + +### Features + +- **bitgo:** add api version input ([42f353f](https://github.com/BitGo/BitGoJS/commit/42f353f0b33857963d66739d34b0d0cac85e82db)) +- **sdk-coin-sol:** add support for partially unstaking ([bc9680b](https://github.com/BitGo/BitGoJS/commit/bc9680b819045b89b0e8e833e3a8d90bdc302497)) + ## [2.2.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-sol@2.2.0...@bitgo/sdk-coin-sol@2.2.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-sol diff --git a/modules/sdk-coin-sol/package.json b/modules/sdk-coin-sol/package.json index 7ab4b41594..630b1fdeb7 100644 --- a/modules/sdk-coin-sol/package.json +++ b/modules/sdk-coin-sol/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-sol", - "version": "2.2.5", + "version": "2.3.0", "description": "BitGo SDK coin library for Sol", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@solana/spl-token": "0.3.1", "@solana/web3.js": "1.56.0", "bignumber.js": "^9.0.0", @@ -51,8 +51,8 @@ "tweetnacl": "^1.0.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "@types/lodash": "^4.14.121" } } diff --git a/modules/sdk-coin-sol/src/lib/constants.ts b/modules/sdk-coin-sol/src/lib/constants.ts index 73cc6d532d..8d20e1390c 100644 --- a/modules/sdk-coin-sol/src/lib/constants.ts +++ b/modules/sdk-coin-sol/src/lib/constants.ts @@ -19,6 +19,9 @@ export enum ValidInstructionTypesEnum { TokenTransfer = 'TokenTransfer', Memo = 'Memo', InitializeAssociatedTokenAccount = 'InitializeAssociatedTokenAccount', + Allocate = 'Allocate', + Assign = 'Assign', + Split = 'Split', } // Internal instructions types @@ -46,6 +49,9 @@ export const VALID_SYSTEM_INSTRUCTION_TYPES: ValidInstructionTypes[] = [ ValidInstructionTypesEnum.Memo, ValidInstructionTypesEnum.InitializeAssociatedTokenAccount, ValidInstructionTypesEnum.TokenTransfer, + ValidInstructionTypesEnum.Allocate, + ValidInstructionTypesEnum.Assign, + ValidInstructionTypesEnum.Split, ]; /** Const to check the order of the Wallet Init instructions when decode */ @@ -69,6 +75,15 @@ export const stakingDeactivateInstructionsIndexes = { Memo: 1, } as const; +/** Const to check the order of the Partial Staking Deactivate instructions when decoded */ +export const stakingPartialDeactivateInstructionsIndexes = { + Allocate: 0, + Assign: 1, + Split: 2, + Deactivate: 3, + Memo: 4, +} as const; + /** Const to check the order of the Staking Withdraw instructions when decode */ export const stakingWithdrawInstructionsIndexes = { Withdraw: 0, diff --git a/modules/sdk-coin-sol/src/lib/iface.ts b/modules/sdk-coin-sol/src/lib/iface.ts index 928e65cd64..f3ba9a88ea 100644 --- a/modules/sdk-coin-sol/src/lib/iface.ts +++ b/modules/sdk-coin-sol/src/lib/iface.ts @@ -77,7 +77,7 @@ export interface StakingActivate { export interface StakingDeactivate { type: InstructionBuilderTypes.StakingDeactivate; - params: { fromAddress: string; stakingAddress: string }; + params: { fromAddress: string; stakingAddress: string; amount?: string; unstakingAddress?: string }; } export interface StakingWithdraw { diff --git a/modules/sdk-coin-sol/src/lib/instructionParamsFactory.ts b/modules/sdk-coin-sol/src/lib/instructionParamsFactory.ts index 4406802222..60cb6c12ba 100644 --- a/modules/sdk-coin-sol/src/lib/instructionParamsFactory.ts +++ b/modules/sdk-coin-sol/src/lib/instructionParamsFactory.ts @@ -1,8 +1,13 @@ import { + AllocateParams, + AssignParams, CreateAccountParams, + DeactivateStakeParams, DelegateStakeParams, InitializeStakeParams, + SplitStakeParams, StakeInstruction, + StakeProgram, SystemInstruction, TransactionInstruction, } from '@solana/web3.js'; @@ -228,8 +233,15 @@ function validateStakingInstructions(stakingInstructions: StakingInstructions) { } /** - * Parses Solana instructions to create deactivate tx instructions params - * Only supports Nonce, StakingDeactivate, and Memo Solana instructions + * Parses Solana instructions to create deactivate stake tx instructions params. Supports full stake + * account deactivation and partial stake account deactivation. + * + * When partially deactivating a stake account this method expects the following instructions: Allocate, + * to allocate a new staking account, Assign, to assign the newly created staking account to the + * Stake Program, Split, to split the current stake account, and StakingDeactivate to deactivate the + * newly created stake account. + * + * Supports Nonce, StakingDeactivate, Memo, Allocate, Assign, and Split Solana instructions. * * @param {TransactionInstruction[]} instructions - an array of supported Solana instructions * @returns {InstructionParams[]} An array containing instruction params for staking deactivate tx @@ -238,6 +250,7 @@ function parseStakingDeactivateInstructions( instructions: TransactionInstruction[] ): Array { const instructionData: Array = []; + const unstakingInstructions = {} as UnstakingInstructions; for (const instruction of instructions) { const type = getInstructionType(instruction); switch (type) { @@ -261,22 +274,92 @@ function parseStakingDeactivateInstructions( instructionData.push(memo); break; + case ValidInstructionTypesEnum.Allocate: + unstakingInstructions.allocate = SystemInstruction.decodeAllocate(instruction); + break; + + case ValidInstructionTypesEnum.Assign: + unstakingInstructions.assign = SystemInstruction.decodeAssign(instruction); + break; + + case ValidInstructionTypesEnum.Split: + unstakingInstructions.split = StakeInstruction.decodeSplit(instruction); + break; + case ValidInstructionTypesEnum.StakingDeactivate: - const deactivateInstruction = StakeInstruction.decodeDeactivate(instruction); - const stakingDeactivate: StakingDeactivate = { - type: InstructionBuilderTypes.StakingDeactivate, - params: { - fromAddress: deactivateInstruction.authorizedPubkey.toString(), - stakingAddress: deactivateInstruction.stakePubkey.toString(), - }, - }; - instructionData.push(stakingDeactivate); + unstakingInstructions.deactivate = StakeInstruction.decodeDeactivate(instruction); break; } } + + validateUnstakingInstructions(unstakingInstructions); + const stakingDeactivate: StakingDeactivate = { + type: InstructionBuilderTypes.StakingDeactivate, + params: { + fromAddress: unstakingInstructions.deactivate?.authorizedPubkey.toString() || '', + stakingAddress: + unstakingInstructions.split?.stakePubkey.toString() || + unstakingInstructions.deactivate?.stakePubkey.toString() || + '', + amount: unstakingInstructions.split?.lamports.toString(), + unstakingAddress: unstakingInstructions.split?.splitStakePubkey.toString(), + }, + }; + instructionData.push(stakingDeactivate); + return instructionData; } +interface UnstakingInstructions { + allocate?: AllocateParams; + assign?: AssignParams; + split?: SplitStakeParams; + deactivate?: DeactivateStakeParams; +} + +function validateUnstakingInstructions(unstakingInstructions: UnstakingInstructions) { + if (!unstakingInstructions.deactivate) { + throw new NotSupported('Invalid deactivate stake transaction, missing deactivate stake account instruction'); + } else if (unstakingInstructions.allocate || unstakingInstructions.assign || unstakingInstructions.split) { + if (!unstakingInstructions.allocate) { + throw new NotSupported( + 'Invalid partial deactivate stake transaction, missing allocate unstake account instruction' + ); + } else if (!unstakingInstructions.assign) { + throw new NotSupported( + 'Invalid partial deactivate stake transaction, missing assign unstake account instruction' + ); + } else if (!unstakingInstructions.split) { + throw new NotSupported('Invalid partial deactivate stake transaction, missing split stake account instruction'); + } else if ( + unstakingInstructions.allocate.accountPubkey.toString() !== unstakingInstructions.assign.accountPubkey.toString() + ) { + throw new NotSupported( + 'Invalid partial deactivate stake transaction, must allocate and assign the same public key' + ); + } else if (unstakingInstructions.allocate.space !== StakeProgram.space) { + throw new NotSupported( + `Invalid partial deactivate stake transaction, unstaking account must allocate ${StakeProgram.space} bytes` + ); + } else if (unstakingInstructions.assign.programId.toString() !== StakeProgram.programId.toString()) { + throw new NotSupported( + 'Invalid partial deactivate stake transaction, the unstake account must be assigned to the Stake Program' + ); + } else if ( + unstakingInstructions.allocate.accountPubkey.toString() !== + unstakingInstructions.split.splitStakePubkey.toString() + ) { + throw new NotSupported('Invalid partial deactivate stake transaction, must allocate the unstaking account'); + } else if ( + unstakingInstructions.split.stakePubkey.toString() === unstakingInstructions.split.splitStakePubkey.toString() + ) { + throw new NotSupported( + 'Invalid partial deactivate stake transaction, the unstaking account must be different from the Stake Account' + ); + } + } +} + /** * Parses Solana instructions to create staking withdraw tx instructions params * Only supports Nonce, StakingWithdraw, and Memo Solana instructions diff --git a/modules/sdk-coin-sol/src/lib/solInstructionFactory.ts b/modules/sdk-coin-sol/src/lib/solInstructionFactory.ts index 0c3802f71c..3f046947f7 100644 --- a/modules/sdk-coin-sol/src/lib/solInstructionFactory.ts +++ b/modules/sdk-coin-sol/src/lib/solInstructionFactory.ts @@ -218,12 +218,45 @@ function stakingDeactivateInstruction(data: StakingDeactivate): TransactionInstr assert(fromAddress, 'Missing fromAddress param'); assert(stakingAddress, 'Missing stakingAddress param'); - const deactivateStaking = StakeProgram.deactivate({ - stakePubkey: new PublicKey(stakingAddress), - authorizedPubkey: new PublicKey(fromAddress), - }); + if (data.params.amount && data.params.unstakingAddress) { + const tx = new Transaction(); + + const unstakingAddress = new PublicKey(data.params.unstakingAddress); + const allocateAccount = SystemProgram.allocate({ + accountPubkey: unstakingAddress, + space: StakeProgram.space, + }); + tx.add(allocateAccount); + + const assignAccount = SystemProgram.assign({ + accountPubkey: unstakingAddress, + programId: StakeProgram.programId, + }); + tx.add(assignAccount); - return deactivateStaking.instructions; + const splitStake = StakeProgram.split({ + stakePubkey: new PublicKey(stakingAddress), + authorizedPubkey: new PublicKey(fromAddress), + splitStakePubkey: unstakingAddress, + lamports: new BigNumber(data.params.amount).toNumber(), + }); + tx.add(splitStake.instructions[1]); + + const deactivateStaking = StakeProgram.deactivate({ + stakePubkey: unstakingAddress, + authorizedPubkey: new PublicKey(fromAddress), + }); + tx.add(deactivateStaking); + + return tx.instructions; + } else { + const deactivateStaking = StakeProgram.deactivate({ + stakePubkey: new PublicKey(stakingAddress), + authorizedPubkey: new PublicKey(fromAddress), + }); + + return deactivateStaking.instructions; + } } /** diff --git a/modules/sdk-coin-sol/src/lib/stakingDeactivateBuilder.ts b/modules/sdk-coin-sol/src/lib/stakingDeactivateBuilder.ts index 3897b85bd5..3de9be0f23 100644 --- a/modules/sdk-coin-sol/src/lib/stakingDeactivateBuilder.ts +++ b/modules/sdk-coin-sol/src/lib/stakingDeactivateBuilder.ts @@ -6,10 +6,12 @@ import { InstructionBuilderTypes } from './constants'; import { StakingDeactivate } from './iface'; import { Transaction } from './transaction'; import { TransactionBuilder } from './transactionBuilder'; -import { validateAddress } from './utils'; +import { isValidStakingAmount, validateAddress } from './utils'; export class StakingDeactivateBuilder extends TransactionBuilder { protected _stakingAddress: string; + protected _amount?: string; + protected _unstakingAddress: string; constructor(_coinConfig: Readonly) { super(_coinConfig); @@ -27,6 +29,10 @@ export class StakingDeactivateBuilder extends TransactionBuilder { const deactivateInstruction: StakingDeactivate = instruction; this.sender(deactivateInstruction.params.fromAddress); this.stakingAddress(deactivateInstruction.params.stakingAddress); + if (deactivateInstruction.params.amount && deactivateInstruction.params.unstakingAddress) { + this.amount(deactivateInstruction.params.amount); + this.unstakingAddress(deactivateInstruction.params.unstakingAddress); + } } } } @@ -45,6 +51,38 @@ export class StakingDeactivateBuilder extends TransactionBuilder { return this; } + /** + * Optional amount to unstake expressed in Lamports, 1 SOL = 1_000_000_000 lamports, to be used + * when partially unstaking. If not given then the entire staked amount will be unstaked. + * + * @param {string} amount The partial amount to unstake, expressed in Lamports. + * @returns {StakingDeactivateBuilder} This staking builder. + * + * @see https://docs.solana.com/cli/delegate-stake#split-stake + */ + amount(amount: string): this { + if (!isValidStakingAmount(amount)) { + throw new BuildTransactionError('If given, amount cannot be zero or less'); + } + this._amount = amount; + return this; + } + + /** + * When partially unstaking move the amount to unstake to this account and initiate the + * unstake process. The original stake account will continue staking. + * + * @param {string} unstakingAddress An account used to unstake a partial amount. + * @returns {StakingDeactivateBuilder} This staking builder. + * + * @see https://docs.solana.com/cli/delegate-stake#split-stake + */ + unstakingAddress(unstakingAddress: string): this { + validateAddress(unstakingAddress, 'unstakingAddress'); + this._unstakingAddress = unstakingAddress; + return this; + } + /** @inheritdoc */ protected async buildImplementation(): Promise { assert(this._sender, 'Sender must be set before building the transaction'); @@ -54,11 +92,27 @@ export class StakingDeactivateBuilder extends TransactionBuilder { throw new BuildTransactionError('Sender address cannot be the same as the Staking address'); } + if (this._amount) { + assert( + this._unstakingAddress, + 'When partially unstaking the unstaking address must be set before building the transaction' + ); + } + + if (this._unstakingAddress) { + assert( + this._amount, + 'If an unstaking address is given then a partial amount to unstake must also be set before building the transaction' + ); + } + const stakingDeactivateData: StakingDeactivate = { type: InstructionBuilderTypes.StakingDeactivate, params: { fromAddress: this._sender, stakingAddress: this._stakingAddress, + amount: this._amount, + unstakingAddress: this._unstakingAddress, }, }; this._instructionsData = [stakingDeactivateData]; diff --git a/modules/sdk-coin-sol/src/lib/transaction.ts b/modules/sdk-coin-sol/src/lib/transaction.ts index 83e4eb35f1..ad73da6e09 100644 --- a/modules/sdk-coin-sol/src/lib/transaction.ts +++ b/modules/sdk-coin-sol/src/lib/transaction.ts @@ -282,6 +282,20 @@ export class Transaction extends BaseTransaction { coin: this._coinConfig.name, }); break; + case InstructionBuilderTypes.StakingDeactivate: + if (instruction.params.amount && instruction.params.unstakingAddress) { + inputs.push({ + address: instruction.params.stakingAddress, + value: instruction.params.amount, + coin: this._coinConfig.name, + }); + outputs.push({ + address: instruction.params.unstakingAddress, + value: instruction.params.amount, + coin: this._coinConfig.name, + }); + } + break; case InstructionBuilderTypes.StakingWithdraw: inputs.push({ address: instruction.params.stakingAddress, diff --git a/modules/sdk-coin-sol/src/lib/utils.ts b/modules/sdk-coin-sol/src/lib/utils.ts index a3cfaecd24..a38407945d 100644 --- a/modules/sdk-coin-sol/src/lib/utils.ts +++ b/modules/sdk-coin-sol/src/lib/utils.ts @@ -17,6 +17,7 @@ import { MEMO_PROGRAM_PK, stakingActivateInstructionsIndexes, stakingDeactivateInstructionsIndexes, + stakingPartialDeactivateInstructionsIndexes, stakingWithdrawInstructionsIndexes, VALID_SYSTEM_INSTRUCTION_TYPES, walletInitInstructionIndexes, @@ -253,7 +254,10 @@ export function getTransactionType(transaction: SolTransaction): TransactionType return TransactionType.WalletInitialization; } else if (matchTransactionTypeByInstructionsOrder(instructions, stakingActivateInstructionsIndexes)) { return TransactionType.StakingActivate; - } else if (matchTransactionTypeByInstructionsOrder(instructions, stakingDeactivateInstructionsIndexes)) { + } else if ( + matchTransactionTypeByInstructionsOrder(instructions, stakingDeactivateInstructionsIndexes) || + matchTransactionTypeByInstructionsOrder(instructions, stakingPartialDeactivateInstructionsIndexes) + ) { return TransactionType.StakingDeactivate; } else if (matchTransactionTypeByInstructionsOrder(instructions, stakingWithdrawInstructionsIndexes)) { return TransactionType.StakingWithdraw; diff --git a/modules/sdk-coin-sol/src/sol.ts b/modules/sdk-coin-sol/src/sol.ts index 92d6c42549..765d00ad70 100644 --- a/modules/sdk-coin-sol/src/sol.ts +++ b/modules/sdk-coin-sol/src/sol.ts @@ -453,11 +453,21 @@ export class Sol extends BaseCoin { await tssUtils!.deleteSignatureShares(txRequestId); const recreated = await tssUtils!.getTxRequest(txRequestId); + let txHex = ''; + if (recreated.unsignedTxs) { + txHex = recreated.unsignedTxs[0]?.serializedTxHex; + } else { + txHex = recreated.transactions ? recreated.transactions[0]?.unsignedTx.serializedTxHex : ''; + } + + if (!txHex) { + throw new Error('Missing serialized tx hex'); + } return Promise.resolve({ ...params, txPrebuild: recreated, - txHex: recreated.unsignedTxs[0].serializedTxHex, + txHex, }); } diff --git a/modules/sdk-coin-sol/test/resources/sol.ts b/modules/sdk-coin-sol/test/resources/sol.ts index 7dab138ab8..ac28274bc4 100644 --- a/modules/sdk-coin-sol/test/resources/sol.ts +++ b/modules/sdk-coin-sol/test/resources/sol.ts @@ -132,6 +132,11 @@ export const stakeAccount = { prv: '4ite94au3Xm6mYSvVYnLR6i6xRhQZxKKwnGwHCff4LABvNrtetGHQB4WgqH3Crmwhg8onYNmvUUPgCx3xei8KXTn', }; +export const splitStakeAccount = { + pub: 'GfSDXY4vJy6bFui8Gaj5jq9HX4QfH8WG9ocgqUnos1on', + prv: '3xXW4uLJR3EtGLk4vYuE4vTvgFhX35w19zg9ea8dUDMhJDaZsdmCfnkKdtX2VCu6tE8zf9z8a6tiiUQxq6BtZ4EU', +}; + export const validator = { pub: 'CyjoLt3kjqB57K7ewCBHmnHq3UgEj3ak6A7m6EsBsuhA', }; @@ -151,6 +156,9 @@ export const STAKING_ACTIVATE_UNSIGNED_TX_WITH_MEMO = export const STAKING_DEACTIVATE_SIGNED_TX = 'AUfyWtl4IUxhH21qX/H03hJZer1XxQaxL2r/uDTM/u1GzBIyePCHu78O2SkWGEYP6eDdiY3OLfJmUM1jiy8NCAoBAAIEReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Fiey+6ASdh+bkZvPlMu0ydyAUdnwkymTFNOUkjMmi96Qah2BeRN1QqmDQ3vf4qerJVf1NcinhyK2ikncAAAAAABqfVFxjHdMkoVmOYaR1etoteuKObS21cc1VbIQAAAADjMtr5L6vs6LY/96RABeX9/Zr6FYdWthxalfkEs7jQgQECAwEDAAQFAAAA'; +export const STAKING_PARTIAL_DEACTIVATE_SIGNED_TX = + 'AvFKse62LaYOlwErP8geaXC89KdL4oOu2QIOzaIZJoAxyExvLg6GjQ+Q6IHTq1Yl/k1av4fBK0ypSz+CqT6xJg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgADBkXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItB6Lfi7T4mzoclKbPedsv+JDs60KtRcBK6Y7CHyYejKiliey+6ASdh+bkZvPlMu0ydyAUdnwkymTFNOUkjMmi96QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqHYF5E3VCqYNDe9/ip6slV/U1yKeHIraKSdwAAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAOMy2vkvq+zotj/3pEAF5f39mvoVh1a2HFqV+QSzuNCBBAMBAQwIAAAAyAAAAAAAAAADAQEkAQAAAAah2BeRN1QqmDQ3vf4qerJVf1NcinhyK2ikncAAAAAABAMCAQAMAwAAAKCGAQAAAAAABAMBBQAEBQAAAA=='; + export const STAKING_DEACTIVATE_SIGNED_TX_WITH_MEMO = 'AeTmxB2u4ZimCO5xY3MZujxpifmALh/huWguQyojBCerRAUHX+z3atYMIDLPVSmPNdhfznnHZzkZPsCwfQW1mg4BAAMFReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Fiey+6ASdh+bkZvPlMu0ydyAUdnwkymTFNOUkjMmi96QVKU1qZKSEGTSTocWDaOHx8NbXdvJK7geQfqEBBBUSNBqHYF5E3VCqYNDe9/ip6slV/U1yKeHIraKSdwAAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAOMy2vkvq+zotj/3pEAF5f39mvoVh1a2HFqV+QSzuNCBAgMDAQQABAUAAAACAA9UZXN0IGRlYWN0aXZhdGU='; diff --git a/modules/sdk-coin-sol/test/unit/instructionParamsFactory.staking.ts b/modules/sdk-coin-sol/test/unit/instructionParamsFactory.staking.ts index 80991e6496..e970f89d6c 100644 --- a/modules/sdk-coin-sol/test/unit/instructionParamsFactory.staking.ts +++ b/modules/sdk-coin-sol/test/unit/instructionParamsFactory.staking.ts @@ -4,7 +4,14 @@ import { instructionParamsFactory } from '../../src/lib/instructionParamsFactory import { TransactionType } from '@bitgo/sdk-core'; import { InstructionParams, Nonce, StakingActivate, StakingDeactivate, StakingWithdraw } from '../../src/lib/iface'; import { InstructionBuilderTypes, MEMO_PROGRAM_PK } from '../../src/lib/constants'; -import { Lockup, PublicKey, StakeProgram, SystemProgram, TransactionInstruction } from '@solana/web3.js'; +import { + Keypair as SolKeypair, + Lockup, + PublicKey, + StakeProgram, + SystemProgram, + TransactionInstruction, +} from '@solana/web3.js'; import BigNumber from 'bignumber.js'; describe('Instruction Parser Staking Tests: ', function () { @@ -314,6 +321,8 @@ describe('Instruction Parser Staking Tests: ', function () { params: { fromAddress: fromAccount.toString(), stakingAddress: stakingAccount.toString(), + amount: undefined, + unstakingAddress: undefined, }, }; @@ -323,7 +332,7 @@ describe('Instruction Parser Staking Tests: ', function () { }; const instructions = [nonceAdvanceInstruction, ...stakingDeactivateInstructions, memoInstruction]; - const instructionsData = [nonceAdvanceParams, stakingDeactivateParams, memoParams]; + const instructionsData = [nonceAdvanceParams, memoParams, stakingDeactivateParams]; const result = instructionParamsFactory(TransactionType.StakingDeactivate, instructions); should.deepEqual(result, instructionsData); }); @@ -362,6 +371,8 @@ describe('Instruction Parser Staking Tests: ', function () { params: { fromAddress: fromAccount.toString(), stakingAddress: stakingAccount.toString(), + amount: undefined, + unstakingAddress: undefined, }, }; @@ -371,7 +382,7 @@ describe('Instruction Parser Staking Tests: ', function () { }; const instructions = [memoInstruction, ...stakingDeactivateInstructions, nonceAdvanceInstruction]; - const instructionsData = [memoParams, stakingDeactivateParams, nonceAdvanceParams]; + const instructionsData = [memoParams, nonceAdvanceParams, stakingDeactivateParams]; const result = instructionParamsFactory(TransactionType.StakingDeactivate, instructions); should.deepEqual(result, instructionsData); }); @@ -392,6 +403,8 @@ describe('Instruction Parser Staking Tests: ', function () { params: { fromAddress: fromAccount.toString(), stakingAddress: stakingAccount.toString(), + amount: undefined, + unstakingAddress: undefined, }, }; @@ -436,6 +449,8 @@ describe('Instruction Parser Staking Tests: ', function () { params: { fromAddress: fromAccount.toString(), stakingAddress: stakingAccount.toString(), + amount: undefined, + unstakingAddress: undefined, }, }; @@ -448,6 +463,499 @@ describe('Instruction Parser Staking Tests: ', function () { const result = instructionParamsFactory(TransactionType.StakingDeactivate, instructions); should.deepEqual(result, instructionsData); }); + + describe('Partially deactivate stake instructions', function () { + describe('Input validation', function () { + it('Should throw an error if the Allocate instruction is missing', () => { + const fromAccount = new PublicKey(testData.authAccount.pub); + const nonceAccount = testData.nonceAccount.pub; + const stakingAccount = new PublicKey(testData.stakeAccount.pub); + const splitStakeAccount = new PublicKey(testData.splitStakeAccount.pub); + const memo = 'test memo'; + + // Instructions + const nonceAdvanceInstruction = SystemProgram.nonceAdvance({ + noncePubkey: new PublicKey(nonceAccount), + authorizedPubkey: fromAccount, + }); + + const assignInstruction = SystemProgram.assign({ + accountPubkey: splitStakeAccount, + programId: StakeProgram.programId, + }); + + const splitInstructions = StakeProgram.split({ + stakePubkey: stakingAccount, + authorizedPubkey: fromAccount, + splitStakePubkey: splitStakeAccount, + lamports: 100000, + }).instructions; + + const stakingDeactivateInstructions = StakeProgram.deactivate({ + authorizedPubkey: fromAccount, + stakePubkey: splitStakeAccount, + }).instructions; + + const memoInstruction = new TransactionInstruction({ + keys: [], + programId: new PublicKey(MEMO_PROGRAM_PK), + data: Buffer.from(memo), + }); + + const instructions = [ + nonceAdvanceInstruction, + assignInstruction, + ...splitInstructions, + ...stakingDeactivateInstructions, + memoInstruction, + ]; + should(() => instructionParamsFactory(TransactionType.StakingDeactivate, instructions)).throw( + 'Invalid partial deactivate stake transaction, missing allocate unstake account instruction' + ); + }); + + it('Should throw an error if the Assign instruction is missing', () => { + const fromAccount = new PublicKey(testData.authAccount.pub); + const nonceAccount = testData.nonceAccount.pub; + const stakingAccount = new PublicKey(testData.stakeAccount.pub); + const splitStakeAccount = new PublicKey(testData.splitStakeAccount.pub); + const memo = 'test memo'; + + // Instructions + const nonceAdvanceInstruction = SystemProgram.nonceAdvance({ + noncePubkey: new PublicKey(nonceAccount), + authorizedPubkey: fromAccount, + }); + + const allocateInstruction = SystemProgram.allocate({ + accountPubkey: splitStakeAccount, + space: StakeProgram.space, + }); + + const splitInstructions = StakeProgram.split({ + stakePubkey: stakingAccount, + authorizedPubkey: fromAccount, + splitStakePubkey: splitStakeAccount, + lamports: 100000, + }).instructions; + + const stakingDeactivateInstructions = StakeProgram.deactivate({ + authorizedPubkey: fromAccount, + stakePubkey: splitStakeAccount, + }).instructions; + + const memoInstruction = new TransactionInstruction({ + keys: [], + programId: new PublicKey(MEMO_PROGRAM_PK), + data: Buffer.from(memo), + }); + + const instructions = [ + nonceAdvanceInstruction, + allocateInstruction, + ...splitInstructions, + ...stakingDeactivateInstructions, + memoInstruction, + ]; + should(() => instructionParamsFactory(TransactionType.StakingDeactivate, instructions)).throw( + 'Invalid partial deactivate stake transaction, missing assign unstake account instruction' + ); + }); + + it('Should throw an error if the Split instruction is missing', () => { + const fromAccount = new PublicKey(testData.authAccount.pub); + const nonceAccount = testData.nonceAccount.pub; + const splitStakeAccount = new PublicKey(testData.splitStakeAccount.pub); + const memo = 'test memo'; + + // Instructions + const nonceAdvanceInstruction = SystemProgram.nonceAdvance({ + noncePubkey: new PublicKey(nonceAccount), + authorizedPubkey: fromAccount, + }); + + const allocateInstruction = SystemProgram.allocate({ + accountPubkey: splitStakeAccount, + space: StakeProgram.space, + }); + + const assignInstruction = SystemProgram.assign({ + accountPubkey: splitStakeAccount, + programId: StakeProgram.programId, + }); + + const stakingDeactivateInstructions = StakeProgram.deactivate({ + authorizedPubkey: fromAccount, + stakePubkey: splitStakeAccount, + }).instructions; + + const memoInstruction = new TransactionInstruction({ + keys: [], + programId: new PublicKey(MEMO_PROGRAM_PK), + data: Buffer.from(memo), + }); + + const instructions = [ + nonceAdvanceInstruction, + allocateInstruction, + assignInstruction, + ...stakingDeactivateInstructions, + memoInstruction, + ]; + should(() => instructionParamsFactory(TransactionType.StakingDeactivate, instructions)).throw( + 'Invalid partial deactivate stake transaction, missing split stake account instruction' + ); + }); + + it('Should throw an error if the allocated account does not match the assigned account', () => { + const fromAccount = new PublicKey(testData.authAccount.pub); + const nonceAccount = testData.nonceAccount.pub; + const stakingAccount = new PublicKey(testData.stakeAccount.pub); + const splitStakeAccount = new PublicKey(testData.splitStakeAccount.pub); + const memo = 'test memo'; + + // Instructions + const nonceAdvanceInstruction = SystemProgram.nonceAdvance({ + noncePubkey: new PublicKey(nonceAccount), + authorizedPubkey: fromAccount, + }); + + const allocateInstruction = SystemProgram.allocate({ + accountPubkey: new SolKeypair().publicKey, + space: StakeProgram.space, + }); + + const assignInstruction = SystemProgram.assign({ + accountPubkey: splitStakeAccount, + programId: StakeProgram.programId, + }); + + const splitInstructions = StakeProgram.split({ + stakePubkey: stakingAccount, + authorizedPubkey: fromAccount, + splitStakePubkey: splitStakeAccount, + lamports: 100000, + }).instructions; + + const stakingDeactivateInstructions = StakeProgram.deactivate({ + authorizedPubkey: fromAccount, + stakePubkey: splitStakeAccount, + }).instructions; + + const memoInstruction = new TransactionInstruction({ + keys: [], + programId: new PublicKey(MEMO_PROGRAM_PK), + data: Buffer.from(memo), + }); + + const instructions = [ + nonceAdvanceInstruction, + allocateInstruction, + assignInstruction, + ...splitInstructions, + ...stakingDeactivateInstructions, + memoInstruction, + ]; + should(() => instructionParamsFactory(TransactionType.StakingDeactivate, instructions)).throw( + 'Invalid partial deactivate stake transaction, must allocate and assign the same public key' + ); + }); + + [199, 201].forEach((space) => { + it(`Should throw an error if the correct amount of space is not allocated for the split account - ${space}`, () => { + const fromAccount = new PublicKey(testData.authAccount.pub); + const nonceAccount = testData.nonceAccount.pub; + const stakingAccount = new PublicKey(testData.stakeAccount.pub); + const splitStakeAccount = new PublicKey(testData.splitStakeAccount.pub); + const memo = 'test memo'; + + // Instructions + const nonceAdvanceInstruction = SystemProgram.nonceAdvance({ + noncePubkey: new PublicKey(nonceAccount), + authorizedPubkey: fromAccount, + }); + + const allocateInstruction = SystemProgram.allocate({ + accountPubkey: splitStakeAccount, + space, + }); + + const assignInstruction = SystemProgram.assign({ + accountPubkey: splitStakeAccount, + programId: StakeProgram.programId, + }); + + const splitInstructions = StakeProgram.split({ + stakePubkey: stakingAccount, + authorizedPubkey: fromAccount, + splitStakePubkey: splitStakeAccount, + lamports: 100000, + }).instructions; + + const stakingDeactivateInstructions = StakeProgram.deactivate({ + authorizedPubkey: fromAccount, + stakePubkey: splitStakeAccount, + }).instructions; + + const memoInstruction = new TransactionInstruction({ + keys: [], + programId: new PublicKey(MEMO_PROGRAM_PK), + data: Buffer.from(memo), + }); + + const instructions = [ + nonceAdvanceInstruction, + allocateInstruction, + assignInstruction, + ...splitInstructions, + ...stakingDeactivateInstructions, + memoInstruction, + ]; + should(() => instructionParamsFactory(TransactionType.StakingDeactivate, instructions)).throw( + `Invalid partial deactivate stake transaction, unstaking account must allocate ${StakeProgram.space} bytes` + ); + }); + }); + + it('Should throw an error if the allocated account is not assigned to the StakeProgram', () => { + const fromAccount = new PublicKey(testData.authAccount.pub); + const nonceAccount = testData.nonceAccount.pub; + const stakingAccount = new PublicKey(testData.stakeAccount.pub); + const splitStakeAccount = new PublicKey(testData.splitStakeAccount.pub); + const memo = 'test memo'; + + // Instructions + const nonceAdvanceInstruction = SystemProgram.nonceAdvance({ + noncePubkey: new PublicKey(nonceAccount), + authorizedPubkey: fromAccount, + }); + + const allocateInstruction = SystemProgram.allocate({ + accountPubkey: splitStakeAccount, + space: StakeProgram.space, + }); + + const assignInstruction = SystemProgram.assign({ + accountPubkey: splitStakeAccount, + programId: SystemProgram.programId, + }); + + const splitInstructions = StakeProgram.split({ + stakePubkey: stakingAccount, + authorizedPubkey: fromAccount, + splitStakePubkey: splitStakeAccount, + lamports: 100000, + }).instructions; + + const stakingDeactivateInstructions = StakeProgram.deactivate({ + authorizedPubkey: fromAccount, + stakePubkey: splitStakeAccount, + }).instructions; + + const memoInstruction = new TransactionInstruction({ + keys: [], + programId: new PublicKey(MEMO_PROGRAM_PK), + data: Buffer.from(memo), + }); + + const instructions = [ + nonceAdvanceInstruction, + allocateInstruction, + assignInstruction, + ...splitInstructions, + ...stakingDeactivateInstructions, + memoInstruction, + ]; + should(() => instructionParamsFactory(TransactionType.StakingDeactivate, instructions)).throw( + 'Invalid partial deactivate stake transaction, the unstake account must be assigned to the Stake Program' + ); + }); + + it('Should throw an error if the split account is not allocated', () => { + const fromAccount = new PublicKey(testData.authAccount.pub); + const nonceAccount = testData.nonceAccount.pub; + const stakingAccount = new PublicKey(testData.stakeAccount.pub); + const splitStakeAccount = new PublicKey(testData.splitStakeAccount.pub); + const memo = 'test memo'; + + // Instructions + const nonceAdvanceInstruction = SystemProgram.nonceAdvance({ + noncePubkey: new PublicKey(nonceAccount), + authorizedPubkey: fromAccount, + }); + + const key = new SolKeypair().publicKey; + const allocateInstruction = SystemProgram.allocate({ + accountPubkey: key, + space: StakeProgram.space, + }); + + const assignInstruction = SystemProgram.assign({ + accountPubkey: key, + programId: StakeProgram.programId, + }); + + const splitInstructions = StakeProgram.split({ + stakePubkey: stakingAccount, + authorizedPubkey: fromAccount, + splitStakePubkey: stakingAccount, + lamports: 100000, + }).instructions; + + const stakingDeactivateInstructions = StakeProgram.deactivate({ + authorizedPubkey: fromAccount, + stakePubkey: splitStakeAccount, + }).instructions; + + const memoInstruction = new TransactionInstruction({ + keys: [], + programId: new PublicKey(MEMO_PROGRAM_PK), + data: Buffer.from(memo), + }); + + const instructions = [ + nonceAdvanceInstruction, + allocateInstruction, + assignInstruction, + ...splitInstructions, + ...stakingDeactivateInstructions, + memoInstruction, + ]; + should(() => instructionParamsFactory(TransactionType.StakingDeactivate, instructions)).throw( + 'Invalid partial deactivate stake transaction, must allocate the unstaking account' + ); + }); + + it('Should throw an error if the stake account and the split account are the same account', () => { + const fromAccount = new PublicKey(testData.authAccount.pub); + const nonceAccount = testData.nonceAccount.pub; + const stakingAccount = new PublicKey(testData.stakeAccount.pub); + const splitStakeAccount = new PublicKey(testData.splitStakeAccount.pub); + const memo = 'test memo'; + + // Instructions + const nonceAdvanceInstruction = SystemProgram.nonceAdvance({ + noncePubkey: new PublicKey(nonceAccount), + authorizedPubkey: fromAccount, + }); + + const allocateInstruction = SystemProgram.allocate({ + accountPubkey: stakingAccount, + space: StakeProgram.space, + }); + + const assignInstruction = SystemProgram.assign({ + accountPubkey: stakingAccount, + programId: StakeProgram.programId, + }); + + const splitInstructions = StakeProgram.split({ + stakePubkey: stakingAccount, + authorizedPubkey: fromAccount, + splitStakePubkey: stakingAccount, + lamports: 100000, + }).instructions; + + const stakingDeactivateInstructions = StakeProgram.deactivate({ + authorizedPubkey: fromAccount, + stakePubkey: splitStakeAccount, + }).instructions; + + const memoInstruction = new TransactionInstruction({ + keys: [], + programId: new PublicKey(MEMO_PROGRAM_PK), + data: Buffer.from(memo), + }); + + const instructions = [ + nonceAdvanceInstruction, + allocateInstruction, + assignInstruction, + ...splitInstructions, + ...stakingDeactivateInstructions, + memoInstruction, + ]; + should(() => instructionParamsFactory(TransactionType.StakingDeactivate, instructions)).throw( + 'Invalid partial deactivate stake transaction, the unstaking account must be different from the Stake Account' + ); + }); + }); + + it('Should parse partial deactivate stake tx instructions with memo and durable nonce', () => { + const fromAccount = new PublicKey(testData.authAccount.pub); + const nonceAccount = testData.nonceAccount.pub; + const stakingAccount = new PublicKey(testData.stakeAccount.pub); + const splitStakeAccount = new PublicKey(testData.splitStakeAccount.pub); + const memo = 'test memo'; + + // Instructions + const nonceAdvanceInstruction = SystemProgram.nonceAdvance({ + noncePubkey: new PublicKey(nonceAccount), + authorizedPubkey: fromAccount, + }); + + const allocateInstruction = SystemProgram.allocate({ + accountPubkey: splitStakeAccount, + space: StakeProgram.space, + }); + + const assignInstruction = SystemProgram.assign({ + accountPubkey: splitStakeAccount, + programId: StakeProgram.programId, + }); + + const splitInstructions = StakeProgram.split({ + stakePubkey: stakingAccount, + authorizedPubkey: fromAccount, + splitStakePubkey: splitStakeAccount, + lamports: 100000, + }).instructions; + + const stakingDeactivateInstructions = StakeProgram.deactivate({ + authorizedPubkey: fromAccount, + stakePubkey: splitStakeAccount, + }).instructions; + + const memoInstruction = new TransactionInstruction({ + keys: [], + programId: new PublicKey(MEMO_PROGRAM_PK), + data: Buffer.from(memo), + }); + + // Params + const nonceAdvanceParams: Nonce = { + type: InstructionBuilderTypes.NonceAdvance, + params: { walletNonceAddress: nonceAccount, authWalletAddress: fromAccount.toString() }, + }; + + const stakingDeactivateParams: StakingDeactivate = { + type: InstructionBuilderTypes.StakingDeactivate, + params: { + fromAddress: fromAccount.toString(), + stakingAddress: stakingAccount.toString(), + amount: '100000', + unstakingAddress: splitStakeAccount.toString(), + }, + }; + + const memoParams: InstructionParams = { + type: InstructionBuilderTypes.Memo, + params: { memo }, + }; + + const instructions = [ + nonceAdvanceInstruction, + allocateInstruction, + assignInstruction, + ...splitInstructions, + ...stakingDeactivateInstructions, + memoInstruction, + ]; + const instructionsData = [nonceAdvanceParams, memoParams, stakingDeactivateParams]; + const result = instructionParamsFactory(TransactionType.StakingDeactivate, instructions); + should.deepEqual(result, instructionsData); + }); + }); }); describe('Withdraw stake instructions ', function () { diff --git a/modules/sdk-coin-sol/test/unit/transactionBuilder/stakingDeactivateBuilder.ts b/modules/sdk-coin-sol/test/unit/transactionBuilder/stakingDeactivateBuilder.ts index 0082f7b436..e439fca2d7 100644 --- a/modules/sdk-coin-sol/test/unit/transactionBuilder/stakingDeactivateBuilder.ts +++ b/modules/sdk-coin-sol/test/unit/transactionBuilder/stakingDeactivateBuilder.ts @@ -27,6 +27,8 @@ describe('Sol Staking Deactivate Builder', () => { params: { fromAddress: wallet.pub, stakingAddress: stakeAccount.pub, + amount: undefined, + unstakingAddress: undefined, }, }, ]); @@ -43,16 +45,18 @@ describe('Sol Staking Deactivate Builder', () => { const txJson = tx.toJson(); txJson.instructionsData.should.deepEqual([ { - type: 'Deactivate', + type: 'Memo', params: { - fromAddress: wallet.pub, - stakingAddress: stakeAccount.pub, + memo: 'Test deactivate', }, }, { - type: 'Memo', + type: 'Deactivate', params: { - memo: 'Test deactivate', + fromAddress: wallet.pub, + stakingAddress: stakeAccount.pub, + amount: undefined, + unstakingAddress: undefined, }, }, ]); @@ -72,6 +76,8 @@ describe('Sol Staking Deactivate Builder', () => { params: { fromAddress: wallet.pub, stakingAddress: stakeAccount.pub, + amount: undefined, + unstakingAddress: undefined, }, }, ]); @@ -87,16 +93,18 @@ describe('Sol Staking Deactivate Builder', () => { const txJson = tx.toJson(); txJson.instructionsData.should.deepEqual([ { - type: 'Deactivate', + type: 'Memo', params: { - fromAddress: wallet.pub, - stakingAddress: stakeAccount.pub, + memo: 'Test deactivate', }, }, { - type: 'Memo', + type: 'Deactivate', params: { - memo: 'Test deactivate', + fromAddress: wallet.pub, + stakingAddress: stakeAccount.pub, + amount: undefined, + unstakingAddress: undefined, }, }, ]); @@ -116,6 +124,43 @@ describe('Sol Staking Deactivate Builder', () => { const tx = await txBuilder.build(); should.equal(tx.toBroadcastFormat(), testData.STAKING_DEACTIVATE_SIGNED_TX_WITH_MEMO); }); + + it('building a partial staking deactivate tx', async () => { + const txBuilder = factory + .getStakingDeactivateBuilder() + .sender(wallet.pub) + .stakingAddress(stakeAccount.pub) + .unstakingAddress(testData.splitStakeAccount.pub) + .amount('100000') + .nonce(recentBlockHash); + txBuilder.sign({ key: wallet.prv }); + const tx = await txBuilder.build(); + const txJson = tx.toJson(); + const rawTx = tx.toBroadcastFormat(); + should.equal(Utils.isValidRawTransaction(rawTx), true); + txJson.instructionsData.should.deepEqual([ + { + type: 'Deactivate', + params: { + fromAddress: wallet.pub, + stakingAddress: stakeAccount.pub, + amount: '100000', + unstakingAddress: testData.splitStakeAccount.pub, + }, + }, + ]); + should.equal(rawTx, testData.STAKING_PARTIAL_DEACTIVATE_SIGNED_TX); + + const tx2 = await factory.from(testData.STAKING_PARTIAL_DEACTIVATE_SIGNED_TX).build(); + const txJson2 = tx2.toJson(); + tx2.toBroadcastFormat(); + + delete tx['_id']; + delete tx2['_id']; + + should.deepEqual(tx, tx2); + should.deepEqual(txJson2, txJson2); + }); }); describe('Should fail', () => { @@ -140,5 +185,37 @@ describe('Sol Staking Deactivate Builder', () => { txBuilder.stakingAddress(wallet.pub); await txBuilder.build().should.rejectedWith('Sender address cannot be the same as the Staking address'); }); + + it('building a partial staking deactivate tx without an amount', async () => { + const txBuilder = factory + .getStakingDeactivateBuilder() + .sender(wallet.pub) + .nonce(recentBlockHash) + .stakingAddress(testData.stakeAccount.pub) + .unstakingAddress(testData.splitStakeAccount.pub); + txBuilder.sign({ key: wallet.prv }); + + await txBuilder + .build() + .should.be.rejectedWith( + 'If an unstaking address is given then a partial amount to unstake must also be set before building the transaction' + ); + }); + + it('building a partial staking deactivate tx without an unstaking address', async () => { + const txBuilder = factory + .getStakingDeactivateBuilder() + .sender(wallet.pub) + .nonce(recentBlockHash) + .stakingAddress(testData.stakeAccount.pub) + .amount('10'); + txBuilder.sign({ key: wallet.prv }); + + await txBuilder + .build() + .should.be.rejectedWith( + 'When partially unstaking the unstaking address must be set before building the transaction' + ); + }); }); }); diff --git a/modules/sdk-coin-sol/test/unit/utils.ts b/modules/sdk-coin-sol/test/unit/utils.ts index ddfb154bdc..5789b42f3b 100644 --- a/modules/sdk-coin-sol/test/unit/utils.ts +++ b/modules/sdk-coin-sol/test/unit/utils.ts @@ -261,11 +261,12 @@ describe('SOL util library', function () { }); it('should fail for invalid instruction type', function () { const accountPubkey = testData.authAccount.pub; - const programId = testData.nonceAccount.pub; - const assignInstruction = SystemProgram.assign({ - accountPubkey: new PublicKey(accountPubkey), - programId: new PublicKey(programId), + const assignInstruction = SystemProgram.nonceWithdraw({ + noncePubkey: new PublicKey(accountPubkey), + authorizedPubkey: new PublicKey(accountPubkey), + toPubkey: new PublicKey(accountPubkey), + lamports: 200, }); should(() => Utils.validateIntructionTypes([assignInstruction])).throwError( 'Invalid transaction, instruction type not supported: ' + Utils.getInstructionType(assignInstruction) diff --git a/modules/sdk-coin-stx/CHANGELOG.md b/modules/sdk-coin-stx/CHANGELOG.md index c522fd03ee..ff8aabaf2d 100644 --- a/modules/sdk-coin-stx/CHANGELOG.md +++ b/modules/sdk-coin-stx/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.4.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-stx@1.4.5...@bitgo/sdk-coin-stx@1.4.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-stx + ## [1.4.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-stx@1.4.0...@bitgo/sdk-coin-stx@1.4.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-stx diff --git a/modules/sdk-coin-stx/package.json b/modules/sdk-coin-stx/package.json index 5c1d7fae9a..1468274fec 100644 --- a/modules/sdk-coin-stx/package.json +++ b/modules/sdk-coin-stx/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-stx", - "version": "1.4.5", + "version": "1.4.6", "description": "BitGo SDK coin library for Stacks", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "@stacks/network": "^4.3.0", "@stacks/transactions": "2.0.1", @@ -52,8 +52,8 @@ "lodash": "^4.17.15" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "@types/elliptic": "^6.4.12" } } diff --git a/modules/sdk-coin-sui/CHANGELOG.md b/modules/sdk-coin-sui/CHANGELOG.md index 110c18158c..6e9d8216bd 100644 --- a/modules/sdk-coin-sui/CHANGELOG.md +++ b/modules/sdk-coin-sui/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.6.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-sui@1.6.0...@bitgo/sdk-coin-sui@1.6.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-sui + # [1.6.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-sui@1.2.0...@bitgo/sdk-coin-sui@1.6.0) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-coin-sui/package.json b/modules/sdk-coin-sui/package.json index 7c7d591e10..397664dd18 100644 --- a/modules/sdk-coin-sui/package.json +++ b/modules/sdk-coin-sui/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-sui", - "version": "1.6.0", + "version": "1.6.1", "description": "BitGo SDK coin library for Sui", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@mysten/bcs": "^0.4.0", "bignumber.js": "^9.0.0", "bs58": "^4.0.1", @@ -49,8 +49,8 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6", "@types/lodash": "^4.14.183" } } diff --git a/modules/sdk-coin-trx/CHANGELOG.md b/modules/sdk-coin-trx/CHANGELOG.md index 6faedc1f3f..9cfa57f6f0 100644 --- a/modules/sdk-coin-trx/CHANGELOG.md +++ b/modules/sdk-coin-trx/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-trx@1.3.0...@bitgo/sdk-coin-trx@1.3.1) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-trx + # [1.3.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-trx@1.2.0...@bitgo/sdk-coin-trx@1.3.0) (2022-11-29) ### Features diff --git a/modules/sdk-coin-trx/package.json b/modules/sdk-coin-trx/package.json index 8feaa8ebc1..2ae63eaace 100644 --- a/modules/sdk-coin-trx/package.json +++ b/modules/sdk-coin-trx/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-trx", - "version": "1.3.0", + "version": "1.3.1", "description": "BitGo SDK coin library for Tron", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -46,8 +46,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "@stablelib/hex": "^1.0.0", "bignumber.js": "^9.0.0", @@ -58,7 +58,7 @@ "tronweb": "^3.2.6" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-xlm/CHANGELOG.md b/modules/sdk-coin-xlm/CHANGELOG.md index 9c3f1414da..a2343b5bad 100644 --- a/modules/sdk-coin-xlm/CHANGELOG.md +++ b/modules/sdk-coin-xlm/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-xlm@1.2.5...@bitgo/sdk-coin-xlm@1.2.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-xlm + ## [1.2.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-xlm@1.2.0...@bitgo/sdk-coin-xlm@1.2.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-xlm diff --git a/modules/sdk-coin-xlm/package.json b/modules/sdk-coin-xlm/package.json index 46a6d1d53d..cd34d000e3 100644 --- a/modules/sdk-coin-xlm/package.json +++ b/modules/sdk-coin-xlm/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-xlm", - "version": "1.2.5", + "version": "1.2.6", "description": "BitGo SDK coin library for Xlm", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,8 +40,8 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "bignumber.js": "^8.0.1", "lodash": "^4.17.14", @@ -49,7 +49,7 @@ "superagent": "^3.8.3" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-xrp/CHANGELOG.md b/modules/sdk-coin-xrp/CHANGELOG.md index 4d0b6224a4..aafe5da3c0 100644 --- a/modules/sdk-coin-xrp/CHANGELOG.md +++ b/modules/sdk-coin-xrp/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-xrp@1.3.5...@bitgo/sdk-coin-xrp@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-xrp + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-xrp@1.3.0...@bitgo/sdk-coin-xrp@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-xrp diff --git a/modules/sdk-coin-xrp/package.json b/modules/sdk-coin-xrp/package.json index a0d7ceeaa2..5ad580699e 100644 --- a/modules/sdk-coin-xrp/package.json +++ b/modules/sdk-coin-xrp/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-xrp", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Ripple", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,7 +40,7 @@ ] }, "dependencies": { - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0", "bignumber.js": "^9.0.0", "lodash": "^4.17.14", @@ -50,7 +50,7 @@ "ripple-lib": "~1.4.1" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-xtz/CHANGELOG.md b/modules/sdk-coin-xtz/CHANGELOG.md index b253a2bad2..64e7649f06 100644 --- a/modules/sdk-coin-xtz/CHANGELOG.md +++ b/modules/sdk-coin-xtz/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.4.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-xtz@1.4.5...@bitgo/sdk-coin-xtz@1.4.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-xtz + ## [1.4.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-xtz@1.4.0...@bitgo/sdk-coin-xtz@1.4.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-xtz diff --git a/modules/sdk-coin-xtz/package.json b/modules/sdk-coin-xtz/package.json index 7f49390ad0..1a7166d607 100644 --- a/modules/sdk-coin-xtz/package.json +++ b/modules/sdk-coin-xtz/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-xtz", - "version": "1.4.5", + "version": "1.4.6", "description": "BitGo SDK coin library for Tezos", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -41,8 +41,8 @@ }, "dependencies": { "@bitgo/blake2b": "^3.2.1", - "@bitgo/sdk-core": "^4.0.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/sdk-core": "^4.1.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "@taquito/local-forging": "6.3.5-beta.0", "@taquito/signer": "6.3.5-beta.0", @@ -53,7 +53,7 @@ "lodash": "^4.17.15" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-coin-zec/CHANGELOG.md b/modules/sdk-coin-zec/CHANGELOG.md index c8bba63643..129720070d 100644 --- a/modules/sdk-coin-zec/CHANGELOG.md +++ b/modules/sdk-coin-zec/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-zec@1.3.5...@bitgo/sdk-coin-zec@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-coin-zec + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-zec@1.3.0...@bitgo/sdk-coin-zec@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-coin-zec diff --git a/modules/sdk-coin-zec/package.json b/modules/sdk-coin-zec/package.json index 3e07f61c62..c6e1637f7f 100644 --- a/modules/sdk-coin-zec/package.json +++ b/modules/sdk-coin-zec/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-coin-zec", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGo SDK coin library for Zcash", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -40,12 +40,12 @@ ] }, "dependencies": { - "@bitgo/abstract-utxo": "^1.9.0", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/abstract-utxo": "^1.10.0", + "@bitgo/sdk-core": "^4.1.0", "@bitgo/utxo-lib": "^7.0.0" }, "devDependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-test": "^1.2.5" + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-test": "^1.2.6" } } diff --git a/modules/sdk-core/CHANGELOG.md b/modules/sdk-core/CHANGELOG.md index 6d497c60b4..8659400df9 100644 --- a/modules/sdk-core/CHANGELOG.md +++ b/modules/sdk-core/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.1.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@4.0.0...@bitgo/sdk-core@4.1.0) (2022-12-01) + +### Bug Fixes + +- **sdk-core:** fix tss signing ([79882b1](https://github.com/BitGo/BitGoJS/commit/79882b1b3a2f722877aaa1def76aba10776717aa)) +- **sdk-core:** whitelist source and destination chain params ([5724d22](https://github.com/BitGo/BitGoJS/commit/5724d22130ebacf65e1545cab18ee602e1dff231)) +- update ofc coin for ibasecoin changes ([65986c6](https://github.com/BitGo/BitGoJS/commit/65986c6405e2771b6c7c85dd8b62bf99d6cd8c41)) + +### Features + +- **bitgo:** add api version input ([42f353f](https://github.com/BitGo/BitGoJS/commit/42f353f0b33857963d66739d34b0d0cac85e82db)) +- **sdk-core:** add keyDerive to ECDSA TSS implementation ([9ff1d89](https://github.com/BitGo/BitGoJS/commit/9ff1d89ba0e42d53640f0fe7b71c53d1a2eb4a10)) + # [4.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@2.2.0...@bitgo/sdk-core@4.0.0) (2022-11-29) ### Bug Fixes diff --git a/modules/sdk-core/package.json b/modules/sdk-core/package.json index 271ad496db..2bd597da6a 100644 --- a/modules/sdk-core/package.json +++ b/modules/sdk-core/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-core", - "version": "4.0.0", + "version": "4.1.0", "description": "core library functions for BitGoJS", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -37,7 +37,7 @@ }, "dependencies": { "@bitgo/bls-dkg": "^1.3.0", - "@bitgo/statics": "^12.0.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "@noble/secp256k1": "1.6.3", "@stablelib/hex": "^1.0.0", diff --git a/modules/sdk-core/src/account-lib/mpc/hdTree.ts b/modules/sdk-core/src/account-lib/mpc/hdTree.ts index f53f882f06..527983c4c9 100644 --- a/modules/sdk-core/src/account-lib/mpc/hdTree.ts +++ b/modules/sdk-core/src/account-lib/mpc/hdTree.ts @@ -2,16 +2,16 @@ * An interface for calculating a subkey in an HD key scheme. */ import { createHmac } from 'crypto'; -import { Ed25519Curve } from './curves'; +import { Ed25519Curve, Secp256k1Curve } from './curves'; import { bigIntFromBufferBE, bigIntToBufferBE, bigIntFromBufferLE, bigIntToBufferLE } from './util'; // 2^256 -const base = BigInt('0x010000000000000000000000000000000000000000000000000000000000000000'); +export const chaincodeBase = BigInt('0x010000000000000000000000000000000000000000000000000000000000000000'); interface PrivateKeychain { pk: bigint; sk: bigint; - prefix: bigint; + prefix?: bigint; chaincode: bigint; } @@ -60,6 +60,13 @@ function deriveEd25519Helper(index: number | undefined = 0, chaincode: bigint, p return [zmac.digest(), imac.digest()]; } +function pathToIndices(path: string): number[] { + return path + .replace(/^m?\//, '') + .split('/') + .map((index) => parseInt(index, 10)); +} + export class Ed25519BIP32 { static curve: Ed25519Curve = new Ed25519Curve(); static initialized = false; @@ -74,10 +81,7 @@ export class Ed25519BIP32 { } publicDerive(keychain: PublicKeychain, path: string): PublicKeychain { - const indices = path - .replace(/^m\//, '') - .split('/') - .map((index) => parseInt(index, 10)); + const indices = pathToIndices(path); function deriveIndex(acc: bigint[], index: number | undefined): bigint[] { const [pk, chaincode] = acc; const [zout, iout] = deriveEd25519Helper(index, chaincode, pk); @@ -92,10 +96,7 @@ export class Ed25519BIP32 { } privateDerive(keychain: PrivateKeychain, path: string): PrivateKeychain { - const indices = path - .replace(/^m\//, '') - .split('/') - .map((index) => parseInt(index, 10)); + const indices = pathToIndices(path); function deriveIndex(acc: bigint[], index: number | undefined): bigint[] { const [pk, sk, prefix, chaincode] = acc; const [zout, iout] = deriveEd25519Helper(index, chaincode, pk, sk); @@ -106,13 +107,67 @@ export class Ed25519BIP32 { const left_pk = Ed25519BIP32.curve.pointAdd(pk, Ed25519BIP32.curve.basePointMult(t)); const left_sk = Ed25519BIP32.curve.scalarAdd(sk, t); // right = zr + kr - const right = (prefix + bigIntFromBufferBE(zr)) % base; + const right = (prefix + bigIntFromBufferBE(zr)) % chaincodeBase; return [left_pk, left_sk, right, bigIntFromBufferBE(iout.slice(32))]; } const [pk, sk, prefix, chaincode] = indices.reduce( deriveIndex, - deriveIndex([keychain.pk, keychain.sk, keychain.prefix, keychain.chaincode], indices.shift()) + deriveIndex([keychain.pk, keychain.sk, keychain.prefix!, keychain.chaincode], indices.shift()) ); return { pk, sk, prefix, chaincode }; } } + +function deriveSecp256k1Helper(index: number | undefined = 0, chaincode: bigint, pk: bigint, sk?: bigint): Buffer { + const data = Buffer.alloc(33 + 4); + if (((index >>> 0) & 0x80000000) === 0) { + bigIntToBufferBE(pk, 33).copy(data); + } else { + if (sk === undefined) { + throw new Error("Can't performed hardened derivation without private key"); + } + data[0] = 0; + bigIntToBufferBE(sk, 32).copy(data, 1); + } + data.writeUInt32BE(index, 33); + return createHmac('sha512', bigIntToBufferBE(chaincode, 32)).update(data).digest(); +} + +export class BIP32 { + static curve: Secp256k1Curve = new Secp256k1Curve(); + + publicDerive(keychain: PublicKeychain, path: string): PublicKeychain { + const indices = pathToIndices(path); + function deriveIndex(acc: bigint[], index: number | undefined): bigint[] { + const [pk, chaincode] = acc; + const I = deriveSecp256k1Helper(index, chaincode, pk); + const il = bigIntFromBufferBE(I.slice(0, 32)); + const ir = bigIntFromBufferBE(I.slice(32)); + const left_pk = BIP32.curve.pointAdd(pk, BIP32.curve.basePointMult(il)); + return [left_pk, ir]; + } + const [pk, chaincode] = indices.reduce( + deriveIndex, + deriveIndex([keychain.pk, keychain.chaincode], indices.shift()) + ); + return { pk, chaincode }; + } + + privateDerive(keychain: PrivateKeychain, path: string): PrivateKeychain { + const indices = pathToIndices(path); + function deriveIndex(acc: bigint[], index: number | undefined): bigint[] { + const [pk, sk, chaincode] = acc; + const I = deriveSecp256k1Helper(index, chaincode, pk, sk); + const il = bigIntFromBufferBE(I.slice(0, 32)); + const ir = bigIntFromBufferBE(I.slice(32)); + const left_pk = BIP32.curve.pointAdd(pk, BIP32.curve.basePointMult(il)); + const left_sk = BIP32.curve.scalarAdd(sk, il); + return [left_pk, left_sk, ir]; + } + const [pk, sk, chaincode] = indices.reduce( + deriveIndex, + deriveIndex([keychain.pk, keychain.sk, keychain.chaincode], indices.shift()) + ); + return { pk, sk, chaincode }; + } +} diff --git a/modules/sdk-core/src/account-lib/mpc/tss/ecdsa/ecdsa.ts b/modules/sdk-core/src/account-lib/mpc/tss/ecdsa/ecdsa.ts index 071119f629..60742751dd 100644 --- a/modules/sdk-core/src/account-lib/mpc/tss/ecdsa/ecdsa.ts +++ b/modules/sdk-core/src/account-lib/mpc/tss/ecdsa/ecdsa.ts @@ -1,6 +1,7 @@ import * as paillierBigint from 'paillier-bigint'; import * as bigintCryptoUtils from 'bigint-crypto-utils'; import * as secp from '@noble/secp256k1'; +import HDTree, { BIP32, chaincodeBase } from '../../hdTree'; import { randomBytes, createHash, Hash } from 'crypto'; import { hexToBigInt } from '../../../util/crypto'; import { bigIntFromBufferBE, bigIntToBufferBE, bigIntFromU8ABE, getPaillierPublicKey } from '../../util'; @@ -11,6 +12,7 @@ import { PShare, KeyShare, KeyCombined, + SubkeyShare, BShare, AShare, Signature, @@ -37,6 +39,7 @@ const _3n = BigInt(3); */ export default class Ecdsa { static curve: Secp256k1Curve = new Secp256k1Curve(); + static hdTree: HDTree = new BIP32(); static shamir: Shamir = new Shamir(Ecdsa.curve); /** * Generate shares for participant at index and split keys `(threshold,numShares)` ways. @@ -64,9 +67,11 @@ export default class Ecdsa { const { shares: uShares, v } = Ecdsa.shamir.split(u, threshold, numShares); const currentParticipant: PShare = { i: index, - l: privateKey.lambda.toString(16), - m: privateKey.mu.toString(16), - n: publicKey.n.toString(16), + t: threshold, + c: numShares, + l: bigIntToBufferBE(privateKey.lambda, 192).toString('hex'), + m: bigIntToBufferBE(privateKey.mu, 192).toString('hex'), + n: bigIntToBufferBE(publicKey.n, 384).toString('hex'), y: bigIntToBufferBE(y, 33).toString('hex'), u: bigIntToBufferBE(uShares[index], 32).toString('hex'), uu: u.toString(), @@ -150,6 +155,80 @@ export default class Ecdsa { return participants; } + /** + * Derive shares for a BIP-32 subkey. + * @param {PShare} The user's p-share. + * @param {NShare[]} The n-shares received from the other participants. + * @param {string} The BIP-32 path to derive. + * @returns {SubkeyShare} Returns the private x-share and n-shares to + * be distributed to participants at their corresponding index. + */ + keyDerive(pShare: PShare, nShares: NShare[], path: string): SubkeyShare { + const yValues = [pShare, ...nShares].map((share) => hexToBigInt(share.y)); + const y = yValues.reduce((partial, share) => Ecdsa.curve.pointAdd(partial, share)); + const u = BigInt(pShare.uu); + let contribChaincode = hexToBigInt(pShare.chaincode); + const chaincodes = [contribChaincode, ...nShares.map(({ chaincode }) => hexToBigInt(chaincode))]; + const chaincode = chaincodes.reduce((acc, chaincode) => (acc + chaincode) % chaincodeBase); + + // Verify shares. + for (const share of nShares) { + if (share.v) { + try { + Ecdsa.shamir.verify(hexToBigInt(share.u), [hexToBigInt(share.y), hexToBigInt(share.v!)], pShare.i); + } catch (err) { + throw new Error(`Could not verify share from participant ${share.j}. Verification error: ${err}`); + } + } + } + + // Derive subkey. + const subkey = Ecdsa.hdTree.privateDerive({ pk: y, sk: u, chaincode }, path); + + // Calculate new public key contribution. + const contribY = Ecdsa.curve.basePointMult(subkey.sk); + + // Calculate new chaincode contribution. + const chaincodeDelta = (chaincodeBase + subkey.chaincode - chaincode) % chaincodeBase; + contribChaincode = (contribChaincode + chaincodeDelta) % chaincodeBase; + + // Calculate new u values. + const { shares: split_u, v } = Ecdsa.shamir.split(subkey.sk, pShare.t || 2, pShare.c || 3); + + // Calculate new signing key. + const x = [split_u[pShare.i], ...nShares.map(({ u }) => hexToBigInt(u))].reduce(Ecdsa.curve.scalarAdd); + + const P_i: XShare = { + i: pShare.i, + l: pShare.l, + m: pShare.m, + n: pShare.n, + y: bigIntToBufferBE(subkey.pk, 33).toString('hex'), + x: bigIntToBufferBE(x, 32).toString('hex'), + chaincode: bigIntToBufferBE(subkey.chaincode, 32).toString('hex'), + }; + + const shares: SubkeyShare = { + xShare: P_i, + nShares: {}, + }; + + for (let ind = 0; ind < nShares.length; ind++) { + const P_j = nShares[ind]; + shares.nShares[P_j.j] = { + i: P_j.j, + j: P_i.i, + n: P_j.n, + u: bigIntToBufferBE(split_u[P_j.j], 32).toString('hex'), + y: bigIntToBufferBE(contribY, 32).toString('hex'), + v: bigIntToBufferBE(v[0], 32).toString('hex'), + chaincode: bigIntToBufferBE(contribChaincode, 32).toString('hex'), + }; + } + + return shares; + } + /** * Create signing shares. * @param {xShare} xShare Private xShare of current participant signer diff --git a/modules/sdk-core/src/account-lib/mpc/tss/ecdsa/types.ts b/modules/sdk-core/src/account-lib/mpc/tss/ecdsa/types.ts index b55ad1c6bd..afa5aec994 100644 --- a/modules/sdk-core/src/account-lib/mpc/tss/ecdsa/types.ts +++ b/modules/sdk-core/src/account-lib/mpc/tss/ecdsa/types.ts @@ -1,6 +1,8 @@ // Private share of the user generated during key generation export interface PShare { i: number; // participant index + t?: number; // threshold + c?: number; // number of shares l: string; // lambda value for paillier secret key m: string; // mu value for paillier secret key u: string; // shamir share of secret @@ -49,6 +51,11 @@ export interface KeyCombined { yShares: Record; } +export interface SubkeyShare { + xShare: XShare; + nShares: Record; +} + export interface WShare { i: number; l: string; diff --git a/modules/sdk-core/src/account-lib/mpc/tss/eddsa/eddsa.ts b/modules/sdk-core/src/account-lib/mpc/tss/eddsa/eddsa.ts index 535292bfae..0f5e01427d 100644 --- a/modules/sdk-core/src/account-lib/mpc/tss/eddsa/eddsa.ts +++ b/modules/sdk-core/src/account-lib/mpc/tss/eddsa/eddsa.ts @@ -228,7 +228,7 @@ export default class Eddsa { n: uShare.n, y: bigIntToBufferLE(subkey.pk, 32).toString('hex'), u: bigIntToBufferLE(subkey.sk, 32).toString('hex'), - prefix: bigIntToBufferBE(subkey.prefix, 32).toString('hex'), + prefix: bigIntToBufferBE(subkey.prefix!, 32).toString('hex'), chaincode: bigIntToBufferBE(subkey.chaincode, 32).toString('hex'), }; diff --git a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts index b40a38b3c7..2a40bf97f2 100644 --- a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts +++ b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts @@ -2,7 +2,7 @@ import { SerializedKeyPair } from 'openpgp'; import { IRequestTracer } from '../../../api'; import { KeychainsTriplet } from '../../baseCoin'; import { ApiKeyShare, Keychain } from '../../keychain'; -import { Memo, WalletType } from '../../wallet'; +import { ApiVersion, Memo, WalletType } from '../../wallet'; import { EDDSA, GShare, SignShare, YShare } from '../../../account-lib/mpc/tss'; import { KeyShare } from './ecdsa'; @@ -227,6 +227,7 @@ export type TSSParams = { txRequest: string | TxRequest; // can be either a string or TxRequest prv: string; reqId: IRequestTracer; + apiVersion?: ApiVersion; }; export type TSSParamsForMessage = TSSParams & { diff --git a/modules/sdk-core/src/bitgo/utils/tss/ecdsa/ecdsa.ts b/modules/sdk-core/src/bitgo/utils/tss/ecdsa/ecdsa.ts index e3e35aed59..f7502d2b1f 100644 --- a/modules/sdk-core/src/bitgo/utils/tss/ecdsa/ecdsa.ts +++ b/modules/sdk-core/src/bitgo/utils/tss/ecdsa/ecdsa.ts @@ -587,8 +587,15 @@ export class EcdsaUtils extends baseTSSUtils { let signablePayload; if (requestType === RequestType.tx) { - assert(txRequestResolved.transactions, 'Unable to find transactions in txRequest'); - signablePayload = Buffer.from(txRequestResolved.transactions[0].unsignedTx.signableHex, 'hex'); + assert( + txRequestResolved.transactions || txRequestResolved.unsignedTxs, + 'Unable to find transactions in txRequest' + ); + const unsignedTx = + txRequestResolved.apiVersion === 'full' + ? txRequestResolved.transactions![0].unsignedTx + : txRequestResolved.unsignedTxs[0]; + signablePayload = Buffer.from(unsignedTx.signableHex, 'hex'); } else if (requestType === RequestType.message) { const finalMessage = (params as TSSParamsForMessage).messageEncoded; assert(finalMessage, 'finalMessage is required'); diff --git a/modules/sdk-core/src/bitgo/utils/tss/eddsa/eddsa.ts b/modules/sdk-core/src/bitgo/utils/tss/eddsa/eddsa.ts index d6fd5880c9..2009a82f45 100644 --- a/modules/sdk-core/src/bitgo/utils/tss/eddsa/eddsa.ts +++ b/modules/sdk-core/src/bitgo/utils/tss/eddsa/eddsa.ts @@ -354,10 +354,10 @@ export class EddsaUtils extends baseTSSUtils { throw new Error('Invalid user key - missing backupYShare'); } - assert(txRequestResolved.transactions, 'Unable to find transactions in txRequest'); + assert(txRequestResolved.transactions || txRequestResolved.unsignedTxs, 'Unable to find transactions in txRequest'); const unsignedTx = txRequestResolved.apiVersion === 'full' - ? txRequestResolved.transactions[0].unsignedTx + ? txRequestResolved.transactions![0].unsignedTx : txRequestResolved.unsignedTxs[0]; const signingKey = MPC.keyDerive( @@ -394,10 +394,10 @@ export class EddsaUtils extends baseTSSUtils { throw new Error('Invalid user key - missing backupYShare'); } - assert(txRequestResolved.transactions, 'Unable to find transactions in txRequest'); + assert(txRequestResolved.transactions || txRequestResolved.unsignedTxs, 'Unable to find transactions in txRequest'); const unsignedTx = txRequestResolved.apiVersion === 'full' - ? txRequestResolved.transactions[0].unsignedTx + ? txRequestResolved.transactions![0].unsignedTx : txRequestResolved.unsignedTxs[0]; const signablePayload = Buffer.from(unsignedTx.signableHex, 'hex'); @@ -457,7 +457,7 @@ export class EddsaUtils extends baseTSSUtils { let txRequestResolved: TxRequest; let txRequestId: string; - const { txRequest, prv } = params; + const { txRequest, prv, apiVersion } = params; if (typeof txRequest === 'string') { txRequestResolved = await getTxRequest(this.bitgo, this.wallet.id(), txRequest); @@ -475,10 +475,10 @@ export class EddsaUtils extends baseTSSUtils { throw new Error('Invalid user key - missing backupYShare'); } - assert(txRequestResolved.transactions, 'Unable to find transactions in txRequest'); + assert(txRequestResolved.transactions || txRequestResolved.unsignedTxs, 'Unable to find transactions in txRequest'); const unsignedTx = txRequestResolved.apiVersion === 'full' - ? txRequestResolved.transactions[0].unsignedTx + ? txRequestResolved.transactions![0].unsignedTx : txRequestResolved.unsignedTxs[0]; const signingKey = MPC.keyDerive( @@ -495,7 +495,14 @@ export class EddsaUtils extends baseTSSUtils { const bitgoGpgKey = await getBitgoGpgPubKey(this.bitgo); const encryptedSignerShare = await encryptText(signerShare, bitgoGpgKey); - await offerUserToBitgoRShare(this.bitgo, this.wallet.id(), txRequestId, userSignShare, encryptedSignerShare); + await offerUserToBitgoRShare( + this.bitgo, + this.wallet.id(), + txRequestId, + userSignShare, + encryptedSignerShare, + apiVersion + ); const bitgoToUserRShare = await getBitgoToUserRShare(this.bitgo, this.wallet.id(), txRequestId); @@ -507,7 +514,7 @@ export class EddsaUtils extends baseTSSUtils { signablePayload ); - await sendUserToBitgoGShare(this.bitgo, this.wallet.id(), txRequestId, userToBitGoGShare); + await sendUserToBitgoGShare(this.bitgo, this.wallet.id(), txRequestId, userToBitGoGShare, apiVersion); return await getTxRequest(this.bitgo, this.wallet.id(), txRequestId); } diff --git a/modules/sdk-core/src/bitgo/wallet/iWallet.ts b/modules/sdk-core/src/bitgo/wallet/iWallet.ts index e30f095965..b6d26e0509 100644 --- a/modules/sdk-core/src/bitgo/wallet/iWallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/iWallet.ts @@ -52,6 +52,8 @@ export interface BuildTokenEnablementOptions extends PrebuildTransactionOptions enableTokens: TokenEnablement[]; } +export type ApiVersion = 'lite' | 'full'; + export interface PrebuildTransactionOptions { reqId?: IRequestTracer; recipients?: { @@ -104,6 +106,7 @@ export interface PrebuildTransactionOptions { lowFeeTxid?: string; isTss?: boolean; custodianTransactionId?: string; + apiVersion?: ApiVersion; } export interface PrebuildAndSignTransactionOptions extends PrebuildTransactionOptions, WalletSignTransactionOptions { @@ -143,6 +146,7 @@ export interface WalletSignTransactionOptions extends WalletSignBaseOptions { txPrebuild?: TransactionPrebuild; customRShareGeneratingFunction?: CustomRShareGeneratingFunction; customGShareGeneratingFunction?: CustomGShareGeneratingFunction; + apiVersion?: ApiVersion; [index: string]: unknown; } diff --git a/modules/sdk-core/src/bitgo/wallet/wallet.ts b/modules/sdk-core/src/bitgo/wallet/wallet.ts index a1a847ff45..941f8b3b07 100644 --- a/modules/sdk-core/src/bitgo/wallet/wallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/wallet.ts @@ -151,6 +151,7 @@ export class Wallet implements IWallet { prebuildWhitelistedParams(): string[] { return [ 'addressType', + 'apiVersion', 'changeAddress', 'consolidateAddresses', 'cpfpFeeRate', @@ -1537,7 +1538,7 @@ export class Wallet implements IWallet { * @return {*} */ async signTransaction(params: WalletSignTransactionOptions = {}): Promise { - const { txPrebuild } = params; + const { txPrebuild, apiVersion } = params; if (_.isFunction(params.customGShareGeneratingFunction) && _.isFunction(params.customRShareGeneratingFunction)) { // invoke external signer TSS for EdDSA workflow @@ -1555,7 +1556,7 @@ export class Wallet implements IWallet { }); if (this._wallet.multisigType === 'tss') { - return this.signTransactionTss({ ...presign, prv: this.getUserPrv(presign as GetUserPrvOptions) }); + return this.signTransactionTss({ ...presign, prv: this.getUserPrv(presign as GetUserPrvOptions), apiVersion }); } let { pubs } = params; @@ -1963,6 +1964,8 @@ export class Wallet implements IWallet { 'stakingOptions', 'hop', 'type', + 'sourceChain', + 'destinationChain', ]); if (this._wallet.type === 'custodial') { @@ -2526,8 +2529,16 @@ export class Wallet implements IWallet { private async prebuildTransactionTss(params: PrebuildTransactionOptions = {}): Promise { const reqId = params.reqId || new RequestTracer(); this.bitgo.setRequestTracer(reqId); + if ( + params.apiVersion === 'lite' && + (this._wallet.type === 'custodial' || this.baseCoin.getMPCAlgorithm() === 'ecdsa') + ) { + throw new Error(`Custodial and ECDSA MPC algorithm must always use 'full' api version`); + } + const apiVersion = - this._wallet.type === 'custodial' || this.baseCoin.getMPCAlgorithm() === 'ecdsa' ? 'full' : 'lite'; + params.apiVersion || + (this._wallet.type === 'custodial' || this.baseCoin.getMPCAlgorithm() === 'ecdsa' ? 'full' : 'lite'); // Two options different implementations of fees seems to now be supported, for now we will support both to be backwards compatible // TODO(BG-59685): deprecate one of these so that we have a single way to pass fees @@ -2709,6 +2720,7 @@ export class Wallet implements IWallet { txRequest: params.txPrebuild.txRequestId, prv: params.prv, reqId: params.reqId || new RequestTracer(), + apiVersion: params.apiVersion, }); return { txRequestId: signedTxRequest.txRequestId, @@ -2794,7 +2806,7 @@ export class Wallet implements IWallet { } // ECDSA TSS uses TxRequestFull - if (this.baseCoin.getMPCAlgorithm() === 'ecdsa') { + if (this.baseCoin.getMPCAlgorithm() === 'ecdsa' || params.apiVersion === 'full') { return signedTransaction; } diff --git a/modules/sdk-core/src/coins/ofc.ts b/modules/sdk-core/src/coins/ofc.ts index 6dd82209de..80790566f8 100644 --- a/modules/sdk-core/src/coins/ofc.ts +++ b/modules/sdk-core/src/coins/ofc.ts @@ -17,6 +17,10 @@ import { } from '../'; export class Ofc extends BaseCoin { + constructor(bitgo: BitGoBase) { + super(bitgo); + } + static createInstance(bitgo: BitGoBase): BaseCoin { return new Ofc(bitgo); } diff --git a/modules/sdk-test/CHANGELOG.md b/modules/sdk-test/CHANGELOG.md index 541934c0aa..7bf9e5b388 100644 --- a/modules/sdk-test/CHANGELOG.md +++ b/modules/sdk-test/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-test@1.2.5...@bitgo/sdk-test@1.2.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/sdk-test + ## [1.2.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-test@1.2.0...@bitgo/sdk-test@1.2.5) (2022-11-29) **Note:** Version bump only for package @bitgo/sdk-test diff --git a/modules/sdk-test/package.json b/modules/sdk-test/package.json index 2938d6312b..d461a3e534 100644 --- a/modules/sdk-test/package.json +++ b/modules/sdk-test/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/sdk-test", - "version": "1.2.5", + "version": "1.2.6", "private": "true", "description": "coin test libary for BitGoJS", "main": "./dist/src/index.js", @@ -27,8 +27,8 @@ ] }, "dependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-core": "^4.0.0", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-core": "^4.1.0", "bignumber.js": "^8.0.1", "should-http": "^0.1.1" } diff --git a/modules/statics/CHANGELOG.md b/modules/statics/CHANGELOG.md index cbaf4105a6..3e226a94d3 100644 --- a/modules/statics/CHANGELOG.md +++ b/modules/statics/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [12.1.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/statics@12.0.0...@bitgo/statics@12.1.0) (2022-12-01) + +### Features + +- **statics:** add TSS feature flag to ETH ([9226ca9](https://github.com/BitGo/BitGoJS/commit/9226ca9ebf23b2171bffaf05b5090d8189110d56)) + # [12.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/statics@8.2.0...@bitgo/statics@12.0.0) (2022-11-29) ### Bug Fixes diff --git a/modules/statics/package.json b/modules/statics/package.json index 5246e2b777..dcacce1a8a 100644 --- a/modules/statics/package.json +++ b/modules/statics/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/statics", - "version": "12.0.0", + "version": "12.1.0", "description": "dependency-free static configuration for the bitgo platform", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/modules/statics/src/coins.ts b/modules/statics/src/coins.ts index 43d71f1a58..c78de33c59 100644 --- a/modules/statics/src/coins.ts +++ b/modules/statics/src/coins.ts @@ -147,28 +147,18 @@ export const coins = CoinMap.fromCoins([ DOT_FEATURES, KeyCurve.Ed25519 ), - account( - 'eth', - 'Ethereum', - Networks.main.ethereum, - 18, - UnderlyingAsset.ETH, - BaseUnit.ETH, - ETH_FEATURES_WITH_STAKING_AND_MMI - ), // we should probably refactor this into a eth() method + account('eth', 'Ethereum', Networks.main.ethereum, 18, UnderlyingAsset.ETH, BaseUnit.ETH, [ + ...ETH_FEATURES_WITH_STAKING_AND_MMI, + CoinFeature.TSS, + ]), // we should probably refactor this into a eth() method account('teth', 'Kovan Testnet Ethereum (Deprecated)', Networks.test.kovan, 18, UnderlyingAsset.ETH, BaseUnit.ETH, [ ...ETH_FEATURES, CoinFeature.DEPRECATED, ]), - account( - 'gteth', - 'Goerli Testnet Ethereum', - Networks.test.goerli, - 18, - UnderlyingAsset.ETH, - BaseUnit.ETH, - ETH_FEATURES_WITH_STAKING_AND_MMI - ), + account('gteth', 'Goerli Testnet Ethereum', Networks.test.goerli, 18, UnderlyingAsset.ETH, BaseUnit.ETH, [ + ...ETH_FEATURES_WITH_STAKING_AND_MMI, + CoinFeature.TSS, + ]), account( 'eth2', 'Ethereum 2.0', @@ -176,7 +166,7 @@ export const coins = CoinMap.fromCoins([ 18, UnderlyingAsset.ETH2, BaseUnit.ETH, - ETH2_FEATURES, + [...ETH2_FEATURES, CoinFeature.TSS], KeyCurve.BLS ), account( @@ -283,42 +273,22 @@ export const coins = CoinMap.fromCoins([ NEAR_FEATURES, KeyCurve.Ed25519 ), - account( - 'bsc', - 'Binance Smart Chain', - Networks.main.bsc, - 18, - UnderlyingAsset.BSC, - BaseUnit.BSC, - ETH_FEATURES_WITH_MMI - ), - account( - 'tbsc', - 'Testnet Binance Smart Chain', - Networks.test.bsc, - 18, - UnderlyingAsset.BSC, - BaseUnit.BSC, - ETH_FEATURES_WITH_MMI - ), - account( - 'polygon', - 'Polygon', - Networks.main.polygon, - 18, - UnderlyingAsset.POLYGON, - BaseUnit.ETH, - ETH_FEATURES_WITH_STAKING_AND_MMI - ), - account( - 'tpolygon', - 'Testnet Polygon', - Networks.test.polygon, - 18, - UnderlyingAsset.POLYGON, - BaseUnit.ETH, - ETH_FEATURES_WITH_STAKING_AND_MMI - ), + account('bsc', 'Binance Smart Chain', Networks.main.bsc, 18, UnderlyingAsset.BSC, BaseUnit.BSC, [ + ...ETH_FEATURES_WITH_MMI, + CoinFeature.TSS, + ]), + account('tbsc', 'Testnet Binance Smart Chain', Networks.test.bsc, 18, UnderlyingAsset.BSC, BaseUnit.BSC, [ + ...ETH_FEATURES_WITH_MMI, + CoinFeature.TSS, + ]), + account('polygon', 'Polygon', Networks.main.polygon, 18, UnderlyingAsset.POLYGON, BaseUnit.ETH, [ + ...ETH_FEATURES_WITH_STAKING_AND_MMI, + CoinFeature.TSS, + ]), + account('tpolygon', 'Testnet Polygon', Networks.test.polygon, 18, UnderlyingAsset.POLYGON, BaseUnit.ETH, [ + ...ETH_FEATURES_WITH_STAKING_AND_MMI, + CoinFeature.TSS, + ]), erc20CompatibleAccountCoin( 'celo', 'Celo Gold', @@ -386,6 +356,8 @@ export const coins = CoinMap.fromCoins([ ofc('ofctrx', 'Tron', 6, UnderlyingAsset.TRX, CoinKind.CRYPTO), ofc('ofcsol', 'Solana', 9, UnderlyingAsset.SOL, CoinKind.CRYPTO), ofc('ofcdoge', 'Dogecoin', 8, UnderlyingAsset.DOGE, CoinKind.CRYPTO), + ofc('ofcada', 'Cardano', 6, UnderlyingAsset.ADA, CoinKind.CRYPTO), + ofc('ofcpolygon', 'Polygon (MATIC native)', 18, UnderlyingAsset.POLYGON, CoinKind.CRYPTO), tofc('ofctusd', 'Test USD', 2, UnderlyingAsset.USD, CoinKind.FIAT), tofc('ofcteur', 'Test Euro', 2, UnderlyingAsset.EUR, CoinKind.FIAT), tofc('ofctgbp', 'Test British Pound Sterling', 2, UnderlyingAsset.GBP, CoinKind.FIAT), @@ -412,6 +384,8 @@ export const coins = CoinMap.fromCoins([ tofc('ofcttrx', 'Testnet Tron', 6, UnderlyingAsset.TRX, CoinKind.CRYPTO), tofc('ofctsol', 'Test Solana', 9, UnderlyingAsset.SOL, CoinKind.CRYPTO), tofc('ofctdoge', 'Test Dogecoin', 8, UnderlyingAsset.DOGE, CoinKind.CRYPTO), + tofc('ofctada', 'Test Cardano', 6, UnderlyingAsset.ADA, CoinKind.CRYPTO), + tofc('ofctpolygon', 'Test Polygon (MATIC native)', 18, UnderlyingAsset.POLYGON, CoinKind.CRYPTO), erc20('1inch', '1inch Token', 18, '0x111111111117dc0aa78b770fa6a738034120c302', UnderlyingAsset['1INCH']), erc20('1up', 'Uptrennd Token', 18, '0x07597255910a51509ca469568b048f2597e72504', UnderlyingAsset['1UP']), erc20('aave', 'Aave', 18, '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', UnderlyingAsset.AAVE), diff --git a/modules/utxo-bin/CHANGELOG.md b/modules/utxo-bin/CHANGELOG.md index 9407aac7e0..e97ca78741 100644 --- a/modules/utxo-bin/CHANGELOG.md +++ b/modules/utxo-bin/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.6.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/utxo-bin@2.5.0...@bitgo/utxo-bin@2.6.0) (2022-12-01) + +### Features + +- **utxo-bin:** show parseAddress info for bech32(m), cashaddress ([a485d7d](https://github.com/BitGo/BitGoJS/commit/a485d7d983d8eeba2b4ff083fd8f633ee065008d)) + # [2.5.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/utxo-bin@2.3.0...@bitgo/utxo-bin@2.5.0) (2022-11-29) ### Bug Fixes diff --git a/modules/utxo-bin/package.json b/modules/utxo-bin/package.json index 4acb441831..e4c14e2dcc 100644 --- a/modules/utxo-bin/package.json +++ b/modules/utxo-bin/package.json @@ -1,7 +1,7 @@ { "name": "@bitgo/utxo-bin", "description": "Command-line utility for BitGo UTXO transactions", - "version": "2.5.0", + "version": "2.6.0", "files": [ "dist/**/*" ], @@ -27,10 +27,12 @@ "bin": "./dist/bin/index.js", "dependencies": { "@bitgo/blockapis": "^1.3.5", - "@bitgo/statics": "^12.0.0", + "@bitgo/statics": "^12.1.0", "@bitgo/utxo-lib": "^7.0.0", "archy": "^1.0.0", + "bech32": "^2.0.0", "bs58check": "^2.1.2", + "cashaddress": "^1.1.0", "chalk": "4", "yargs": "^17.3.1" }, diff --git a/modules/utxo-bin/src/AddressParser.ts b/modules/utxo-bin/src/AddressParser.ts index a423297ef1..cfad7995fc 100644 --- a/modules/utxo-bin/src/AddressParser.ts +++ b/modules/utxo-bin/src/AddressParser.ts @@ -1,7 +1,10 @@ import * as utxolib from '@bitgo/utxo-lib'; +import * as bech32 from 'bech32'; + import { Parser, ParserNode } from './Parser'; const bs58check = require('bs58check'); +const cashaddress = require('cashaddress'); function isPrintable(s: string): boolean { // https://stackoverflow.com/a/66447494 @@ -53,51 +56,118 @@ export class AddressParser extends Parser { ]; } - parseBase58(address: string): ParserNode { + parseBase58(address: string): ParserNode[] { const payload = bs58check.decode(address); - return this.node('base58Check', payload, [ + return [ + this.node('payload', payload), this.node('version', payload.readUInt8(0).toString('16')), this.node('hash', payload.slice(1)), - ]); + ]; + } + + parseWithBechLib(bechlib: bech32.BechLib, address: string): ParserNode[] { + const decoded = bechlib.decode(address); + return [ + this.node('prefix', decoded.prefix), + this.node('words', Buffer.from(decoded.words)), + this.node('bytes', Buffer.from(bechlib.fromWords(decoded.words))), + ]; + } + + parseBech32(address: string): ParserNode[] { + return this.parseWithBechLib(bech32.bech32, address); + } + + parseBech32m(address: string): ParserNode[] { + return this.parseWithBechLib(bech32.bech32m, address); + } + + parseCashaddr(address: string): ParserNode[] { + const payload = cashaddress.decode(address); + return [ + this.node('prefix', payload.prefix), + this.node('version', payload.version), + this.node('hash', payload.hash), + ]; } - parse(address: string): ParserNode { + convert(outputScript: Buffer): ParserNode { + return this.node( + 'converted', + undefined, + utxolib.getNetworkList().flatMap((network) => + utxolib.addressFormat.addressFormats + .filter((f) => utxolib.addressFormat.isSupportedAddressFormat(f, network)) + .map((addressFormat) => { + const name = utxolib.getNetworkName(network) as string; + try { + return this.node( + `${name} ${addressFormat}`, + utxolib.addressFormat.fromOutputScriptWithFormat(outputScript, addressFormat, network) + ); + } catch (e) { + return this.node(`${name} ${addressFormat}`, 'undefined'); + } + }) + ) + ); + } + + parseToBytes(input: string): ParserNode[] { + type Decoder = (address: string) => ParserNode[]; + const decodeWith = (name: string, decoder: Decoder): ParserNode[] => { + try { + return [this.node(name, undefined, decoder(input))]; + } catch (e) { + return this.params.all ? [this.node(name, undefined, [this.node('decodeError', String(e))])] : []; + } + }; + + return [ + ...decodeWith('base58', this.parseBase58.bind(this)), + ...decodeWith('bech32', this.parseBech32.bind(this)), + ...decodeWith('bech32m', this.parseBech32m.bind(this)), + ...decodeWith('cashaddr', this.parseCashaddr.bind(this)), + ]; + } + + parse(input: string): ParserNode { const networks = this.params.network ? [this.params.network] : utxolib.getNetworkList(); - const matches = networks.flatMap((network) => { + + type Match = { + network: utxolib.Network; + address: string; + addressFormat: utxolib.addressFormat.AddressFormat; + buffer: Buffer; + }; + const matches: Match[] = networks.flatMap((network) => { try { - return { network, buffer: utxolib.address.toOutputScript(address, network) }; + const [addressFormat, buffer] = utxolib.addressFormat.toOutputScriptAndFormat(input, network); + const address = utxolib.addressFormat.fromOutputScriptWithFormat(buffer, addressFormat, network); + return [{ network, address, addressFormat, buffer }]; } catch (e) { return []; } }); const firstMatch = matches[0]; - const nodes = []; + const nodes: ParserNode[] = []; - try { - nodes.push(this.parseBase58(address)); - // eslint-disable-next-line no-empty - } catch (e) {} + nodes.push(...this.parseToBytes(input)); if (firstMatch) { + if (input !== firstMatch.address) { + nodes.push(this.node('normalized', firstMatch.address, this.parseToBytes(firstMatch.address))); + } + + nodes.push(this.node('format', firstMatch.addressFormat)); nodes.push(this.node('outputScript', firstMatch.buffer, this.parseOutputScript(firstMatch.buffer))); nodes.push(this.node('network', matches.map((m) => utxolib.getNetworkName(m.network)).join(', '))); + if (this.params.all || this.params.convert) { - nodes.push( - this.node( - 'converted', - undefined, - utxolib.getNetworkList().flatMap((network) => { - const name = utxolib.getNetworkName(network) as string; - try { - return [this.node(name, utxolib.address.fromOutputScript(firstMatch.buffer, network))]; - } catch (e) { - return [this.node(name, 'undefined')]; - } - }) - ) - ); + nodes.push(this.convert(firstMatch.buffer)); } } - return this.node('address', address, nodes); + + return this.node('address', input, nodes); } } diff --git a/modules/utxo-bin/test/fixtures/formatAddress_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt b/modules/utxo-bin/test/fixtures/formatAddress_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt deleted file mode 100644 index 0c10eee2c0..0000000000 --- a/modules/utxo-bin/test/fixtures/formatAddress_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt +++ /dev/null @@ -1,29 +0,0 @@ -address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW -├─┬ base58Check: 052f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b -│ ├── version: 5 -│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b -├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 -│ └─┬ scriptPubKey: [23byte] -│ ├── type: scripthash -│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 -│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL -├── network: bitcoin, bitcoincash, bitcoinsv, ecash -└─┬ converted - ├── bitcoin: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW - ├── testnet: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW - ├── bitcoincash: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW - ├── bitcoincashTestnet: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW - ├── bitcoingold: AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja - ├── bitcoingoldTestnet: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW - ├── bitcoinsv: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW - ├── bitcoinsvTestnet: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW - ├── dash: 7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE - ├── dashTest: 8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E - ├── dogecoin: 9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad - ├── dogecoinTest: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW - ├── ecash: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW - ├── ecashTest: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW - ├── litecoin: MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 - ├── litecoinTest: QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 - ├── zcash: t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU - └── zcashTest: t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV diff --git a/modules/utxo-bin/test/fixtures/formatAddress_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt similarity index 82% rename from modules/utxo-bin/test/fixtures/formatAddress_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt index 262ccb5c3f..5fb5188e9b 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt @@ -1,7 +1,9 @@ address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt -├─┬ base58Check: 00d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 00d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 0 │ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt similarity index 81% rename from modules/utxo-bin/test/fixtures/formatAddress_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt index 59bf3dfe81..f6316a3827 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb.txt @@ -1,7 +1,9 @@ address: 33qtbAwm4ooBtMQenssbqDE1J4gSMMBRnb -├─┬ base58Check: 05179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├─┬ base58 +│ ├── payload: 05179ddf848a574c6fdb30e6e564f2c8b8fc113545 │ ├── version: 5 │ └── hash: 179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├── format: default ├─┬ outputScript: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt new file mode 100644 index 0000000000..d6ef805c34 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt @@ -0,0 +1,41 @@ +address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ base58 +│ ├── payload: 052f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: 5 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ bech32 +│ └── decodeError: Error: Mixed-case string 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ bech32m +│ └── decodeError: Error: Mixed-case string 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ cashaddr +│ └── decodeError: Error: Mixed-case string 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +├── network: bitcoin, bitcoincash, bitcoinsv, ecash +└─┬ converted + ├── bitcoin default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── testnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── bitcoincash default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── bitcoincash cashaddr: bitcoincash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8 + ├── bitcoincashTestnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── bitcoincashTestnet cashaddr: bchtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vn0enh39m + ├── bitcoingold default: AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja + ├── bitcoingoldTestnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── bitcoinsv default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── bitcoinsvTestnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── dash default: 7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE + ├── dashTest default: 8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E + ├── dogecoin default: 9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad + ├── dogecoinTest default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── ecash default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── ecash cashaddr: ecash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys + ├── ecashTest default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── ecashTest cashaddr: ecashtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhsqql6tt + ├── litecoin default: MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 + ├── litecoinTest default: QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 + ├── zcash default: t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU + └── zcashTest default: t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV diff --git a/modules/utxo-bin/test/fixtures/formatAddress_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt similarity index 81% rename from modules/utxo-bin/test/fixtures/formatAddress_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt index b0ddf319bd..e07a11cdaf 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt @@ -1,7 +1,9 @@ address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW -├─┬ base58Check: 052f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: 052f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: 5 │ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.txt similarity index 60% rename from modules/utxo-bin/test/fixtures/formatAddress_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.txt index fefafa5715..f4234655be 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex.txt @@ -1,4 +1,9 @@ address: bc1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfnsjhucex +├─┬ bech32m +│ ├── prefix: bc +│ ├── words: 0107080c051b1a15101411051b041812151b0a050e1c070b1704141311041a1c111a061014070e0011041902031b0004080e091310 +│ └── bytes: 09d0c2ef5585225d9312aed45770ebb92938935c8e8d0a1dc0893221ec04439338 +├── format: default ├─┬ outputScript: 51203a185deab0a44bb26255da8aee1d772527126b91d1a143b81126443d80887267 │ └─┬ scriptPubKey: [34byte] │ ├── type: taproot diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.txt similarity index 93% rename from modules/utxo-bin/test/fixtures/formatAddress_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.txt index 4d6f4b62f8..2e1418b544 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c.txt @@ -1,4 +1,5 @@ address: bc1q62tshlryz9lrjlw9edaf4l5l3v3deg034uw28c +├── format: default ├─┬ outputScript: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ └─┬ scriptPubKey: [22byte] │ ├── type: witnesspubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.txt similarity index 61% rename from modules/utxo-bin/test/fixtures/formatAddress_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.txt index 7f8c3f6cd4..795e45d502 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoin_default_bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn.txt @@ -1,4 +1,9 @@ address: bc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsdzf7hn +├─┬ bech32 +│ ├── prefix: bc +│ ├── words: 00191c1a061b190b140e00101f120a0e0f0e1d180f17061408121a0d1c011b01071a05181d1203160b11160e1a1c0d111616191810 +│ └── bytes: 0679a36f2ba3810fc94e7bbb87dcd444b4de07613e8b8ec8765c6ced71b1b5b388 +├── format: default ├─┬ outputScript: 0020cf346de5747021f929cf7770fb9a88969bc0ec27d171d90ecb8d9dae3636b671 │ └─┬ scriptPubKey: [34byte] │ ├── type: witnessscripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_cashaddr_bchtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vn0enh39m.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_cashaddr_bchtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vn0enh39m.txt new file mode 100644 index 0000000000..4a295188cd --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_cashaddr_bchtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vn0enh39m.txt @@ -0,0 +1,12 @@ +address: bchtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vn0enh39m +├─┬ cashaddr +│ ├── prefix: bchtest +│ ├── version: scripthash +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: cashaddr +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: bitcoincashTestnet diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_cashaddr_bchtest:qrffwzluvsghuwtach9h4xh7n79j9h9p7ysal2ugld.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_cashaddr_bchtest:qrffwzluvsghuwtach9h4xh7n79j9h9p7ysal2ugld.txt new file mode 100644 index 0000000000..c8e1d9b9b1 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_cashaddr_bchtest:qrffwzluvsghuwtach9h4xh7n79j9h9p7ysal2ugld.txt @@ -0,0 +1,12 @@ +address: bchtest:qrffwzluvsghuwtach9h4xh7n79j9h9p7ysal2ugld +├─┬ cashaddr +│ ├── prefix: bchtest +│ ├── version: pubkeyhash +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: cashaddr +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: bitcoincashTestnet diff --git a/modules/utxo-bin/test/fixtures/formatAddress_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt similarity index 83% rename from modules/utxo-bin/test/fixtures/formatAddress_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt index 8dabdbe135..0589533abf 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -1,7 +1,9 @@ address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW -├─┬ base58Check: c42f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: c42f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: c4 │ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt similarity index 84% rename from modules/utxo-bin/test/fixtures/formatAddress_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt index 91472e3120..b6170c27c1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincashTestnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -1,7 +1,9 @@ address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ -├─┬ base58Check: 6fd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 6fd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 6f │ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_cashaddr_bitcoincash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_cashaddr_bitcoincash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8.txt new file mode 100644 index 0000000000..7fb80565b4 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_cashaddr_bitcoincash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8.txt @@ -0,0 +1,12 @@ +address: bitcoincash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8 +├─┬ cashaddr +│ ├── prefix: bitcoincash +│ ├── version: scripthash +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: cashaddr +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: bitcoincash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_cashaddr_bitcoincash:qrffwzluvsghuwtach9h4xh7n79j9h9p7y50md7lc3.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_cashaddr_bitcoincash:qrffwzluvsghuwtach9h4xh7n79j9h9p7y50md7lc3.txt new file mode 100644 index 0000000000..de40c896fa --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_cashaddr_bitcoincash:qrffwzluvsghuwtach9h4xh7n79j9h9p7y50md7lc3.txt @@ -0,0 +1,12 @@ +address: bitcoincash:qrffwzluvsghuwtach9h4xh7n79j9h9p7y50md7lc3 +├─┬ cashaddr +│ ├── prefix: bitcoincash +│ ├── version: pubkeyhash +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: cashaddr +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: bitcoincash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt new file mode 100644 index 0000000000..5fb5188e9b --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt @@ -0,0 +1,12 @@ +address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt +├─┬ base58 +│ ├── payload: 00d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ ├── version: 0 +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: bitcoin, bitcoincash, bitcoinsv, ecash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt new file mode 100644 index 0000000000..d6ef805c34 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt @@ -0,0 +1,41 @@ +address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ base58 +│ ├── payload: 052f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: 5 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ bech32 +│ └── decodeError: Error: Mixed-case string 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ bech32m +│ └── decodeError: Error: Mixed-case string 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ cashaddr +│ └── decodeError: Error: Mixed-case string 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +├── network: bitcoin, bitcoincash, bitcoinsv, ecash +└─┬ converted + ├── bitcoin default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── testnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── bitcoincash default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── bitcoincash cashaddr: bitcoincash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8 + ├── bitcoincashTestnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── bitcoincashTestnet cashaddr: bchtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vn0enh39m + ├── bitcoingold default: AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja + ├── bitcoingoldTestnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── bitcoinsv default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── bitcoinsvTestnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── dash default: 7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE + ├── dashTest default: 8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E + ├── dogecoin default: 9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad + ├── dogecoinTest default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── ecash default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── ecash cashaddr: ecash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys + ├── ecashTest default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── ecashTest cashaddr: ecashtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhsqql6tt + ├── litecoin default: MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 + ├── litecoinTest default: QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 + ├── zcash default: t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU + └── zcashTest default: t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt new file mode 100644 index 0000000000..e07a11cdaf --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoincash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt @@ -0,0 +1,12 @@ +address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ base58 +│ ├── payload: 052f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: 5 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: bitcoin, bitcoincash, bitcoinsv, ecash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt similarity index 83% rename from modules/utxo-bin/test/fixtures/formatAddress_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt index 5f02b3e3b5..0f66f8e58b 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt @@ -1,7 +1,9 @@ address: 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di -├─┬ base58Check: c4179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├─┬ base58 +│ ├── payload: c4179ddf848a574c6fdb30e6e564f2c8b8fc113545 │ ├── version: c4 │ └── hash: 179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├── format: default ├─┬ outputScript: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt new file mode 100644 index 0000000000..0589533abf --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -0,0 +1,12 @@ +address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW +├─┬ base58 +│ ├── payload: c42f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: c4 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt new file mode 100644 index 0000000000..b6170c27c1 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -0,0 +1,12 @@ +address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ +├─┬ base58 +│ ├── payload: 6fd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ ├── version: 6f +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_tbtg1q62tshlryz9lrjlw9edaf4l5l3v3deg0358txp6.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_tbtg1q62tshlryz9lrjlw9edaf4l5l3v3deg0358txp6.txt similarity index 93% rename from modules/utxo-bin/test/fixtures/formatAddress_tbtg1q62tshlryz9lrjlw9edaf4l5l3v3deg0358txp6.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_tbtg1q62tshlryz9lrjlw9edaf4l5l3v3deg0358txp6.txt index 0fe4266355..2c71dbc89e 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_tbtg1q62tshlryz9lrjlw9edaf4l5l3v3deg0358txp6.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_tbtg1q62tshlryz9lrjlw9edaf4l5l3v3deg0358txp6.txt @@ -1,4 +1,5 @@ address: tbtg1q62tshlryz9lrjlw9edaf4l5l3v3deg0358txp6 +├── format: default ├─┬ outputScript: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ └─┬ scriptPubKey: [22byte] │ ├── type: witnesspubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_tbtg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsgdfacv.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_tbtg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsgdfacv.txt similarity index 61% rename from modules/utxo-bin/test/fixtures/formatAddress_tbtg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsgdfacv.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_tbtg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsgdfacv.txt index cb6f7dc370..f7085a7191 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_tbtg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsgdfacv.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingoldTestnet_default_tbtg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsgdfacv.txt @@ -1,4 +1,9 @@ address: tbtg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsgdfacv +├─┬ bech32 +│ ├── prefix: tbtg +│ ├── words: 00191c1a061b190b140e00101f120a0e0f0e1d180f17061408121a0d1c011b01071a05181d1203160b11160e1a1c0d111616191810 +│ └── bytes: 0679a36f2ba3810fc94e7bbb87dcd444b4de07613e8b8ec8765c6ced71b1b5b388 +├── format: default ├─┬ outputScript: 0020cf346de5747021f929cf7770fb9a88969bc0ec27d171d90ecb8d9dae3636b671 │ └─┬ scriptPubKey: [34byte] │ ├── type: witnessscripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_AHvkK8Jwr48xc9vDERsLZU8Ad9KRDP3e7m.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_AHvkK8Jwr48xc9vDERsLZU8Ad9KRDP3e7m.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_AHvkK8Jwr48xc9vDERsLZU8Ad9KRDP3e7m.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_AHvkK8Jwr48xc9vDERsLZU8Ad9KRDP3e7m.txt index ee6cc2b933..6f10607c52 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_AHvkK8Jwr48xc9vDERsLZU8Ad9KRDP3e7m.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_AHvkK8Jwr48xc9vDERsLZU8Ad9KRDP3e7m.txt @@ -1,7 +1,9 @@ address: AHvkK8Jwr48xc9vDERsLZU8Ad9KRDP3e7m -├─┬ base58Check: 17179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├─┬ base58 +│ ├── payload: 17179ddf848a574c6fdb30e6e564f2c8b8fc113545 │ ├── version: 17 │ └── hash: 179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├── format: default ├─┬ outputScript: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja.txt index f4b1ec8689..482c75182a 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja.txt @@ -1,7 +1,9 @@ address: AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja -├─┬ base58Check: 172f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: 172f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: 17 │ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_Gd3RGL1YRshmnUiGneEPMh3kffR4S91A1w.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_Gd3RGL1YRshmnUiGneEPMh3kffR4S91A1w.txt similarity index 82% rename from modules/utxo-bin/test/fixtures/formatAddress_Gd3RGL1YRshmnUiGneEPMh3kffR4S91A1w.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_Gd3RGL1YRshmnUiGneEPMh3kffR4S91A1w.txt index edb60acebb..a30877a299 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_Gd3RGL1YRshmnUiGneEPMh3kffR4S91A1w.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_Gd3RGL1YRshmnUiGneEPMh3kffR4S91A1w.txt @@ -1,7 +1,9 @@ address: Gd3RGL1YRshmnUiGneEPMh3kffR4S91A1w -├─┬ base58Check: 26d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 26d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 26 │ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_btg1q62tshlryz9lrjlw9edaf4l5l3v3deg03r4g0js.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_btg1q62tshlryz9lrjlw9edaf4l5l3v3deg03r4g0js.txt similarity index 93% rename from modules/utxo-bin/test/fixtures/formatAddress_btg1q62tshlryz9lrjlw9edaf4l5l3v3deg03r4g0js.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_btg1q62tshlryz9lrjlw9edaf4l5l3v3deg03r4g0js.txt index 91a1469ad7..6b4ead3939 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_btg1q62tshlryz9lrjlw9edaf4l5l3v3deg03r4g0js.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_btg1q62tshlryz9lrjlw9edaf4l5l3v3deg03r4g0js.txt @@ -1,4 +1,5 @@ address: btg1q62tshlryz9lrjlw9edaf4l5l3v3deg03r4g0js +├── format: default ├─┬ outputScript: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ └─┬ scriptPubKey: [22byte] │ ├── type: witnesspubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_btg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsrzdr8e.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_btg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsrzdr8e.txt similarity index 61% rename from modules/utxo-bin/test/fixtures/formatAddress_btg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsrzdr8e.txt rename to modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_btg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsrzdr8e.txt index a318c83936..1fdb0a801c 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_btg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsrzdr8e.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoingold_default_btg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsrzdr8e.txt @@ -1,4 +1,9 @@ address: btg1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecsrzdr8e +├─┬ bech32 +│ ├── prefix: btg +│ ├── words: 00191c1a061b190b140e00101f120a0e0f0e1d180f17061408121a0d1c011b01071a05181d1203160b11160e1a1c0d111616191810 +│ └── bytes: 0679a36f2ba3810fc94e7bbb87dcd444b4de07613e8b8ec8765c6ced71b1b5b388 +├── format: default ├─┬ outputScript: 0020cf346de5747021f929cf7770fb9a88969bc0ec27d171d90ecb8d9dae3636b671 │ └─┬ scriptPubKey: [34byte] │ ├── type: witnessscripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsvTestnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsvTestnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt new file mode 100644 index 0000000000..0589533abf --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsvTestnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -0,0 +1,12 @@ +address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW +├─┬ base58 +│ ├── payload: c42f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: c4 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsvTestnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsvTestnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt new file mode 100644 index 0000000000..b6170c27c1 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsvTestnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -0,0 +1,12 @@ +address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ +├─┬ base58 +│ ├── payload: 6fd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ ├── version: 6f +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsv_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsv_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt new file mode 100644 index 0000000000..5fb5188e9b --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsv_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt @@ -0,0 +1,12 @@ +address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt +├─┬ base58 +│ ├── payload: 00d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ ├── version: 0 +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: bitcoin, bitcoincash, bitcoinsv, ecash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsv_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt b/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsv_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt new file mode 100644 index 0000000000..e07a11cdaf --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_bitcoinsv_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt @@ -0,0 +1,12 @@ +address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ base58 +│ ├── payload: 052f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: 5 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: bitcoin, bitcoincash, bitcoinsv, ecash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E.txt b/modules/utxo-bin/test/fixtures/formatAddress_dashTest_default_8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E.txt rename to modules/utxo-bin/test/fixtures/formatAddress_dashTest_default_8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E.txt index 9c5768f712..6cce727e93 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_dashTest_default_8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E.txt @@ -1,7 +1,9 @@ address: 8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E -├─┬ base58Check: 132f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: 132f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: 13 │ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_yfWwhQQvrGy9Cgw7HSCtpUozs7hGy5CK3x.txt b/modules/utxo-bin/test/fixtures/formatAddress_dashTest_default_yfWwhQQvrGy9Cgw7HSCtpUozs7hGy5CK3x.txt similarity index 81% rename from modules/utxo-bin/test/fixtures/formatAddress_yfWwhQQvrGy9Cgw7HSCtpUozs7hGy5CK3x.txt rename to modules/utxo-bin/test/fixtures/formatAddress_dashTest_default_yfWwhQQvrGy9Cgw7HSCtpUozs7hGy5CK3x.txt index 0221e4eaba..6c91817dad 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_yfWwhQQvrGy9Cgw7HSCtpUozs7hGy5CK3x.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_dashTest_default_yfWwhQQvrGy9Cgw7HSCtpUozs7hGy5CK3x.txt @@ -1,7 +1,9 @@ address: yfWwhQQvrGy9Cgw7HSCtpUozs7hGy5CK3x -├─┬ base58Check: 8cd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 8cd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 8c │ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE.txt b/modules/utxo-bin/test/fixtures/formatAddress_dash_default_7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE.txt rename to modules/utxo-bin/test/fixtures/formatAddress_dash_default_7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE.txt index 58f184db74..6620cb7c7a 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_dash_default_7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE.txt @@ -1,7 +1,9 @@ address: 7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE -├─┬ base58Check: 102f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: 102f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: 10 │ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_XutLgTLVQjK4rx1ZiatVnTPeaqCuNvRz6k.txt b/modules/utxo-bin/test/fixtures/formatAddress_dash_default_XutLgTLVQjK4rx1ZiatVnTPeaqCuNvRz6k.txt similarity index 81% rename from modules/utxo-bin/test/fixtures/formatAddress_XutLgTLVQjK4rx1ZiatVnTPeaqCuNvRz6k.txt rename to modules/utxo-bin/test/fixtures/formatAddress_dash_default_XutLgTLVQjK4rx1ZiatVnTPeaqCuNvRz6k.txt index 51d07d558e..58164a30e9 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_XutLgTLVQjK4rx1ZiatVnTPeaqCuNvRz6k.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_dash_default_XutLgTLVQjK4rx1ZiatVnTPeaqCuNvRz6k.txt @@ -1,7 +1,9 @@ address: XutLgTLVQjK4rx1ZiatVnTPeaqCuNvRz6k -├─┬ base58Check: 4cd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 4cd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 4c │ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_dogecoinTest_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress_dogecoinTest_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt new file mode 100644 index 0000000000..0589533abf --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_dogecoinTest_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -0,0 +1,12 @@ +address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW +├─┬ base58 +│ ├── payload: c42f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: c4 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_noPf7UN9gQTV7zAmd7DHj6TksVjoihVkLY.txt b/modules/utxo-bin/test/fixtures/formatAddress_dogecoinTest_default_noPf7UN9gQTV7zAmd7DHj6TksVjoihVkLY.txt similarity index 82% rename from modules/utxo-bin/test/fixtures/formatAddress_noPf7UN9gQTV7zAmd7DHj6TksVjoihVkLY.txt rename to modules/utxo-bin/test/fixtures/formatAddress_dogecoinTest_default_noPf7UN9gQTV7zAmd7DHj6TksVjoihVkLY.txt index e30c96a030..e029baaba8 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_noPf7UN9gQTV7zAmd7DHj6TksVjoihVkLY.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_dogecoinTest_default_noPf7UN9gQTV7zAmd7DHj6TksVjoihVkLY.txt @@ -1,7 +1,9 @@ address: noPf7UN9gQTV7zAmd7DHj6TksVjoihVkLY -├─┬ base58Check: 71d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 71d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 71 │ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad.txt b/modules/utxo-bin/test/fixtures/formatAddress_dogecoin_default_9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad.txt rename to modules/utxo-bin/test/fixtures/formatAddress_dogecoin_default_9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad.txt index c8ba16f0f1..e9077b886d 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_dogecoin_default_9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad.txt @@ -1,7 +1,9 @@ address: 9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad -├─┬ base58Check: 162f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: 162f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: 16 │ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_DQLbPTdEkRzmF1babHZqUgsTddMWgQq2ad.txt b/modules/utxo-bin/test/fixtures/formatAddress_dogecoin_default_DQLbPTdEkRzmF1babHZqUgsTddMWgQq2ad.txt similarity index 81% rename from modules/utxo-bin/test/fixtures/formatAddress_DQLbPTdEkRzmF1babHZqUgsTddMWgQq2ad.txt rename to modules/utxo-bin/test/fixtures/formatAddress_dogecoin_default_DQLbPTdEkRzmF1babHZqUgsTddMWgQq2ad.txt index 6eb996fc55..1febb8c26f 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_DQLbPTdEkRzmF1babHZqUgsTddMWgQq2ad.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_dogecoin_default_DQLbPTdEkRzmF1babHZqUgsTddMWgQq2ad.txt @@ -1,7 +1,9 @@ address: DQLbPTdEkRzmF1babHZqUgsTddMWgQq2ad -├─┬ base58Check: 1ed2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 1ed2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 1e │ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_cashaddr_ecashtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhsqql6tt.txt b/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_cashaddr_ecashtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhsqql6tt.txt new file mode 100644 index 0000000000..fec7d419a7 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_cashaddr_ecashtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhsqql6tt.txt @@ -0,0 +1,12 @@ +address: ecashtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhsqql6tt +├─┬ cashaddr +│ ├── prefix: ecashtest +│ ├── version: scripthash +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: cashaddr +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: ecashTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_cashaddr_ecashtest:qrffwzluvsghuwtach9h4xh7n79j9h9p7y5zxe5r3a.txt b/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_cashaddr_ecashtest:qrffwzluvsghuwtach9h4xh7n79j9h9p7y5zxe5r3a.txt new file mode 100644 index 0000000000..fbc7b5a579 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_cashaddr_ecashtest:qrffwzluvsghuwtach9h4xh7n79j9h9p7y5zxe5r3a.txt @@ -0,0 +1,12 @@ +address: ecashtest:qrffwzluvsghuwtach9h4xh7n79j9h9p7y5zxe5r3a +├─┬ cashaddr +│ ├── prefix: ecashtest +│ ├── version: pubkeyhash +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: cashaddr +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: ecashTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt new file mode 100644 index 0000000000..0589533abf --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -0,0 +1,12 @@ +address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW +├─┬ base58 +│ ├── payload: c42f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: c4 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt new file mode 100644 index 0000000000..b6170c27c1 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_ecashTest_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -0,0 +1,12 @@ +address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ +├─┬ base58 +│ ├── payload: 6fd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ ├── version: 6f +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ecash_cashaddr_ecash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys.txt b/modules/utxo-bin/test/fixtures/formatAddress_ecash_cashaddr_ecash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys.txt new file mode 100644 index 0000000000..3ffc4255c0 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_ecash_cashaddr_ecash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys.txt @@ -0,0 +1,12 @@ +address: ecash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys +├─┬ cashaddr +│ ├── prefix: ecash +│ ├── version: scripthash +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: cashaddr +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: ecash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ecash_cashaddr_ecash:qrffwzluvsghuwtach9h4xh7n79j9h9p7ydz0x997x.txt b/modules/utxo-bin/test/fixtures/formatAddress_ecash_cashaddr_ecash:qrffwzluvsghuwtach9h4xh7n79j9h9p7ydz0x997x.txt new file mode 100644 index 0000000000..bb77bccbfb --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_ecash_cashaddr_ecash:qrffwzluvsghuwtach9h4xh7n79j9h9p7ydz0x997x.txt @@ -0,0 +1,12 @@ +address: ecash:qrffwzluvsghuwtach9h4xh7n79j9h9p7ydz0x997x +├─┬ cashaddr +│ ├── prefix: ecash +│ ├── version: pubkeyhash +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: cashaddr +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: ecash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ecash_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt b/modules/utxo-bin/test/fixtures/formatAddress_ecash_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt new file mode 100644 index 0000000000..5fb5188e9b --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_ecash_default_1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt.txt @@ -0,0 +1,12 @@ +address: 1LCVrCgbT26Ui1QyrhaGvvhrkVdDRAXxtt +├─┬ base58 +│ ├── payload: 00d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ ├── version: 0 +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: bitcoin, bitcoincash, bitcoinsv, ecash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ecash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt b/modules/utxo-bin/test/fixtures/formatAddress_ecash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt new file mode 100644 index 0000000000..d6ef805c34 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_ecash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.all.txt @@ -0,0 +1,41 @@ +address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ base58 +│ ├── payload: 052f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: 5 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ bech32 +│ └── decodeError: Error: Mixed-case string 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ bech32m +│ └── decodeError: Error: Mixed-case string 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ cashaddr +│ └── decodeError: Error: Mixed-case string 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +├── network: bitcoin, bitcoincash, bitcoinsv, ecash +└─┬ converted + ├── bitcoin default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── testnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── bitcoincash default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── bitcoincash cashaddr: bitcoincash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhaa54xz8 + ├── bitcoincashTestnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── bitcoincashTestnet cashaddr: bchtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vn0enh39m + ├── bitcoingold default: AL6LE7aicvjeMTdtWrgJpXGYuyzsxJYdja + ├── bitcoingoldTestnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── bitcoinsv default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── bitcoinsvTestnet default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── dash default: 7Wj7LMVhefVWdRfHLvM5ReN3WTCGzyVbdE + ├── dashTest default: 8ijvHgPZnCt95j5YRBM2t2BQPxy76bvp6E + ├── dogecoin default: 9vkjF1HRukGmY2VoVSLzLPzmHUjwCvtAad + ├── dogecoinTest default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── ecash default: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW + ├── ecash cashaddr: ecash:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vwsflwuys + ├── ecashTest default: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW + ├── ecashTest cashaddr: ecashtest:pqh4utv0fm35eng6gycfwkuluc6l7e0q9vhsqql6tt + ├── litecoin default: MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 + ├── litecoinTest default: QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 + ├── zcash default: t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU + └── zcashTest default: t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ecash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt b/modules/utxo-bin/test/fixtures/formatAddress_ecash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt new file mode 100644 index 0000000000..e07a11cdaf --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_ecash_default_361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW.txt @@ -0,0 +1,12 @@ +address: 361UWADXqgPsdf8L5Jga6GNPauMuBtT1eW +├─┬ base58 +│ ├── payload: 052f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: 5 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: bitcoin, bitcoincash, bitcoinsv, ecash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_QNkrmvk2hNMdEKoF67XVXreheoLS5yeqB5.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_QNkrmvk2hNMdEKoF67XVXreheoLS5yeqB5.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_QNkrmvk2hNMdEKoF67XVXreheoLS5yeqB5.txt rename to modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_QNkrmvk2hNMdEKoF67XVXreheoLS5yeqB5.txt index 55604a02d4..f1133c71b5 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_QNkrmvk2hNMdEKoF67XVXreheoLS5yeqB5.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_QNkrmvk2hNMdEKoF67XVXreheoLS5yeqB5.txt @@ -1,7 +1,9 @@ address: QNkrmvk2hNMdEKoF67XVXreheoLS5yeqB5 -├─┬ base58Check: 3a179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├─┬ base58 +│ ├── payload: 3a179ddf848a574c6fdb30e6e564f2c8b8fc113545 │ ├── version: 3a │ └── hash: 179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├── format: default ├─┬ outputScript: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3.txt rename to modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3.txt index f844243bad..35df2bb9de 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3.txt @@ -1,7 +1,9 @@ address: QQvSgv1oUExJydWvNYLTnuo5we1tsV5DZ3 -├─┬ base58Check: 3a2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: 3a2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: 3a │ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt new file mode 100644 index 0000000000..b6170c27c1 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -0,0 +1,12 @@ +address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ +├─┬ base58 +│ ├── payload: 6fd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ ├── version: 6f +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_tltc1q62tshlryz9lrjlw9edaf4l5l3v3deg03xjh8vz.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_tltc1q62tshlryz9lrjlw9edaf4l5l3v3deg03xjh8vz.txt similarity index 93% rename from modules/utxo-bin/test/fixtures/formatAddress_tltc1q62tshlryz9lrjlw9edaf4l5l3v3deg03xjh8vz.txt rename to modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_tltc1q62tshlryz9lrjlw9edaf4l5l3v3deg03xjh8vz.txt index 3cc53eec79..a89cc04c0c 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_tltc1q62tshlryz9lrjlw9edaf4l5l3v3deg03xjh8vz.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_tltc1q62tshlryz9lrjlw9edaf4l5l3v3deg03xjh8vz.txt @@ -1,4 +1,5 @@ address: tltc1q62tshlryz9lrjlw9edaf4l5l3v3deg03xjh8vz +├── format: default ├─┬ outputScript: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ └─┬ scriptPubKey: [22byte] │ ├── type: witnesspubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_tltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs9frsjr.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_tltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs9frsjr.txt similarity index 61% rename from modules/utxo-bin/test/fixtures/formatAddress_tltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs9frsjr.txt rename to modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_tltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs9frsjr.txt index a4a35bfc8d..ce48c9c1c2 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_tltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs9frsjr.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoinTest_default_tltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs9frsjr.txt @@ -1,4 +1,9 @@ address: tltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs9frsjr +├─┬ bech32 +│ ├── prefix: tltc +│ ├── words: 00191c1a061b190b140e00101f120a0e0f0e1d180f17061408121a0d1c011b01071a05181d1203160b11160e1a1c0d111616191810 +│ └── bytes: 0679a36f2ba3810fc94e7bbb87dcd444b4de07613e8b8ec8765c6ced71b1b5b388 +├── format: default ├─┬ outputScript: 0020cf346de5747021f929cf7770fb9a88969bc0ec27d171d90ecb8d9dae3636b671 │ └─┬ scriptPubKey: [34byte] │ ├── type: witnessscripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv.txt similarity index 81% rename from modules/utxo-bin/test/fixtures/formatAddress_LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv.txt rename to modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv.txt index c54f43d6b1..8a770071ed 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv.txt @@ -1,7 +1,9 @@ address: LeRT7QzRXgLXxp792qZaCwmcxhzVVhCFuv -├─┬ base58Check: 30d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 30d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 30 │ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_MA42u4Mj1vecgrgYtkrwerUQcmGtR4kUvr.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_MA42u4Mj1vecgrgYtkrwerUQcmGtR4kUvr.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_MA42u4Mj1vecgrgYtkrwerUQcmGtR4kUvr.txt rename to modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_MA42u4Mj1vecgrgYtkrwerUQcmGtR4kUvr.txt index 20a7ad69e4..76b7913a01 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_MA42u4Mj1vecgrgYtkrwerUQcmGtR4kUvr.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_MA42u4Mj1vecgrgYtkrwerUQcmGtR4kUvr.txt @@ -1,7 +1,9 @@ address: MA42u4Mj1vecgrgYtkrwerUQcmGtR4kUvr -├─┬ base58Check: 32179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├─┬ base58 +│ ├── payload: 32179ddf848a574c6fdb30e6e564f2c8b8fc113545 │ ├── version: 32 │ └── hash: 179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├── format: default ├─┬ outputScript: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5.txt rename to modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5.txt index 8c1b9cda9c..886cf334d1 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5.txt @@ -1,7 +1,9 @@ address: MCDcp3dVnoFJSAQEBBfuuucnubxM6uQRD5 -├─┬ base58Check: 322f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: 322f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: 32 │ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ltc1q62tshlryz9lrjlw9edaf4l5l3v3deg033q5wlg.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_ltc1q62tshlryz9lrjlw9edaf4l5l3v3deg033q5wlg.txt similarity index 93% rename from modules/utxo-bin/test/fixtures/formatAddress_ltc1q62tshlryz9lrjlw9edaf4l5l3v3deg033q5wlg.txt rename to modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_ltc1q62tshlryz9lrjlw9edaf4l5l3v3deg033q5wlg.txt index d224ede83c..fd2224e3cb 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_ltc1q62tshlryz9lrjlw9edaf4l5l3v3deg033q5wlg.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_ltc1q62tshlryz9lrjlw9edaf4l5l3v3deg033q5wlg.txt @@ -1,4 +1,5 @@ address: ltc1q62tshlryz9lrjlw9edaf4l5l3v3deg033q5wlg +├── format: default ├─┬ outputScript: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ └─┬ scriptPubKey: [22byte] │ ├── type: witnesspubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_ltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecswx8wdk.txt b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_ltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecswx8wdk.txt similarity index 61% rename from modules/utxo-bin/test/fixtures/formatAddress_ltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecswx8wdk.txt rename to modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_ltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecswx8wdk.txt index d8b21f0160..42b1cd1609 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_ltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecswx8wdk.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_litecoin_default_ltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecswx8wdk.txt @@ -1,4 +1,9 @@ address: ltc1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecswx8wdk +├─┬ bech32 +│ ├── prefix: ltc +│ ├── words: 00191c1a061b190b140e00101f120a0e0f0e1d180f17061408121a0d1c011b01071a05181d1203160b11160e1a1c0d111616191810 +│ └── bytes: 0679a36f2ba3810fc94e7bbb87dcd444b4de07613e8b8ec8765c6ced71b1b5b388 +├── format: default ├─┬ outputScript: 0020cf346de5747021f929cf7770fb9a88969bc0ec27d171d90ecb8d9dae3636b671 │ └─┬ scriptPubKey: [34byte] │ ├── type: witnessscripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt new file mode 100644 index 0000000000..0f66f8e58b --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di.txt @@ -0,0 +1,12 @@ +address: 2MuQ6eusngGJY693CU1VUTADGWQtcBBk1di +├─┬ base58 +│ ├── payload: c4179ddf848a574c6fdb30e6e564f2c8b8fc113545 +│ ├── version: c4 +│ └── hash: 179ddf848a574c6fdb30e6e564f2c8b8fc113545 +├── format: default +├─┬ outputScript: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a914179ddf848a574c6fdb30e6e564f2c8b8fc11354587 +│ └── asm: OP_HASH160 179ddf848a574c6fdb30e6e564f2c8b8fc113545 OP_EQUAL +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt new file mode 100644 index 0000000000..0589533abf --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW.txt @@ -0,0 +1,12 @@ +address: 2MwZgZu9ZT8uDqSkskSJSiDMeoFa4z4RtdW +├─┬ base58 +│ ├── payload: c42f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +│ ├── version: c4 +│ └── hash: 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default +├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └─┬ scriptPubKey: [23byte] +│ ├── type: scripthash +│ ├── hex: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 +│ └── asm: OP_HASH160 2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b OP_EQUAL +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, dogecoinTest, ecashTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt new file mode 100644 index 0000000000..b6170c27c1 --- /dev/null +++ b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ.txt @@ -0,0 +1,12 @@ +address: mziT9FmaG3XjV7tbaGYekqvBcVDvGnY3EZ +├─┬ base58 +│ ├── payload: 6fd2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +│ ├── version: 6f +│ └── hash: d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default +├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └─┬ scriptPubKey: [25byte] +│ ├── type: pubkeyhash +│ ├── hex: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac +│ └── asm: OP_DUP OP_HASH160 d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 OP_EQUALVERIFY OP_CHECKSIG +└── network: testnet, bitcoincashTestnet, bitcoingoldTestnet, bitcoinsvTestnet, ecashTest, litecoinTest diff --git a/modules/utxo-bin/test/fixtures/formatAddress_tb1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns9l2hrf.txt b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_tb1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns9l2hrf.txt similarity index 60% rename from modules/utxo-bin/test/fixtures/formatAddress_tb1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns9l2hrf.txt rename to modules/utxo-bin/test/fixtures/formatAddress_testnet_default_tb1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns9l2hrf.txt index f04222c900..ca339e350f 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_tb1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns9l2hrf.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_tb1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns9l2hrf.txt @@ -1,4 +1,9 @@ address: tb1p8gv9m64s539mycj4m29wu8thy5n3y6u36xs58wq3yezrmqygwfns9l2hrf +├─┬ bech32m +│ ├── prefix: tb +│ ├── words: 0107080c051b1a15101411051b041812151b0a050e1c070b1704141311041a1c111a061014070e0011041902031b0004080e091310 +│ └── bytes: 09d0c2ef5585225d9312aed45770ebb92938935c8e8d0a1dc0893221ec04439338 +├── format: default ├─┬ outputScript: 51203a185deab0a44bb26255da8aee1d772527126b91d1a143b81126443d80887267 │ └─┬ scriptPubKey: [34byte] │ ├── type: taproot diff --git a/modules/utxo-bin/test/fixtures/formatAddress_tb1q62tshlryz9lrjlw9edaf4l5l3v3deg03l64eut.txt b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_tb1q62tshlryz9lrjlw9edaf4l5l3v3deg03l64eut.txt similarity index 93% rename from modules/utxo-bin/test/fixtures/formatAddress_tb1q62tshlryz9lrjlw9edaf4l5l3v3deg03l64eut.txt rename to modules/utxo-bin/test/fixtures/formatAddress_testnet_default_tb1q62tshlryz9lrjlw9edaf4l5l3v3deg03l64eut.txt index 5a93adbf7c..3d9d47d7bc 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_tb1q62tshlryz9lrjlw9edaf4l5l3v3deg03l64eut.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_tb1q62tshlryz9lrjlw9edaf4l5l3v3deg03l64eut.txt @@ -1,4 +1,5 @@ address: tb1q62tshlryz9lrjlw9edaf4l5l3v3deg03l64eut +├── format: default ├─┬ outputScript: 0014d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ └─┬ scriptPubKey: [22byte] │ ├── type: witnesspubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_tb1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs62l3du.txt b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_tb1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs62l3du.txt similarity index 61% rename from modules/utxo-bin/test/fixtures/formatAddress_tb1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs62l3du.txt rename to modules/utxo-bin/test/fixtures/formatAddress_testnet_default_tb1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs62l3du.txt index 310440cc0f..5954032900 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_tb1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs62l3du.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_testnet_default_tb1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs62l3du.txt @@ -1,4 +1,9 @@ address: tb1qeu6xmet5wqslj2w0wac0hx5gj6dupmp869cajrkt3kw6ud3kkecs62l3du +├─┬ bech32 +│ ├── prefix: tb +│ ├── words: 00191c1a061b190b140e00101f120a0e0f0e1d180f17061408121a0d1c011b01071a05181d1203160b11160e1a1c0d111616191810 +│ └── bytes: 0679a36f2ba3810fc94e7bbb87dcd444b4de07613e8b8ec8765c6ced71b1b5b388 +├── format: default ├─┬ outputScript: 0020cf346de5747021f929cf7770fb9a88969bc0ec27d171d90ecb8d9dae3636b671 │ └─┬ scriptPubKey: [34byte] │ ├── type: witnessscripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV.txt b/modules/utxo-bin/test/fixtures/formatAddress_zcashTest_default_t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV.txt similarity index 81% rename from modules/utxo-bin/test/fixtures/formatAddress_t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV.txt rename to modules/utxo-bin/test/fixtures/formatAddress_zcashTest_default_t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV.txt index e91d0e704c..c4563ac11d 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_zcashTest_default_t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV.txt @@ -1,7 +1,9 @@ address: t2AsGZAjogTnqmzkxwUVjmhewx3n9qwJkTV -├─┬ base58Check: 1cba2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: 1cba2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: 1c │ └── hash: ba2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C.txt b/modules/utxo-bin/test/fixtures/formatAddress_zcashTest_default_tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C.txt similarity index 82% rename from modules/utxo-bin/test/fixtures/formatAddress_tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C.txt rename to modules/utxo-bin/test/fixtures/formatAddress_zcashTest_default_tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C.txt index b761874d48..262ec60c9f 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_zcashTest_default_tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C.txt @@ -1,7 +1,9 @@ address: tmUurBNb8p1PaStfKTrh8vQUXc8u7i1s34C -├─┬ base58Check: 1d25d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 1d25d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 1d │ └── hash: 25d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg.txt b/modules/utxo-bin/test/fixtures/formatAddress_zcash_default_t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg.txt similarity index 81% rename from modules/utxo-bin/test/fixtures/formatAddress_t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg.txt rename to modules/utxo-bin/test/fixtures/formatAddress_zcash_default_t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg.txt index 057200be0c..3383adc99c 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_zcash_default_t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg.txt @@ -1,7 +1,9 @@ address: t1d56rY6jRLt5JeTso8PQ4jon19pJAF13hg -├─┬ base58Check: 1cb8d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├─┬ base58 +│ ├── payload: 1cb8d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 │ ├── version: 1c │ └── hash: b8d2970bfc64117e397dc5cb7a9afe9f8b22dca1f1 +├── format: default ├─┬ outputScript: 76a914d2970bfc64117e397dc5cb7a9afe9f8b22dca1f188ac │ └─┬ scriptPubKey: [25byte] │ ├── type: pubkeyhash diff --git a/modules/utxo-bin/test/fixtures/formatAddress_t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU.txt b/modules/utxo-bin/test/fixtures/formatAddress_zcash_default_t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU.txt similarity index 80% rename from modules/utxo-bin/test/fixtures/formatAddress_t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU.txt rename to modules/utxo-bin/test/fixtures/formatAddress_zcash_default_t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU.txt index 21a7c800f4..78012b0586 100644 --- a/modules/utxo-bin/test/fixtures/formatAddress_t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU.txt +++ b/modules/utxo-bin/test/fixtures/formatAddress_zcash_default_t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU.txt @@ -1,7 +1,9 @@ address: t3Nt5WVdfp1BUEJBE1jVhE5UJqZYz1DCoRU -├─┬ base58Check: 1cbd2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├─┬ base58 +│ ├── payload: 1cbd2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b │ ├── version: 1c │ └── hash: bd2f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b +├── format: default ├─┬ outputScript: a9142f5e2d8f4ee34ccd1a4130975b9fe635ff65e02b87 │ └─┬ scriptPubKey: [23byte] │ ├── type: scripthash diff --git a/modules/utxo-bin/test/parseAddress.ts b/modules/utxo-bin/test/parseAddress.ts index e2ca581aa9..b8566a79f2 100644 --- a/modules/utxo-bin/test/parseAddress.ts +++ b/modules/utxo-bin/test/parseAddress.ts @@ -60,23 +60,39 @@ function createScriptPubKey(keys: KeyTriple, scriptType: ScriptType, network: ut } } -function getAddresses(n: utxolib.Network): string[] { +function getAddresses(n: utxolib.Network): [format: string, address: string][] { const keys = getKeyTriple('parseAddress'); return scriptTypes .filter((t) => isSupportedDepositType(n, t)) - .map((t) => utxolib.address.fromOutputScript(createScriptPubKey(keys, t, n), n)); + .flatMap((t) => + utxolib.addressFormat.addressFormats + .filter((format) => utxolib.addressFormat.isSupportedAddressFormat(format, n)) + .map((format): [string, string] => [ + format, + utxolib.addressFormat.fromOutputScriptWithFormat(createScriptPubKey(keys, t, n), format, n), + ]) + ); } function parse(address: string, args: string[]) { return getAddressParser(yargs.command(cmdParseAddress).parseSync(args)).parse(address); } -function testParseAddress(address: string, args: string[], suffix: string) { +function testParseAddress( + network: utxolib.Network, + addressFormat: string, + address: string, + args: string[], + suffix: string +) { describe(`parse address ${address} with arguments ${args.join(' ')}`, function () { it(`formats address`, async function () { const formatted = formatTreeNoColor(parse(address, args)); assert.strictEqual( - await getFixtureString(`test/fixtures/formatAddress_${address}${suffix}`, formatted), + await getFixtureString( + `test/fixtures/formatAddress_${utxolib.getNetworkName(network)}_${addressFormat}_${address}${suffix}`, + formatted + ), formatted ); }); @@ -84,10 +100,10 @@ function testParseAddress(address: string, args: string[], suffix: string) { } utxolib.getNetworkList().forEach((n) => { - getAddresses(n).forEach((address, i) => { - testParseAddress(address, [], '.txt'); - if (n === utxolib.networks.bitcoin && i === 0) { - testParseAddress(address, ['--all'], '.all.txt'); + getAddresses(n).forEach(([addressFormat, address], i) => { + testParseAddress(n, addressFormat, address, [], '.txt'); + if ([utxolib.networks.bitcoin, utxolib.networks.bitcoincash, utxolib.networks.ecash].includes(n) && i === 0) { + testParseAddress(n, addressFormat, address, ['--all'], '.all.txt'); } }); }); diff --git a/modules/web-demo/CHANGELOG.md b/modules/web-demo/CHANGELOG.md index 83321e8118..54fc1d898c 100644 --- a/modules/web-demo/CHANGELOG.md +++ b/modules/web-demo/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/web-demo@1.3.5...@bitgo/web-demo@1.3.6) (2022-12-01) + +**Note:** Version bump only for package @bitgo/web-demo + ## [1.3.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/web-demo@1.3.0...@bitgo/web-demo@1.3.5) (2022-11-29) **Note:** Version bump only for package @bitgo/web-demo diff --git a/modules/web-demo/package.json b/modules/web-demo/package.json index 90652e53eb..536c420eeb 100644 --- a/modules/web-demo/package.json +++ b/modules/web-demo/package.json @@ -1,6 +1,6 @@ { "name": "@bitgo/web-demo", - "version": "1.3.5", + "version": "1.3.6", "description": "BitGoJS Web demo package", "repository": { "type": "git", @@ -24,9 +24,9 @@ "precommit": "yarn lint-staged" }, "dependencies": { - "@bitgo/sdk-api": "^1.9.0", - "@bitgo/sdk-coin-xrp": "^1.3.5", - "bitgo": "^16.0.0", + "@bitgo/sdk-api": "^1.9.1", + "@bitgo/sdk-coin-xrp": "^1.3.6", + "bitgo": "^16.1.0", "lodash": "^4.17.15", "react": "^17.0.2", "react-dom": "^17.0.2",