<p>Yes, nothing stops you from creating such a wallet. However, there are more efficient ways of encoding your desired policy than a 3-of-4 multisig with one key repeated twice.</p>
<p>If you use the <a href="https://bitcoin.sipa.be/miniscript/" rel="nofollow noreferrer">Miniscript</a> policy compiler and input the policy <code>and(pk(A),or(pk(B),pk(C)))</code>, you get this script which doesn't repeat any of the keys:</p>
<pre><code>&lt;B&gt; OP_CHECKSIG
OP_NOTIF
  &lt;C&gt; OP_CHECKSIGVERIFY
OP_ENDIF
&lt;A&gt; OP_CHECKSIG
</code></pre>

CC BY-SA 4.0
2023-08-14T16:09:15.950Z
I tried to create a multisig wallet using the suggested policy in Sparrow wallet but it threw an "invalid output descriptor" error. If I try to create a simple 2 of 4 multisig wallet, it generates the following descriptor:

wsh(sortedmulti(2,Keystore1,Keystore2,Keystore3,Keystore4))

This appears to be a different notation. What should the descriptor be in Sparrow wallet for a multisig wallet supporting (A and (B or C)) ? The Sparrow GUI doesn't seem to provide options to create more complex wallets such as this.
Guru Josh
CC BY-SA 4.0
2023-08-14T18:01:50.713Z
Hi Josh, if you have another question please use the Ask Question button.
Vojtěch Strnad
CC BY-SA 4.0
2023-08-15T13:41:42.973Z
I have posted this as a new question: https://bitcoin.stackexchange.com/questions/119309/create-a-multisig-wallet-using-sparrow-wallet-with-keys-a-and-b-or-c
Guru Josh
CC BY-SA 4.0
2023-08-12T10:38:54.357Z
2023-08-12T10:38:54.357Z
Vojtěch Strnad
<p>Try to test it in Bitcoin Core, better in Regtest:</p>
<ul>
<li>Create a 'blank' 'watching-only' 'descriptor' wallet.</li>
<li>Get some public key(s) for testing as well as the corresponding WIF private keys.</li>
<li>Create an sh or wsh MultiSig descriptor using multiple public keys, for example (two same pubKeys): sh(sortedmulti(3,pubKey_1,pubKey_1,pubKey_2,pubKey_3))</li>
<li>Go to console and type the command getdescriptorinfo &quot;YOUR_DESCRIPTOR&quot; and take note of the &quot;checksum&quot; that you'll need to include to import the descriptor.</li>
<li>Import it to your newly created wallet using the command: importdescriptors &quot;[{&quot;desc&quot;: &quot;YOUR_DESCRIPTOR#checksum&quot;,&quot;label&quot;: &quot;YOUR_LABEL&quot;,&quot;timestamp&quot;: &quot;now&quot;}]&quot;</li>
<li>The address should be included in your Receiving addresses with the specified label</li>
<li>Now, do some tests.</li>
</ul>

CC BY-SA 4.0
2023-08-18T02:17:52.200Z
2023-08-18T02:17:52.200Z
Mani T
<p>Is there any limitation to how many times the same set of private keys can exist within a multisig wallet? For example, could a 3 of 4 multisig wallet be created with two of the four keys being identical such that that key is always required to sign for a withdrawal along with one of the other two keys?</p>

<wallet><security><script><multi-signature>
Can the same set of private keys be used multiple times in a multisig wallet?
Guru Josh
# Can the same set of private keys be used multiple times in a multisig wallet?

(Asked by: username_0 on 2023-08-12)

Is there any limitation to how many times the same set of private keys can exist within a multisig wallet? For example, could a 3 of 4 multisig wallet be created with two of the four keys being identical such that that key is always required to sign for a withdrawal along with one of the other two keys?

**Tags:** wallet, security, script, multi-signature


---

## 2 answers

### Answer by username_1 on 2023-08-12. Score: 3

Yes, nothing stops you from creating such a wallet. However, there are more efficient ways of encoding your desired policy than a 3-of-4 multisig with one key repeated twice.

If you use the [Miniscript](https://bitcoin.sipa.be/miniscript/) policy compiler and input the policy `and(pk(A),or(pk(B),pk(C)))`, you get this script which doesn't repeat any of the keys:

```
<B> OP_CHECKSIG
OP_NOTIF
  <C> OP_CHECKSIGVERIFY
OP_ENDIF
<A> OP_CHECKSIG

```

> **Comments:**
> **username_0**: I tried to create a multisig wallet using the suggested policy in Sparrow wallet but it threw an "invalid output descriptor" error. If I try to create a simple 2 of 4 multisig wallet, it generates the following descriptor:  wsh(sortedmulti(2,Keystore1,Keystore2,Keystore3,Keystore4))  This appears to be a different notation. What should the descriptor be in Sparrow wallet for a multisig wallet supporting (A and (B or C)) ? The Sparrow GUI doesn't seem to provide options to create more complex wallets such as this.  
> **username_1**: Hi username_0, if you have another question please use the Ask Question button.  
> **username_0**: I have posted this as a new question: https://bitcoin.stackexchange.com/questions/119309/create-a-multisig-wallet-using-sparrow-wallet-with-keys-a-and-b-or-c  

---

### Answer by username_2 on 2023-08-18. Score: 0

Try to test it in Bitcoin Core, better in Regtest:

* Create a 'blank' 'watching-only' 'descriptor' wallet.
* Get some public key(s) for testing as well as the corresponding WIF private keys.
* Create an sh or wsh MultiSig descriptor using multiple public keys, for example (two same pubKeys): sh(sortedmulti(3,pubKey\_1,pubKey\_1,pubKey\_2,pubKey\_3))
* Go to console and type the command getdescriptorinfo "YOUR\_DESCRIPTOR" and take note of the "checksum" that you'll need to include to import the descriptor.
* Import it to your newly created wallet using the command: importdescriptors "[{"desc": "YOUR\_DESCRIPTOR#checksum","label": "YOUR\_LABEL","timestamp": "now"}]"
* The address should be included in your Receiving addresses with the specified label
* Now, do some tests.


---

