Different wallets may be used for different purposes.  When a notification is triggered, we get the TXID but don't know which wallet is involved.  It would be useful to have different walletnotify actions depending on which wallet is involved by the transaction.

It could be used like (bitcoin.conf):

`walletnotify.walletname=action %s`

Or maybe a more simple and flexible (dynamic-wallets compatible) way:

`walletnotify=action %s %w`

where %w is the name of the wallet.  This way, notify action (and not Bitcoin Core) is responsible for choosing the right action depending on the wallet and it is easier to RPC query the good wallet (ie gettransaction).

{
public:
    enum Flags {
        
        ALLOW_BOOL = 0x01,
        ALLOW_INT = 0x02,
        ALLOW_STRING = 0x04,
        ALLOW_ANY = ALLOW_BOOL | ALLOW_INT | ALLOW_STRING,
        DEBUG_ONLY = 0x100,
        /* Some options would cause cross-contamination if values for
         * mainnet were used while running on regtest/testnet (or vice-versa).
         * Setting them as NETWORK_ONLY ensures that sharing a config file
         * between mainnet and regtest/testnet won't cause problems due to these
         * parameters by accident. */
        NETWORK_ONLY = 0x200,
    };
protected:
    struct Arg
    {
        std::string m_help_param;
        std::string m_help_text;
        unsigned int m_flags;
    };
    mutable CCriticalSection cs_args;
    util::Settings m_settings GUARDED_BY(cs_args);
    std::string m_network GUARDED_BY(cs_args);
    std::set<std::string> m_network_only_args GUARDED_BY(cs_args);
    std::map<OptionsCategory, std::map<std::string, Arg>> m_available_args GUARDED_BY(cs_args);
    std::list<SectionInfo> m_config_sections GUARDED_BY(cs_args);