user135703: I am trying to import a P2SH address as watch-only using the importmulti RPC command. I provide the scriptPubKey, timestamp, and redeemscript values. The value of scriptPubKey that I'm submitting is the hex representation of the P2SH HASH160 <20 byte hash> EQUAL part of the script. The redeemscript I'm submitting is the hex representation of the preimage to the OP_HASH160 function, that when hashed, equals the <20 byte hash>.
The import is successful, but I get a warning:
"Importing as non-solvable: unrecognized script. If this is intentional, don't provide any keys, pubkeys, witnessscript, or redeemscript."
Should not this be solvable if providing both the scriptPubKey and redeemscript? If not, what am I missing?

user208: It would appear you're trying to import a non-standard redeemScript. Those are non-solvable by definition.
In Bitcoin Core's terminology, there are several "levels" of knowledge about an address/script/output can have:

Nothing. We know nothing about an address, and don't consider it ours.
Watched. An address was imported into the wallet, and thus the wallet considers payments to it as incoming (watch-only) payments that affect its balance. However, nothing else is known about the address.
Solvable. Like watched, but in addition, we actually know how to construct a transaction for spending such an output, with the exception of access to private keys. This means the wallet can do fee estimation for spending (because it can predict how big of a witness/scriptSig will be needed for spending), and can participate in PSBT construction for spending it (which could then e.g. be handed to a hardware wallet or other wallet which does have the private keys). These things aren't possible with just a watched address.
Signable. Like solvable, but the wallet actually has access to private keys for signing too, and thus could directly construct a transaction spending it, without interacting with any other entity.

A non-standard redeemScript cannot be more than watched, as clearly Bitcoin Core can't know how to construct an input for such a script/address. The warning you're getting is letting you know that despite the fact that you provided scripts or public keys to the import command (information which typically helps achieve solvability), the result isn't actually solvable, and thus you'd be just as well off just importing the address and nothing more.

135703: <p>I am trying to import a P2SH address as watch-only using the importmulti RPC command. I provide the scriptPubKey, timestamp, and redeemscript values. The value of scriptPubKey that I'm submitting is the hex representation of the <code>P2SH HASH160 &lt;20 byte hash&gt; EQUAL</code> part of the script. The redeemscript I'm submitting is the hex representation of the preimage to the <code>OP_HASH160</code> function, that when hashed, equals the <code>&lt;20 byte hash&gt;</code>.</p>
<p>The import is successful, but I get a warning:</p>
<p><em>&quot;Importing as non-solvable: unrecognized script. If this is intentional, don't provide any keys, pubkeys, witnessscript, or redeemscript.&quot;</em></p>
<p>Should not this be solvable if providing both the scriptPubKey and redeemscript? If not, what am I missing?</p>
 208: <p>It would appear you're trying to import a non-standard redeemScript. Those are non-solvable by definition.</p>
<p>In Bitcoin Core's terminology, there are several &quot;levels&quot; of knowledge about an address/script/output can have:</p>
<ul>
<li><strong>Nothing</strong>. We know nothing about an address, and don't consider it ours.</li>
<li><strong>Watched</strong>. An address was imported into the wallet, and thus the wallet considers payments to it as incoming (watch-only) payments that affect its balance. However, nothing else is known about the address.</li>
<li><strong>Solvable</strong>. Like watched, but in addition, we actually know how to construct a transaction for spending such an output, with the exception of access to private keys. This means the wallet can do fee estimation for spending (because it can predict how big of a witness/scriptSig will be needed for spending), and can participate in PSBT construction for spending it (which could then e.g. be handed to a hardware wallet or other wallet which does have the private keys). These things aren't possible with just a watched address.</li>
<li><strong>Signable</strong>. Like solvable, but the wallet actually has access to private keys for signing too, and thus could directly construct a transaction spending it, without interacting with any other entity.</li>
</ul>
<p>A non-standard redeemScript cannot be more than watched, as clearly Bitcoin Core can't know how to construct an input for such a script/address. The warning you're getting is letting you know that despite the fact that you provided scripts or public keys to the import command (information which typically helps achieve solvability), the result isn't actually solvable, and thus you'd be just as well off just importing the address and nothing more.</p>
