message: Setup wallets with descriptors for feature_notifications
diff: """Test the -alertnotify, -blocknotify and -walletnotify options."""
  import os
  -from test_framework.address import ADDRESS_BCRT1_UNSPENDABLE, keyhash_to_p2pkh
  +from test_framework.address import ADDRESS_BCRT1_UNSPENDABLE
  +from test_framework.descriptors import descsum_create
  from test_framework.test_framework import BitcoinTestFramework
  from test_framework.util import (
  assert_equal,
  - hex_str_to_bytes,
  )
  # Linux allow all characters other than \x00
  @@ -49,6 +49,31 @@ class NotificationsTest(BitcoinTestFramework):
  super().setup_network()
  def run_test(self):
  + if self.is_wallet_compiled():
  + # Setup the descriptors to be imported to the wallet
  + seed = "cTdGmKFWpbvpKQ7ejrdzqYT2hhjyb3GPHnLAK7wdi5Em67YLwSm9"
  + xpriv = "tprv8ZgxMBicQKsPfHCsTwkiM1KT56RXbGGTqvc2hgqzycpwbHqqpcajQeMRZoBD35kW4RtyCemu6j34Ku5DEspmgjKdt2qe4SvRch5Kk8B8A2v"
  + desc_imports = [{
  + "desc": descsum_create("wpkh(" + xpriv + "/0/*)"),
  + "timestamp": 0,
  + "active": True,
  + "keypool": True,
  + },{
  + "desc": descsum_create("wpkh(" + xpriv + "/1/*)"),
  + "timestamp": 0,
  + "active": True,
  + "keypool": True,
  + "internal": True,
  + }]
  + # Make the wallets and import the descriptors
  + # Ensures that node 0 and node 1 share the same wallet for the conflicting transaction tests below.
  + for i, name in enumerate(self.wallet_names):
  + self.nodes[i].createwallet(wallet_name=name, descriptors=self.options.descriptors, blank=True, load_on_startup=True)
  + if self.options.descriptors:
  + self.nodes[i].importdescriptors(desc_imports)
  + else:
  + self.nodes[i].sethdseed(True, seed)
  +
  self.log.info("test -blocknotify")
  block_count = 10
  blocks = self.nodes[1].generatetoaddress(block_count, self.nodes[1].getnewaddress() if self.is_wallet_compiled() else ADDRESS_BCRT1_UNSPENDABLE)
  @@ -84,11 +109,10 @@ class NotificationsTest(BitcoinTestFramework):
  for tx_file in os.listdir(self.walletnotify_dir):
  os.remove(os.path.join(self.walletnotify_dir, tx_file))
  - # Conflicting transactions tests. Give node 0 same wallet seed as
  - # node 1, generate spends from node 0, and check notifications
  + # Conflicting transactions tests.
  + # Generate spends from node 0, and check notifications
  # triggered by node 1
  self.log.info("test -walletnotify with conflicting transactions")
  - self.nodes[0].sethdseed(seed=self.nodes[1].dumpprivkey(keyhash_to_p2pkh(hex_str_to_bytes(self.nodes[1].getwalletinfo()['hdseedid'])[::-1])))
  self.nodes[0].rescanblockchain()
  self.nodes[0].generatetoaddress(100, ADDRESS_BCRT1_UNSPENDABLE)
  self.sync_blocks()
  