From bc5e7fcaac8f2609222173d1da85df7fd16c2deb Mon Sep 17 00:00:00 2001
From: likho <likhojiba@gmail.com>
Date: Mon, 5 Dec 2022 12:52:59 +0200
Subject: [PATCH] Remove P2SH

---
 .../coins/particl/particl_wallet.dart         | 378 +-----------------
 1 file changed, 18 insertions(+), 360 deletions(-)

diff --git a/lib/services/coins/particl/particl_wallet.dart b/lib/services/coins/particl/particl_wallet.dart
index c141b72f1..0c9840ea6 100644
--- a/lib/services/coins/particl/particl_wallet.dart
+++ b/lib/services/coins/particl/particl_wallet.dart
@@ -50,7 +50,7 @@ const String GENESIS_HASH_MAINNET =
 const String GENESIS_HASH_TESTNET =
     "0000594ada5310b367443ee0afd4fa3d0bbd5850ea4e33cdc7d6a904a7ec7c90";
 
-enum DerivePathType { bip44, bip49 }
+enum DerivePathType { bip44, bip84 }
 
 bip32.BIP32 getBip32Node(int chain, int index, String mnemonic,
     NetworkType network, DerivePathType derivePathType) {
@@ -86,8 +86,8 @@ bip32.BIP32 getBip32NodeFromRoot(
   switch (derivePathType) {
     case DerivePathType.bip44:
       return root.derivePath("m/44'/$coinType'/0'/$chain/$index");
-    case DerivePathType.bip49:
-      return root.derivePath("m/49'/$coinType'/0'/$chain/$index");
+    case DerivePathType.bip84:
+      return root.derivePath("m/84'/$coinType'/0'/$chain/$index");
     default:
       throw Exception("DerivePathType must not be null.");
   }
@@ -203,11 +203,6 @@ class ParticlWallet extends CoinServiceAPI {
           _getCurrentAddressForChain(0, DerivePathType.bip44);
   Future<String>? _currentReceivingAddressP2PKH;
 
-  // Future<String> get currentReceivingAddressP2SH =>
-  //     _currentReceivingAddressP2SH ??=
-  //         _getCurrentAddressForChain(0, DerivePathType.bip49);
-  Future<String>? _currentReceivingAddressP2SH;
-
   @override
   Future<void> exit() async {
     _hasCalledExit = true;
@@ -271,10 +266,6 @@ class ParticlWallet extends CoinServiceAPI {
         // P2PKH
         return DerivePathType.bip44;
       }
-      if (decodeBase58[0] == _network.scriptHash) {
-        // P2SH
-        return DerivePathType.bip49;
-      }
       throw ArgumentError('Invalid version or Network mismatch');
     } else {
       try {
@@ -357,27 +348,20 @@ class ParticlWallet extends CoinServiceAPI {
     longMutex = true;
 
     Map<String, Map<String, String>> p2pkhReceiveDerivations = {};
-    Map<String, Map<String, String>> p2shReceiveDerivations = {};
     Map<String, Map<String, String>> p2pkhChangeDerivations = {};
-    Map<String, Map<String, String>> p2shChangeDerivations = {};
 
     final root = await compute(getBip32RootWrapper, Tuple2(mnemonic, _network));
 
     List<String> p2pkhReceiveAddressArray = [];
-    List<String> p2shReceiveAddressArray = [];
     int p2pkhReceiveIndex = -1;
-    int p2shReceiveIndex = -1;
 
     List<String> p2pkhChangeAddressArray = [];
     List<String> p2shChangeAddressArray = [];
     int p2pkhChangeIndex = -1;
-    int p2shChangeIndex = -1;
 
     // The gap limit will be capped at [maxUnusedAddressGap]
-    // int receivingGapCounter = 0;
-    // int changeGapCounter = 0;
 
-    // actual size is 24 due to p2pkh and p2sh so 12x2
+    // actual size is 12 due to p2pkh so 12x1
     const txCountBatchSize = 12;
 
     try {
@@ -387,20 +371,13 @@ class ParticlWallet extends CoinServiceAPI {
       final resultReceive44 = _checkGaps(maxNumberOfIndexesToCheck,
           maxUnusedAddressGap, txCountBatchSize, root, DerivePathType.bip44, 0);
 
-      final resultReceive49 = _checkGaps(maxNumberOfIndexesToCheck,
-          maxUnusedAddressGap, txCountBatchSize, root, DerivePathType.bip49, 0);
-
       Logging.instance
           .log("checking change addresses...", level: LogLevel.Info);
       // change addresses
       final resultChange44 = _checkGaps(maxNumberOfIndexesToCheck,
           maxUnusedAddressGap, txCountBatchSize, root, DerivePathType.bip44, 1);
 
-      final resultChange49 = _checkGaps(maxNumberOfIndexesToCheck,
-          maxUnusedAddressGap, txCountBatchSize, root, DerivePathType.bip49, 1);
-
-      await Future.wait(
-          [resultReceive44, resultReceive49, resultChange44, resultChange49]);
+      await Future.wait([resultReceive44, resultChange44]);
 
       p2pkhReceiveAddressArray =
           (await resultReceive44)['addressArray'] as List<String>;
@@ -408,24 +385,12 @@ class ParticlWallet extends CoinServiceAPI {
       p2pkhReceiveDerivations = (await resultReceive44)['derivations']
           as Map<String, Map<String, String>>;
 
-      p2shReceiveAddressArray =
-          (await resultReceive49)['addressArray'] as List<String>;
-      p2shReceiveIndex = (await resultReceive49)['index'] as int;
-      p2shReceiveDerivations = (await resultReceive49)['derivations']
-          as Map<String, Map<String, String>>;
-
       p2pkhChangeAddressArray =
           (await resultChange44)['addressArray'] as List<String>;
       p2pkhChangeIndex = (await resultChange44)['index'] as int;
       p2pkhChangeDerivations = (await resultChange44)['derivations']
           as Map<String, Map<String, String>>;
 
-      p2shChangeAddressArray =
-          (await resultChange49)['addressArray'] as List<String>;
-      p2shChangeIndex = (await resultChange49)['index'] as int;
-      p2shChangeDerivations = (await resultChange49)['derivations']
-          as Map<String, Map<String, String>>;
-
       // save the derivations (if any)
       if (p2pkhReceiveDerivations.isNotEmpty) {
         await addDerivations(
@@ -433,24 +398,13 @@ class ParticlWallet extends CoinServiceAPI {
             derivePathType: DerivePathType.bip44,
             derivationsToAdd: p2pkhReceiveDerivations);
       }
-      if (p2shReceiveDerivations.isNotEmpty) {
-        await addDerivations(
-            chain: 0,
-            derivePathType: DerivePathType.bip49,
-            derivationsToAdd: p2shReceiveDerivations);
-      }
+
       if (p2pkhChangeDerivations.isNotEmpty) {
         await addDerivations(
             chain: 1,
             derivePathType: DerivePathType.bip44,
             derivationsToAdd: p2pkhChangeDerivations);
       }
-      if (p2shChangeDerivations.isNotEmpty) {
-        await addDerivations(
-            chain: 1,
-            derivePathType: DerivePathType.bip49,
-            derivationsToAdd: p2shChangeDerivations);
-      }
 
       // If restoring a wallet that never received any funds, then set receivingArray manually
       // If we didn't do this, it'd store an empty array
@@ -460,12 +414,6 @@ class ParticlWallet extends CoinServiceAPI {
         p2pkhReceiveAddressArray.add(address);
         p2pkhReceiveIndex = 0;
       }
-      if (p2shReceiveIndex == -1) {
-        final address =
-            await _generateAddressForChain(0, 0, DerivePathType.bip49);
-        p2shReceiveAddressArray.add(address);
-        p2shReceiveIndex = 0;
-      }
 
       // If restoring a wallet that never sent any funds with change, then set changeArray
       // manually. If we didn't do this, it'd store an empty array.
@@ -475,12 +423,6 @@ class ParticlWallet extends CoinServiceAPI {
         p2pkhChangeAddressArray.add(address);
         p2pkhChangeIndex = 0;
       }
-      if (p2shChangeIndex == -1) {
-        final address =
-            await _generateAddressForChain(1, 0, DerivePathType.bip49);
-        p2shChangeAddressArray.add(address);
-        p2shChangeIndex = 0;
-      }
 
       await DB.instance.put<dynamic>(
           boxName: walletId,
@@ -490,10 +432,7 @@ class ParticlWallet extends CoinServiceAPI {
           boxName: walletId,
           key: 'changeAddressesP2PKH',
           value: p2pkhChangeAddressArray);
-      await DB.instance.put<dynamic>(
-          boxName: walletId,
-          key: 'receivingAddressesP2SH',
-          value: p2shReceiveAddressArray);
+
       await DB.instance.put<dynamic>(
           boxName: walletId,
           key: 'changeAddressesP2SH',
@@ -504,12 +443,7 @@ class ParticlWallet extends CoinServiceAPI {
           boxName: walletId,
           key: 'receivingIndexP2PKH',
           value: p2pkhReceiveIndex);
-      await DB.instance.put<dynamic>(
-          boxName: walletId,
-          key: 'receivingIndexP2SH',
-          value: p2shReceiveIndex);
-      await DB.instance.put<dynamic>(
-          boxName: walletId, key: 'changeIndexP2SH', value: p2shChangeIndex);
+
       await DB.instance
           .put<dynamic>(boxName: walletId, key: "id", value: _walletId);
       await DB.instance
@@ -568,17 +502,6 @@ class ParticlWallet extends CoinServiceAPI {
                 .data
                 .address!;
             break;
-          case DerivePathType.bip49:
-            address = P2SH(
-                    data: PaymentData(
-                        redeem: P2WPKH(
-                                data: PaymentData(pubkey: node.publicKey),
-                                network: _network)
-                            .data),
-                    network: _network)
-                .data
-                .address!;
-            break;
           default:
             throw Exception("No Path type $type exists");
         }
@@ -903,14 +826,12 @@ class ParticlWallet extends CoinServiceAPI {
       if (shouldAutoSync) {
         timer ??= Timer.periodic(const Duration(seconds: 150), (timer) async {
           // chain height check currently broken
-          // if ((await chainHeight) != (await storedChainHeight)) {
           if (await refreshIfThereIsNewData()) {
             await refresh();
             GlobalEventBus.instance.fire(UpdatedInBackgroundEvent(
                 "New data found in $walletId $walletName in background!",
                 walletId));
           }
-          // }
         });
       }
     } catch (error, strace) {
@@ -1309,16 +1230,6 @@ class ParticlWallet extends CoinServiceAPI {
         DB.instance.get<dynamic>(boxName: walletId, key: 'changeAddressesP2PKH')
             as List<dynamic>;
 
-    // for (var i = 0; i < receivingAddresses.length; i++) {
-    //   if (!allAddresses.contains(receivingAddresses[i])) {
-    //     allAddresses.add(receivingAddresses[i]);
-    //   }
-    // }
-    // for (var i = 0; i < changeAddresses.length; i++) {
-    //   if (!allAddresses.contains(changeAddresses[i])) {
-    //     allAddresses.add(changeAddresses[i]);
-    //   }
-    // }
     for (var i = 0; i < receivingAddressesP2PKH.length; i++) {
       if (!allAddresses.contains(receivingAddressesP2PKH[i])) {
         allAddresses.add(receivingAddressesP2PKH[i] as String);
@@ -1391,10 +1302,7 @@ class ParticlWallet extends CoinServiceAPI {
         .put<dynamic>(boxName: walletId, key: "receivingIndexP2PKH", value: 0);
     await DB.instance
         .put<dynamic>(boxName: walletId, key: "changeIndexP2PKH", value: 0);
-    await DB.instance
-        .put<dynamic>(boxName: walletId, key: "receivingIndexP2SH", value: 0);
-    await DB.instance
-        .put<dynamic>(boxName: walletId, key: "changeIndexP2SH", value: 0);
+
     await DB.instance.put<dynamic>(
       boxName: walletId,
       key: 'blocked_tx_hashes',
@@ -1412,26 +1320,13 @@ class ParticlWallet extends CoinServiceAPI {
     final initialChangeAddressP2PKH =
         await _generateAddressForChain(1, 0, DerivePathType.bip44);
 
-    final initialReceivingAddressP2SH =
-        await _generateAddressForChain(0, 0, DerivePathType.bip49);
-    final initialChangeAddressP2SH =
-        await _generateAddressForChain(1, 0, DerivePathType.bip49);
-
     await _addToAddressesArrayForChain(
         initialReceivingAddressP2PKH, 0, DerivePathType.bip44);
     await _addToAddressesArrayForChain(
         initialChangeAddressP2PKH, 1, DerivePathType.bip44);
 
-    await _addToAddressesArrayForChain(
-        initialReceivingAddressP2SH, 0, DerivePathType.bip49);
-    await _addToAddressesArrayForChain(
-        initialChangeAddressP2SH, 1, DerivePathType.bip49);
-
-    // this._currentReceivingAddress = Future(() => initialReceivingAddress);
-
     var newaddr = await _getCurrentAddressForChain(0, DerivePathType.bip44);
     _currentReceivingAddressP2PKH = Future(() => newaddr);
-    _currentReceivingAddressP2SH = Future(() => initialReceivingAddressP2SH);
 
     Logging.instance.log("_generateNewWalletFinished", level: LogLevel.Info);
   }
@@ -1456,23 +1351,7 @@ class ParticlWallet extends CoinServiceAPI {
       ),
     );
     final data = PaymentData(pubkey: node.publicKey);
-    final p2shData = PaymentData(
-        redeem:
-            P2WPKH(data: PaymentData(pubkey: node.publicKey), network: _network)
-                .data);
-    String address;
-
-    switch (derivePathType) {
-      case DerivePathType.bip44:
-        address = P2PKH(data: data, network: _network).data.address!;
-        break;
-      case DerivePathType.bip49:
-        address = P2SH(data: p2shData, network: _network).data.address!;
-        break;
-      // default:
-      //   // should never hit this due to all enum cases handled
-      //   return null;
-    }
+    String address = P2PKH(data: data, network: _network).data.address!;
 
     // add generated address & info to derivations
     await addDerivation(
@@ -1496,9 +1375,6 @@ class ParticlWallet extends CoinServiceAPI {
       case DerivePathType.bip44:
         indexKey += "P2PKH";
         break;
-      case DerivePathType.bip49:
-        indexKey += "P2SH";
-        break;
     }
 
     final newIndex =
@@ -1522,9 +1398,6 @@ class ParticlWallet extends CoinServiceAPI {
       case DerivePathType.bip44:
         chainArray += "P2PKH";
         break;
-      case DerivePathType.bip49:
-        chainArray += "P2SH";
-        break;
     }
 
     final addressArray =
@@ -1559,9 +1432,6 @@ class ParticlWallet extends CoinServiceAPI {
       case DerivePathType.bip44:
         arrayKey += "P2PKH";
         break;
-      case DerivePathType.bip49:
-        arrayKey += "P2SH";
-        break;
     }
 
     if (kDebugMode) {
@@ -1576,14 +1446,8 @@ class ParticlWallet extends CoinServiceAPI {
       {required int chain, required DerivePathType derivePathType}) {
     String key;
     String chainId = chain == 0 ? "receive" : "change";
-    switch (derivePathType) {
-      case DerivePathType.bip44:
-        key = "${walletId}_${chainId}DerivationsP2PKH";
-        break;
-      case DerivePathType.bip49:
-        key = "${walletId}_${chainId}DerivationsP2SH";
-        break;
-    }
+
+    key = "${walletId}_${chainId}DerivationsP2PKH";
     return key;
   }
 
@@ -1911,9 +1775,6 @@ class ParticlWallet extends CoinServiceAPI {
           case DerivePathType.bip44:
             indexKey += "P2PKH";
             break;
-          case DerivePathType.bip49:
-            indexKey += "P2SH";
-            break;
         }
         final newReceivingIndex =
             DB.instance.get<dynamic>(boxName: walletId, key: indexKey) as int;
@@ -1932,9 +1793,6 @@ class ParticlWallet extends CoinServiceAPI {
           case DerivePathType.bip44:
             _currentReceivingAddressP2PKH = Future(() => newReceivingAddress);
             break;
-          case DerivePathType.bip49:
-            _currentReceivingAddressP2SH = Future(() => newReceivingAddress);
-            break;
         }
       }
     } on SocketException catch (se, s) {
@@ -1970,9 +1828,6 @@ class ParticlWallet extends CoinServiceAPI {
           case DerivePathType.bip44:
             indexKey += "P2PKH";
             break;
-          case DerivePathType.bip49:
-            indexKey += "P2SH";
-            break;
         }
         final newChangeIndex =
             DB.instance.get<dynamic>(boxName: walletId, key: indexKey) as int;
@@ -2160,13 +2015,6 @@ class ParticlWallet extends CoinServiceAPI {
     final changeAddresses =
         DB.instance.get<dynamic>(boxName: walletId, key: 'changeAddressesP2PKH')
             as List<dynamic>;
-    final changeAddressesP2SH =
-        DB.instance.get<dynamic>(boxName: walletId, key: 'changeAddressesP2SH')
-            as List<dynamic>;
-
-    for (var i = 0; i < changeAddressesP2SH.length; i++) {
-      changeAddresses.add(changeAddressesP2SH[i] as String);
-    }
 
     final List<Map<String, dynamic>> allTxHashes =
         await _fetchHistory(allAddresses);
@@ -2874,9 +2722,6 @@ class ParticlWallet extends CoinServiceAPI {
               case DerivePathType.bip44:
                 addressesP2PKH.add(address);
                 break;
-              case DerivePathType.bip49:
-                addressesP2SH.add(address);
-                break;
             }
           }
         }
@@ -2940,78 +2785,6 @@ class ParticlWallet extends CoinServiceAPI {
         }
       }
 
-      // p2sh / bip49
-      final p2shLength = addressesP2SH.length;
-      if (p2shLength > 0) {
-        print("THIS P2SH IS NOT NULL");
-        final receiveDerivations = await _fetchDerivations(
-          chain: 0,
-          derivePathType: DerivePathType.bip49,
-        );
-        final changeDerivations = await _fetchDerivations(
-          chain: 1,
-          derivePathType: DerivePathType.bip49,
-        );
-        for (int i = 0; i < p2shLength; i++) {
-          // receives
-          final receiveDerivation = receiveDerivations[addressesP2SH[i]];
-          // if a match exists it will not be null
-          if (receiveDerivation != null) {
-            final p2wpkh = P2WPKH(
-                    data: PaymentData(
-                        pubkey: Format.stringToUint8List(
-                            receiveDerivation["pubKey"] as String)),
-                    network: _network)
-                .data;
-
-            final redeemScript = p2wpkh.output;
-
-            final data =
-                P2SH(data: PaymentData(redeem: p2wpkh), network: _network).data;
-
-            for (String tx in addressTxid[addressesP2SH[i]]!) {
-              results[tx] = {
-                "output": data.output,
-                "keyPair": ECPair.fromWIF(
-                  receiveDerivation["wif"] as String,
-                  network: _network,
-                ),
-                "redeemScript": redeemScript,
-              };
-            }
-          } else {
-            // if its not a receive, check change
-            final changeDerivation = changeDerivations[addressesP2SH[i]];
-            // if a match exists it will not be null
-            if (changeDerivation != null) {
-              final p2wpkh = P2WPKH(
-                      data: PaymentData(
-                          pubkey: Format.stringToUint8List(
-                              changeDerivation["pubKey"] as String)),
-                      network: _network)
-                  .data;
-
-              final redeemScript = p2wpkh.output;
-
-              final data =
-                  P2SH(data: PaymentData(redeem: p2wpkh), network: _network)
-                      .data;
-
-              for (String tx in addressTxid[addressesP2SH[i]]!) {
-                results[tx] = {
-                  "output": data.output,
-                  "keyPair": ECPair.fromWIF(
-                    changeDerivation["wif"] as String,
-                    network: _network,
-                  ),
-                  "redeemScript": redeemScript,
-                };
-              }
-            }
-          }
-        }
-      }
-
       Logging.instance.log("FETCHED TX BUILD DATA IS -----$results",
           level: LogLevel.Info, printFullLength: true);
       return results;
@@ -3067,11 +2840,12 @@ class ParticlWallet extends CoinServiceAPI {
 
         Logging.instance.log("AND THIS DATA IS -----${utxoSigningData[txid]}",
             level: LogLevel.Info, printFullLength: true);
-        // txb.sign(
-        //     vin: i,
-        //     keyPair: utxoSigningData[txid]["keyPair"] as ECPair,
-        //     witnessValue: utxosToUse[i].value,
-        //     redeemScript: utxoSigningData[txid]["redeemScript"] as Uint8List?);
+        txb.sign(
+            vin: i,
+            keyPair: utxoSigningData[txid]["keyPair"] as ECPair,
+            witnessValue: utxosToUse[i].value,
+            hashType: 1,
+            redeemScript: utxoSigningData[txid]["redeemScript"] as Uint8List?);
       }
     } catch (e, s) {
       Logging.instance.log("Caught exception while signing transaction: $e\n$s",
@@ -3082,22 +2856,7 @@ class ParticlWallet extends CoinServiceAPI {
     final builtTx = txb.buildIncomplete();
     final vSize = builtTx.virtualSize();
 
-    print("BUILT TX IS ${builtTx.toHex().toString()}");
-
-    // String hexBefore = builtTx.toHex();
-    // if (builtTx.toHex().toString().endsWith('0000')) {
-    //   //   print("END WITH ZERO");
-    //   String stripped = hexBefore.substring(0, hexBefore.length - 4);
-    //   return {"hex": stripped, "vSize": vSize};
-    //   // } else {
-    //   //   print("DOES NOT END WITH ZERO");
-    //   //   return {"hex": builtTx.toHex(), "vSize": vSize};
-    // }
     return {"hex": builtTx.toHex(), "vSize": vSize};
-
-    // print("AND NOW IT IS $stripped");
-    //
-    // return {"hex": stripped, "vSize": vSize};
   }
 
   @override
@@ -3195,38 +2954,6 @@ class ParticlWallet extends CoinServiceAPI {
     await DB.instance
         .delete<dynamic>(key: 'changeIndexP2PKH_BACKUP', boxName: walletId);
 
-    // p2Sh
-    final tempReceivingAddressesP2SH = DB.instance
-        .get<dynamic>(boxName: walletId, key: 'receivingAddressesP2SH_BACKUP');
-    final tempChangeAddressesP2SH = DB.instance
-        .get<dynamic>(boxName: walletId, key: 'changeAddressesP2SH_BACKUP');
-    final tempReceivingIndexP2SH = DB.instance
-        .get<dynamic>(boxName: walletId, key: 'receivingIndexP2SH_BACKUP');
-    final tempChangeIndexP2SH = DB.instance
-        .get<dynamic>(boxName: walletId, key: 'changeIndexP2SH_BACKUP');
-    await DB.instance.put<dynamic>(
-        boxName: walletId,
-        key: 'receivingAddressesP2SH',
-        value: tempReceivingAddressesP2SH);
-    await DB.instance.put<dynamic>(
-        boxName: walletId,
-        key: 'changeAddressesP2SH',
-        value: tempChangeAddressesP2SH);
-    await DB.instance.put<dynamic>(
-        boxName: walletId,
-        key: 'receivingIndexP2SH',
-        value: tempReceivingIndexP2SH);
-    await DB.instance.put<dynamic>(
-        boxName: walletId, key: 'changeIndexP2SH', value: tempChangeIndexP2SH);
-    await DB.instance.delete<dynamic>(
-        key: 'receivingAddressesP2SH_BACKUP', boxName: walletId);
-    await DB.instance
-        .delete<dynamic>(key: 'changeAddressesP2SH_BACKUP', boxName: walletId);
-    await DB.instance
-        .delete<dynamic>(key: 'receivingIndexP2SH_BACKUP', boxName: walletId);
-    await DB.instance
-        .delete<dynamic>(key: 'changeIndexP2SH_BACKUP', boxName: walletId);
-
     // P2PKH derivations
     final p2pkhReceiveDerivationsString = await _secureStore.read(
         key: "${walletId}_receiveDerivationsP2PKH_BACKUP");
@@ -3244,22 +2971,6 @@ class ParticlWallet extends CoinServiceAPI {
         key: "${walletId}_receiveDerivationsP2PKH_BACKUP");
     await _secureStore.delete(key: "${walletId}_changeDerivationsP2PKH_BACKUP");
 
-    // P2SH derivations
-    final p2shReceiveDerivationsString = await _secureStore.read(
-        key: "${walletId}_receiveDerivationsP2SH_BACKUP");
-    final p2shChangeDerivationsString = await _secureStore.read(
-        key: "${walletId}_changeDerivationsP2SH_BACKUP");
-
-    await _secureStore.write(
-        key: "${walletId}_receiveDerivationsP2SH",
-        value: p2shReceiveDerivationsString);
-    await _secureStore.write(
-        key: "${walletId}_changeDerivationsP2SH",
-        value: p2shChangeDerivationsString);
-
-    await _secureStore.delete(key: "${walletId}_receiveDerivationsP2SH_BACKUP");
-    await _secureStore.delete(key: "${walletId}_changeDerivationsP2SH_BACKUP");
-
     // UTXOs
     final utxoData = DB.instance
         .get<dynamic>(boxName: walletId, key: 'latest_utxo_model_BACKUP');
@@ -3312,43 +3023,6 @@ class ParticlWallet extends CoinServiceAPI {
     await DB.instance
         .delete<dynamic>(key: 'changeIndexP2PKH', boxName: walletId);
 
-    // p2sh
-    final tempReceivingAddressesP2SH = DB.instance
-        .get<dynamic>(boxName: walletId, key: 'receivingAddressesP2SH');
-    await DB.instance.put<dynamic>(
-        boxName: walletId,
-        key: 'receivingAddressesP2SH_BACKUP',
-        value: tempReceivingAddressesP2SH);
-    await DB.instance
-        .delete<dynamic>(key: 'receivingAddressesP2SH', boxName: walletId);
-
-    final tempChangeAddressesP2SH =
-        DB.instance.get<dynamic>(boxName: walletId, key: 'changeAddressesP2SH');
-    await DB.instance.put<dynamic>(
-        boxName: walletId,
-        key: 'changeAddressesP2SH_BACKUP',
-        value: tempChangeAddressesP2SH);
-    await DB.instance
-        .delete<dynamic>(key: 'changeAddressesP2SH', boxName: walletId);
-
-    final tempReceivingIndexP2SH =
-        DB.instance.get<dynamic>(boxName: walletId, key: 'receivingIndexP2SH');
-    await DB.instance.put<dynamic>(
-        boxName: walletId,
-        key: 'receivingIndexP2SH_BACKUP',
-        value: tempReceivingIndexP2SH);
-    await DB.instance
-        .delete<dynamic>(key: 'receivingIndexP2SH', boxName: walletId);
-
-    final tempChangeIndexP2SH =
-        DB.instance.get<dynamic>(boxName: walletId, key: 'changeIndexP2SH');
-    await DB.instance.put<dynamic>(
-        boxName: walletId,
-        key: 'changeIndexP2SH_BACKUP',
-        value: tempChangeIndexP2SH);
-    await DB.instance
-        .delete<dynamic>(key: 'changeIndexP2SH', boxName: walletId);
-
     // P2PKH derivations
     final p2pkhReceiveDerivationsString =
         await _secureStore.read(key: "${walletId}_receiveDerivationsP2PKH");
@@ -3365,22 +3039,6 @@ class ParticlWallet extends CoinServiceAPI {
     await _secureStore.delete(key: "${walletId}_receiveDerivationsP2PKH");
     await _secureStore.delete(key: "${walletId}_changeDerivationsP2PKH");
 
-    // P2SH derivations
-    final p2shReceiveDerivationsString =
-        await _secureStore.read(key: "${walletId}_receiveDerivationsP2SH");
-    final p2shChangeDerivationsString =
-        await _secureStore.read(key: "${walletId}_changeDerivationsP2SH");
-
-    await _secureStore.write(
-        key: "${walletId}_receiveDerivationsP2SH_BACKUP",
-        value: p2shReceiveDerivationsString);
-    await _secureStore.write(
-        key: "${walletId}_changeDerivationsP2SH_BACKUP",
-        value: p2shChangeDerivationsString);
-
-    await _secureStore.delete(key: "${walletId}_receiveDerivationsP2SH");
-    await _secureStore.delete(key: "${walletId}_changeDerivationsP2SH");
-
     // UTXOs
     final utxoData =
         DB.instance.get<dynamic>(boxName: walletId, key: 'latest_utxo_model');