diff --git a/cashtab/extension/public/manifest.json b/cashtab/extension/public/manifest.json --- a/cashtab/extension/public/manifest.json +++ b/cashtab/extension/public/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "Cashtab", "description": "A browser-integrated eCash wallet from Bitcoin ABC", - "version": "3.29.2", + "version": "3.30.0", "content_scripts": [ { "matches": ["file://*/*", "http://*/*", "https://*/*"], diff --git a/cashtab/package-lock.json b/cashtab/package-lock.json --- a/cashtab/package-lock.json +++ b/cashtab/package-lock.json @@ -1,12 +1,12 @@ { "name": "cashtab", - "version": "2.29.7", + "version": "2.30.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cashtab", - "version": "2.29.7", + "version": "2.30.0", "dependencies": { "@bitgo/utxo-lib": "^9.33.0", "@zxing/browser": "^0.1.4", diff --git a/cashtab/package.json b/cashtab/package.json --- a/cashtab/package.json +++ b/cashtab/package.json @@ -1,6 +1,6 @@ { "name": "cashtab", - "version": "2.29.7", + "version": "2.30.0", "private": true, "scripts": { "start": "node scripts/start.js", diff --git a/cashtab/src/airdrop/fixtures/vectors.js b/cashtab/src/airdrop/fixtures/vectors.js --- a/cashtab/src/airdrop/fixtures/vectors.js +++ b/cashtab/src/airdrop/fixtures/vectors.js @@ -225,7 +225,7 @@ excludedAddresses: [], airdropAmountXec: 5, minTokenQtyUndecimalized: '0', - err: `6 eligible recipients. Recipients would receive less than 550 sats with a total airdrop amount of 5 XEC. Please increase your airdrop amount or ignore more addresses.`, + err: `6 eligible recipients. Recipients would receive less than 546 sats with a total airdrop amount of 5 XEC. Please increase your airdrop amount or ignore more addresses.`, }, ], }, diff --git a/cashtab/src/components/App/__tests__/App.test.js b/cashtab/src/components/App/__tests__/App.test.js --- a/cashtab/src/components/App/__tests__/App.test.js +++ b/cashtab/src/components/App/__tests__/App.test.js @@ -523,7 +523,7 @@ 'ecash:qphlhe78677sz227k83hrh542qeehh8el5lcjwk72y', ); // The value field is populated with dust - expect(screen.getByPlaceholderText('Amount')).toHaveValue(5.5); + expect(screen.getByPlaceholderText('Amount')).toHaveValue(5.46); }); it('If Cashtab starts up with some settings keys missing, the missing keys are migrated to default values', async () => { // Note: this is what happens to existing users when we add a new key to cashtabState.settings diff --git a/cashtab/src/components/Etokens/CreateToken.js b/cashtab/src/components/Etokens/CreateToken.js --- a/cashtab/src/components/Etokens/CreateToken.js +++ b/cashtab/src/components/Etokens/CreateToken.js @@ -37,8 +37,8 @@ {balanceSats < appConfig.dustSats ? ( You need at least {toXec(appConfig.dustSats).toString()}{' '} - {appConfig.ticker} {minTokenCreationFiatPriceString} to - create a token + spendable {appConfig.ticker}{' '} + {minTokenCreationFiatPriceString} to create a token ) : ( diff --git a/cashtab/src/components/Etokens/__tests__/CreateToken.test.js b/cashtab/src/components/Etokens/__tests__/CreateToken.test.js --- a/cashtab/src/components/Etokens/__tests__/CreateToken.test.js +++ b/cashtab/src/components/Etokens/__tests__/CreateToken.test.js @@ -93,7 +93,7 @@ // Does not render insufficient balance alert expect( screen.queryByText( - 'You need at least 5.5 XEC ($0.0002 USD) to create a token', + 'You need at least 5.46 spendable XEC ($0.0002 USD) to create a token', ), ).not.toBeInTheDocument(); }); @@ -134,7 +134,7 @@ // In this case, we do not display the fiat price expect( await screen.findByText( - 'You need at least 5.5 XEC ($0.0002 USD) to create a token', + 'You need at least 5.46 spendable XEC ($0.0002 USD) to create a token', ), ).toBeInTheDocument(); }); diff --git a/cashtab/src/components/Send/__tests__/SendXec.test.js b/cashtab/src/components/Send/__tests__/SendXec.test.js --- a/cashtab/src/components/Send/__tests__/SendXec.test.js +++ b/cashtab/src/components/Send/__tests__/SendXec.test.js @@ -652,7 +652,7 @@ // We get expected addr validation error expect( - screen.getByText(`Send amount must be at least 5.5 XEC`), + screen.getByText(`Send amount must be at least 5.46 XEC`), ).toBeInTheDocument(); // The Send button is disabled diff --git a/cashtab/src/config/app.js b/cashtab/src/config/app.js --- a/cashtab/src/config/app.js +++ b/cashtab/src/config/app.js @@ -16,8 +16,7 @@ fiatUpdateIntervalMs: 90000, defaultFee: 2.01, minFee: 1, - dustSats: 550, - etokenSats: 546, + dustSats: 546, cashDecimals: 2, fiatDecimals: 2, pricePrecisionDecimals: 8, diff --git a/cashtab/src/slpv1/__tests__/index.test.js b/cashtab/src/slpv1/__tests__/index.test.js --- a/cashtab/src/slpv1/__tests__/index.test.js +++ b/cashtab/src/slpv1/__tests__/index.test.js @@ -42,7 +42,7 @@ ); // The output at the 1-index is dust to given address expect(calculatedTargetOutputs[1]).toStrictEqual({ - value: appConfig.etokenSats, + value: appConfig.dustSats, }); if (calculatedTargetOutputs.length > 2) { // If we have a mint baton @@ -54,7 +54,7 @@ // The mint baton is at index 2 // eslint-disable-next-line jest/no-conditional-expect expect(calculatedTargetOutputs[2]).toStrictEqual({ - value: appConfig.etokenSats, + value: appConfig.dustSats, }); } }); @@ -118,7 +118,7 @@ // We will always have the destination output at index 1 expect(calculatedTargetOutputs[1].value).toBe( - appConfig.etokenSats, + appConfig.dustSats, ); expect(calculatedTargetOutputs[1].address).toBe( SEND_DESTINATION_ADDRESS, @@ -134,7 +134,7 @@ // assert the expected change output // eslint-disable-next-line jest/no-conditional-expect expect(calculatedTargetOutputs[2].value).toBe( - appConfig.etokenSats, + appConfig.dustSats, ); // eslint-disable-next-line jest/no-conditional-expect expect('address' in calculatedTargetOutputs[2]).toBe(false); @@ -204,7 +204,7 @@ // We will always have the destination output at index 1 expect(calculatedTargetOutputs[1].value).toBe( - appConfig.etokenSats, + appConfig.dustSats, ); expect(calculatedTargetOutputs[1].address).toBe( SEND_DESTINATION_ADDRESS, @@ -220,7 +220,7 @@ // assert the expected change output // eslint-disable-next-line jest/no-conditional-expect expect(calculatedTargetOutputs[2].value).toBe( - appConfig.etokenSats, + appConfig.dustSats, ); // eslint-disable-next-line jest/no-conditional-expect expect('address' in calculatedTargetOutputs[2]).toBe(false); @@ -294,7 +294,7 @@ // BURN txs always have 2 outputs expect(targetOutput.length).toBe(2); // assert the expected change output - expect(targetOutput[1].value).toBe(appConfig.etokenSats); + expect(targetOutput[1].value).toBe(appConfig.dustSats); expect('address' in targetOutput[1]).toBe(false); }); }); @@ -364,8 +364,8 @@ ); expect(mintTargetOutputs.length).toBe(3); expect(mintTargetOutputs.splice(1, 3)).toStrictEqual([ - { value: appConfig.etokenSats }, - { value: appConfig.etokenSats }, + { value: appConfig.dustSats }, + { value: appConfig.dustSats }, ]); }); }); diff --git a/cashtab/src/slpv1/fixtures/vectors.js b/cashtab/src/slpv1/fixtures/vectors.js --- a/cashtab/src/slpv1/fixtures/vectors.js +++ b/cashtab/src/slpv1/fixtures/vectors.js @@ -511,7 +511,7 @@ script: '6a04534c500001010453454e4420111111111111111111111111111111111111111111111111111111111111111108000000000000000f080000000000000005', }, { - value: appConfig.etokenSats, + value: appConfig.dustSats, address: SEND_DESTINATION_ADDRESS, }, ], @@ -574,7 +574,7 @@ script: '6a04534c500001010453454e4420111111111111111111111111111111111111111111111111111111111111111108000000000000001e', }, { - value: appConfig.etokenSats, + value: appConfig.dustSats, address: SEND_DESTINATION_ADDRESS, }, ], @@ -630,7 +630,7 @@ script: '6a04534c500001010453454e44201111111111111111111111111111111111111111111111111111111111111111080000000008f0d180080000000002faf080', }, { - value: appConfig.etokenSats, + value: appConfig.dustSats, address: SEND_DESTINATION_ADDRESS, }, ], @@ -1267,7 +1267,7 @@ ), }, { - value: appConfig.etokenSats, + value: appConfig.dustSats, }, ], }, @@ -1291,10 +1291,10 @@ ), }, { - value: appConfig.etokenSats, + value: appConfig.dustSats, }, { - value: appConfig.etokenSats, + value: appConfig.dustSats, }, ], }, @@ -1318,7 +1318,7 @@ ), }, { - value: appConfig.etokenSats, + value: appConfig.dustSats, }, ], }, diff --git a/cashtab/src/slpv1/index.js b/cashtab/src/slpv1/index.js --- a/cashtab/src/slpv1/index.js +++ b/cashtab/src/slpv1/index.js @@ -63,14 +63,14 @@ // Expected behavior for Cashtab tx building is to add change address to output // with no address targetOutputs.push({ - value: appConfig.etokenSats, + value: appConfig.dustSats, }); // If the user specified the creation of a mint baton, add it // Note: Cashtab only supports the creation of one mint baton at index 2 if (mintBatonVout !== null) { targetOutputs.push({ - value: appConfig.etokenSats, + value: appConfig.dustSats, }); } @@ -104,7 +104,7 @@ // Add first 'to' amount to 1 index. This could be any index between 1 and 19. targetOutputs.push({ - value: appConfig.etokenSats, + value: appConfig.dustSats, address: destinationAddress, }); @@ -114,7 +114,7 @@ // Note that change addresses are added after ecash-coinselect by wallet // Change output is denoted by lack of address key targetOutputs.push({ - value: appConfig.etokenSats, + value: appConfig.dustSats, }); } @@ -244,7 +244,7 @@ // burn tx logic separate from ecash tx creation logic // But lets just add the min output - return [{ value: 0, script }, { value: appConfig.etokenSats }]; + return [{ value: 0, script }, { value: appConfig.dustSats }]; }; /** @@ -400,12 +400,12 @@ // Add mint amount at index 1 targetOutputs.push({ - value: appConfig.etokenSats, + value: appConfig.dustSats, }); // Add mint baton at index 2 targetOutputs.push({ - value: appConfig.etokenSats, + value: appConfig.dustSats, }); return targetOutputs; @@ -473,14 +473,14 @@ // In Cashtab, we mint genesis txs to our own Path1899 address // If an output does not have an address, Cashtab will add its change address targetOutputs.push({ - value: appConfig.etokenSats, + value: appConfig.dustSats, }); // If the user specified the creation of a mint baton, add it // Note: Cashtab only supports the creation of one mint baton at index 2 if (mintBatonVout !== null) { targetOutputs.push({ - value: appConfig.etokenSats, + value: appConfig.dustSats, }); } diff --git a/cashtab/src/validation/fixtures/vectors.js b/cashtab/src/validation/fixtures/vectors.js --- a/cashtab/src/validation/fixtures/vectors.js +++ b/cashtab/src/validation/fixtures/vectors.js @@ -1597,7 +1597,7 @@ userMultisendInput: `ecash:qplkmuz3rx480u6vc4xgc0qxnza42p0e7vll6p90wr, 1\necash:qqxrrls4u0znxx2q7e5m4en4z2yjrqgqeucckaerq3, 33\necash:qphlhe78677sz227k83hrh542qeehh8el5lcjwk72y, 55`, balanceSats: 11000, userLocale: appConfig.defaultLocale, - returned: `Send amount must be at least 5.5 XEC: check value "1" at line 1`, + returned: `Send amount must be at least 5.46 XEC: check value "1" at line 1`, }, { description: