<p>No. <code>OP_CHECKMULTISIG</code> only supports multiple pubkey not pubkeyhash (addresses).</p>

CC BY-SA 3.0
2015-04-04T18:11:32.400Z
So? `OP_CHECKSIG` only supports pubkeys, too.
Nick ODell
CC BY-SA 3.0
2015-04-04T11:46:08.447Z
2015-04-04T11:46:08.447Z
Claris
<p>This is possible, but there isn't really any code to do it automatically.</p>

<p>Instead of creating a scriptPubKey like </p>

<pre><code>&lt;pubkey 1&gt; &lt;pubkey 2&gt; &lt;pubkey 3&gt; 2 OP_CHECKSIG
</code></pre>

<p>you'd make one like</p>

<pre><code>OP_DUP OP_HASH160 &lt;pubkeyhash 1&gt; OP_EQUALVERIFY OP_ROT
OP_DUP OP_HASH160 &lt;pubkeyhash 2&gt; OP_EQUALVERIFY OP_ROT 
OP_DUP OP_HASH160 &lt;pubkeyhash 3&gt; OP_EQUALVERIFY OP_ROT 2 OP_CHECKSIG
</code></pre>

<p>Also, the code of the receiver would need to change, in order to recognize the output as spendable.</p>

<p>It's probably much easier to get their public keys. If they've used their addresses on the network, you can look it up using <code>https://blockchain.info/q/pubkeyaddr/&lt;addr&gt;</code></p>

<p>Example: <a href="https://blockchain.info/q/pubkeyaddr/1snowqQP5VmZgU47i5AWwz9fsgHQg94Fa" rel="nofollow">https://blockchain.info/q/pubkeyaddr/1snowqQP5VmZgU47i5AWwz9fsgHQg94Fa</a></p>

<p>Or, you can use George Kimionis's method to decode addresses.</p>

CC BY-SA 3.0
2015-04-05T08:19:08.677Z
Thanks Nick, could you point me to George Kimionis's method to decode addresse?
Giulio Prisco
CC BY-SA 3.0
2015-04-05T08:20:23.680Z
That's just the answer below.
Nick ODell
CC BY-SA 3.0
2015-04-05T08:20:47.597Z
A problem is that many casual users don't know their public keys and are unable to find them, and others (e.g. Circle etc.) can't know them at all.
Giulio Prisco
CC BY-SA 3.0
2015-04-05T08:22:33.690Z
oops sorry I didn't see that
Giulio Prisco
CC BY-SA 3.0
2015-04-06T03:24:13.677Z
@NickODell Wow! Have you actually run this script? I'll give it a shot on testnet, bc as you know I love script stuff
Wizard Of Ozzie
CC BY-SA 3.0
2015-04-06T03:26:28.780Z
@WizardOfOzzie I have not tested this. You should be able to spend it with a scripSig of `0 <sig> <sig> <key> <key <key>`, though.
Nick ODell
CC BY-SA 3.0
2015-04-04T18:50:51.353Z
2015-04-05T07:59:20.743Z
2015-04-05T07:59:20.743Z
Nick ODell
<p>Any way to create a multisig address from Bitcoin addresses (instead of public keys)?</p>

<p>If not, why not? What would the problem be?</p>

<p>EDITED - Thanks for the answers. This is for an application that generates multisig transactions with escrow for external users. Of course anyone who controls an address can find the public key, but that's probably beyond many casual users (or too much of an hassle).</p>

<bitcoind><multi-signature>
Any way to create a multisig address from Bitcoin addresses (instead of public keys)?
Giulio Prisco
# Any way to create a multisig address from Bitcoin addresses (instead of public keys)?

(Asked by: username_0 on 2015-04-04)

Any way to create a multisig address from Bitcoin addresses (instead of public keys)?

If not, why not? What would the problem be?

EDITED - Thanks for the answers. This is for an application that generates multisig transactions with escrow for external users. Of course anyone who controls an address can find the public key, but that's probably beyond many casual users (or too much of an hassle).

**Tags:** bitcoind, multi-signature


---

## 2 answers

### Answer by username_1 on 2015-04-04. Score: 1 | Accepted answer

No. `OP_CHECKMULTISIG` only supports multiple pubkey not pubkeyhash (addresses).

> **Comments:**
> **username_2**: So? `OP_CHECKSIG` only supports pubkeys, too.  

---

### Answer by username_2 on 2015-04-04. Score: 2

This is possible, but there isn't really any code to do it automatically.

Instead of creating a scriptPubKey like

```
<pubkey 1> <pubkey 2> <pubkey 3> 2 OP_CHECKSIG

```

you'd make one like

```
OP_DUP OP_HASH160 <pubkeyhash 1> OP_EQUALVERIFY OP_ROT
OP_DUP OP_HASH160 <pubkeyhash 2> OP_EQUALVERIFY OP_ROT 
OP_DUP OP_HASH160 <pubkeyhash 3> OP_EQUALVERIFY OP_ROT 2 OP_CHECKSIG

```

Also, the code of the receiver would need to change, in order to recognize the output as spendable.

It's probably much easier to get their public keys. If they've used their addresses on the network, you can look it up using `https://blockchain.info/q/pubkeyaddr/<addr>`

Example: <https://blockchain.info/q/pubkeyaddr/1snowqQP5VmZgU47i5AWwz9fsgHQg94Fa>

Or, you can use George Kimionis's method to decode addresses.

> **Comments:**
> **username_0**: Thanks username_2, could you point me to George Kimionis's method to decode addresse?  
> **username_2**: That's just the answer below.  
> **username_0**: A problem is that many casual users don't know their public keys and are unable to find them, and others (e.g. Circle etc.) can't know them at all.  
> **username_0**: oops sorry I didn't see that  
> **username_3**: @username_2 Wow! Have you actually run this script? I'll give it a shot on testnet, bc as you know I love script stuff  
> **username_2**: @username_3 I have not tested this. You should be able to spend it with a scripSig of `0 <sig> <sig> <key> <key <key>`, though.  

---

