<p>If you are to receive a transaction with address A, you need A's private key in order to spend it and nothing more.</p>

<p>If you want to require two or more addresses to be used to spend money you receive, you would need to use a multisig address. After that, you would need to use m-of-n private keys to spend the coins, with m and n being predefined when you create the multisig address.</p>

<p>There are other ways one could restrict coins from being spent - say requiring a password or allowing anyone to spend them, but they are a lot more obscure and generally not used by anyone.</p>

CC BY-SA 3.0
2013-03-07T15:17:39.823Z
by keeping receiving address the same with every transaction, is it possible to make spending would require private key + extra details (like, another key), through scripts?
vi.su.
CC BY-SA 3.0
2013-03-07T20:57:15.380Z
@vi.su. The way one can redeem the transaction is determined by the sender, not the receiver. They can specify what data is needed - signature or password. You could, however, just send all of your incoming transactions from one address straight into a multisig address and thus require that extra data. Asides that, there isn't much you can do.
ThePiachu
CC BY-SA 3.0
2013-03-07T10:18:47.827Z
2013-03-07T10:18:47.827Z
ThePiachu
<p>What you ask is impossible. The scriptPubKey determines the conditions under which the bitcoins can be accessed. For a different set of conditions (e.g. first (key1,key2), then (key1,key3)...) you need a different scriptPubKey. And a different scriptPubKey means a different address on which you receive the bitcoins.</p>

CC BY-SA 3.0
2013-03-10T21:37:04.883Z
2013-03-10T21:37:04.883Z
CJP
<p>I don't really understand what you're asking, but I think the answer is no.</p>

<p>In every such scheme, there would be two pieces of information - a secret part/key, and a public address. You can split the secret key to n pieces (multisig), and the implementation of this is underway, but the basic observation remains.</p>

<p>Now, if the private key is leaked, the bitcoins are spendable. If you need to receive bitcoins on a system without the ability to spend them, just delete the private key from that system, and only keep it elsewhere.</p>

CC BY-SA 3.0
2013-03-05T13:30:24.350Z
My question is, how to allow an address to receive bitcoins without worrying about primary key compromised. Through script, is it possible to prevent the spend using another key (by keeping my address same).
vi.su.
CC BY-SA 3.0
2013-03-05T15:10:29.757Z
@vi.su. - perhaps this is what you meant to ask? http://bitcoin.stackexchange.com/questions/8142/can-you-generate-bitcoin-addresses-without-storing-a-private-key
ripper234
CC BY-SA 3.0
2013-03-06T08:25:20.733Z
I have completely rephrased my question. please check.
vi.su.
CC BY-SA 3.0
2013-03-05T11:15:12.777Z
2013-03-05T11:15:12.777Z
ripper234
<p>Can I always use single public key (<strong>addr1</strong>) for all my transactions and when I spend every time protect it with different scripts / keys (<strong>key2</strong>, <strong>key3</strong>, etc.), so that spending requires at least two keys ('<strong>key1</strong>', and '<strong>key-n</strong>') but <strong>addr1</strong> remains the same for receiving bitcoins.</p>

<p>example.</p>

<pre><code>(transaction, output script): (input address, amount) --&gt; (output 1); (output 2)
--------------------------------------------------------------------------
(trxn1, script1): (addr1, 10 BTC) --&gt; (addr2,  5 BTC); (addr1,  5 BTC)
(trxn2, script2): (addr1,  5 BTC) --&gt; (addr3,  1 BTC); (addr1,  4 BTC)
(trxn3, script3): (addr1,  4 BTC) --&gt; (addr4,  1 BTC); (addr1,  3 BTC)
(trxn4, script4): (addr5, 12 BTC) --&gt; (addr1, 10 BTC); (addr5,  2 BTC)
(trxn5, script5): (addr1, 13 BTC) --&gt; (addr6,  2 BTC); (addr1, 11 BTC)
</code></pre>

<p>Is it possible to make script 1, 2, 3 and 5 would require different keys (at least 2; <strong>key1</strong> and <strong>key-n</strong>) to spend bitcoin from this address?</p>

<p>Is it possible with Script? Is there any other ways in which I can keep single address for all my transactions?</p>

<p><strong>addr1</strong> is my address; transactions 1, 2, 3, 5 are my spends and transaction 4 is receiving transaction.</p>

<hr>

<p><strong>Motivation</strong>: To use same address for all my transactions. Reason is, I own firstbits address '1vijay', and I don't want to loose in case of my private key compromised. I am looking for any solution that would solve my problem, particularly scripts.</p>

<p>pseudo-script would be something like,</p>

<pre><code>scriptPubKey: &lt;pubKey1&gt; OP_DROP &lt;pubKey2&gt; OP_CHECKSIG
scriptSig: &lt;sig&gt;
</code></pre>

<p>I would like to use 'pubKey1' as my receiving address always, but my spending would depend on private key corresponding to 'pubKey2'.</p>

CC BY-SA 3.0
2013-03-08T05:01:10.040Z
Looks like, it is too tricky, and not for everyone. It would be better if different addresses used every time.
vi.su.
CC BY-SA 3.0
2013-03-08T16:03:42.820Z
If you can't spend your bitcoins with just key1, then you're not really receiving bitcoins with that address, are you? I suspect you could do something similar to your question [using key splitting](http://bitcoin.stackexchange.com/questions/7994/what-is-key-splitting-when-would-i-use-it).
Nick ODell
CC BY-SA 3.0
2013-03-08T16:44:00.117Z
No, looks like, key splitting is about private keys. But, split keys are going to be the same always..
vi.su.
<script>
Can I use single address for all my transactions?
vi.su.
# Can I use single address for all my transactions?

(Asked by: username_0 on 2013-03-05)

Can I always use single public key (addr1) for all my transactions and when I spend every time protect it with different scripts / keys (key2, key3, etc.), so that spending requires at least two keys ('key1', and 'key-n') but addr1 remains the same for receiving bitcoins.
example.
(transaction, output script): (input address, amount) --> (output 1); (output 2)
--------------------------------------------------------------------------
(trxn1, script1): (addr1, 10 BTC) --> (addr2,  5 BTC); (addr1,  5 BTC)
(trxn2, script2): (addr1,  5 BTC) --> (addr3,  1 BTC); (addr1,  4 BTC)
(trxn3, script3): (addr1,  4 BTC) --> (addr4,  1 BTC); (addr1,  3 BTC)
(trxn4, script4): (addr5, 12 BTC) --> (addr1, 10 BTC); (addr5,  2 BTC)
(trxn5, script5): (addr1, 13 BTC) --> (addr6,  2 BTC); (addr1, 11 BTC)

Is it possible to make script 1, 2, 3 and 5 would require different keys (at least 2; key1 and key-n) to spend bitcoin from this address?
Is it possible with Script? Is there any other ways in which I can keep single address for all my transactions?
addr1 is my address; transactions 1, 2, 3, 5 are my spends and transaction 4 is receiving transaction.

Motivation: To use same address for all my transactions. Reason is, I own firstbits address '1vijay', and I don't want to loose in case of my private key compromised. I am looking for any solution that would solve my problem, particularly scripts.
pseudo-script would be something like,
scriptPubKey:  OP_DROP  OP_CHECKSIG
scriptSig: 

I would like to use 'pubKey1' as my receiving address always, but my spending would depend on private key corresponding to 'pubKey2'.

**Tags:** script

> **Comments:**
> **username_0**: Looks like, it is too tricky, and not for everyone. It would be better if different addresses used every time.  
> **username_1**: If you can't spend your bitcoins with just key1, then you're not really receiving bitcoins with that address, are you? I suspect you could do something similar to your question [using key splitting](http://bitcoin.stackexchange.com/questions/7994/what-is-key-splitting-when-would-i-use-it).  
> **username_0**: No, looks like, key splitting is about private keys. But, split keys are going to be the same always..  

---

## 3 answers

### Answer by username_2 on 2013-03-07. Score: 5

If you are to receive a transaction with address A, you need A's private key in order to spend it and nothing more.

If you want to require two or more addresses to be used to spend money you receive, you would need to use a multisig address. After that, you would need to use m-of-n private keys to spend the coins, with m and n being predefined when you create the multisig address.

There are other ways one could restrict coins from being spent - say requiring a password or allowing anyone to spend them, but they are a lot more obscure and generally not used by anyone.

> **Comments:**
> **username_0**: by keeping receiving address the same with every transaction, is it possible to make spending would require private key + extra details (like, another key), through scripts?  
> **username_2**: @username_0 The way one can redeem the transaction is determined by the sender, not the receiver. They can specify what data is needed - signature or password. You could, however, just send all of your incoming transactions from one address straight into a multisig address and thus require that extra data. Asides that, there isn't much you can do.  

---

### Answer by username_3 on 2013-03-10. Score: 0

What you ask is impossible. The scriptPubKey determines the conditions under which the bitcoins can be accessed. For a different set of conditions (e.g. first (key1,key2), then (key1,key3)...) you need a different scriptPubKey. And a different scriptPubKey means a different address on which you receive the bitcoins.


---

### Answer by username_4 on 2013-03-05. Score: 0

I don't really understand what you're asking, but I think the answer is no.

In every such scheme, there would be two pieces of information - a secret part/key, and a public address. You can split the secret key to n pieces (multisig), and the implementation of this is underway, but the basic observation remains.

Now, if the private key is leaked, the bitcoins are spendable. If you need to receive bitcoins on a system without the ability to spend them, just delete the private key from that system, and only keep it elsewhere.

> **Comments:**
> **username_0**: My question is, how to allow an address to receive bitcoins without worrying about primary key compromised. Through script, is it possible to prevent the spend using another key (by keeping my address same).  
> **username_4**: @username_0 - perhaps this is what you meant to ask? http://bitcoin.stackexchange.com/questions/8142/can-you-generate-bitcoin-addresses-without-storing-a-private-key  
> **username_0**: I have completely rephrased my question. please check.  

---

