Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: ilpirata79 on August 05, 2014, 05:45:53 PM



Title: Make a transaction that cannot be spent in X years
Post by: ilpirata79 on August 05, 2014, 05:45:53 PM
Hi everyone,

I would like to send an amount of bitcoins as a gift and I want to make sure that amount is not spendable until a certain date.

Is that possibile? With what clients?

Thanks,
ilpirata79


Title: Re: Make a transaction that cannot be spent in X years
Post by: trynmpo on August 05, 2014, 06:10:44 PM
Hi everyone,

I would like to send an amount of bitcoins as a gift and I want to make sure that amount is not spendable until a certain date.

Is that possibile? With what clients?

Thanks,
ilpirata79

why and to whom you want to send your bitcoins for safekeeping ?? cause you can do it with yourself ?? 


Title: Re: Make a transaction that cannot be spent in X years
Post by: raganius on August 05, 2014, 06:14:00 PM
Hi everyone,

I would like to send an amount of bitcoins as a gift and I want to make sure that amount is not spendable until a certain date.

Is that possibile? With what clients?

Thanks,
ilpirata79

Please, don't do that. I know you might have your reasons. But, unless this non-spendable restriction is revokable, if there's any unforeseen problems (like the urgent need of the money, e.g. to cover serious health urgencies) you (or the person "owning" it) will powerlessly see all that money locked. It will be cruel.

Try to find another solution if possible.

All the best.


Title: Re: Make a transaction that cannot be spent in X years
Post by: ilpirata79 on August 05, 2014, 06:20:48 PM
Hi everyone,

I would like to send an amount of bitcoins as a gift and I want to make sure that amount is not spendable until a certain date.

Is that possibile? With what clients?

Thanks,
ilpirata79

Please, don't do that. I know you might have your reasons. But, unless this non-spendable restriction is revokable, if there's any unforeseen problems (like the urgent need of the money, e.g. to cover serious health urgencies) you (or the person "owning" it) will powerlessly see all that money locked. It will be cruel.

Try to find another solution if possible.

All the best.

Yours is a valid point. I am pondering over it.

Still looking for the answer though...

Best regards,
ilpirata79





Title: Re: Make a transaction that cannot be spent in X years
Post by: TTBit on August 05, 2014, 06:22:36 PM
lbaat.net releases a private key every hour, called a "timepoint secret". The timepoint secret keys are connected - the hash of next hour's private key is this hour's private key. By requesting a public key in the future, you can combine it with your own private key to create an address with no known private key. When lbaat releases the timepoint, it can be combined with your personal private key to release the coins.

lbaat has no way of stealing the coins.

...and its my site  ;D


Title: Re: Make a transaction that cannot be spent in X years
Post by: franky1 on August 05, 2014, 06:28:12 PM
this will never be a feature added to the protocol. otherwise people will start putting dust amounts with a 10 year date to fill up the mempool of miners and nodes as a form of DDOS. with tx's just sitting there for 10 years.

the only solution is to buy a raspberry Pi and make a small program that is set to launch a command at X date. and then just leave it in th corner of your house cabled into your internet, and forget about it.

having the delay set 'locally' is the only option


Title: Re: Make a transaction that cannot be spent in X years
Post by: franky1 on August 05, 2014, 06:31:24 PM
lbaat.net releases a private key every hour, called a "timepoint secret". The timepoint secret keys are connected - the hash of next hour's private key is this hour's private key. By requesting a public key in the future, you can combine it with your own private key to create an address with no known private key. When lbaat releases the timepoint, it can be combined with your personal private key to release the coins.

lbaat has no way of stealing the coins.

...and its my site  ;D

ha ha ha, yea we know the USER wont have the private key until X date, but your code knows the seed that creates these hourly keys meaning you can sweep the addresses as you like when you like even years before you say it meant to be active..

OP do not trust third party services with 'dad man switches' as they prey on people to not check it regular...... and then its too late


EDIT
Lbaat.com appears to be a javascript based generator that can be used offline. so my initial response was wrong. i initially thought the OP was collecting peoples own public key to then use later in combination with his seed generator.


Title: Re: Make a transaction that cannot be spent in X years
Post by: ilpirata79 on August 05, 2014, 06:34:22 PM
It would suffice to be able to retrieve the block number the transaction spending the locked amount is in.

If the block number is above a certain threshold (set in the script) the transaction is valid and is accepted by miners.


Best regards,
ilpirata79


Title: Re: Make a transaction that cannot be spent in X years
Post by: ilpirata79 on August 05, 2014, 06:47:13 PM
lbaat.net releases a private key every hour, called a "timepoint secret". The timepoint secret keys are connected - the hash of next hour's private key is this hour's private key. By requesting a public key in the future, you can combine it with your own private key to create an address with no known private key. When lbaat releases the timepoint, it can be combined with your personal private key to release the coins.

lbaat has no way of stealing the coins.

...and its my site  ;D

How can you know the public key associated with a private key that is unknown until a certain time in the future?

Best regards,
ilpirata79


Title: Re: Make a transaction that cannot be spent in X years
Post by: TTBit on August 05, 2014, 06:48:31 PM
lbaat.net releases a private key every hour, called a "timepoint secret". The timepoint secret keys are connected - the hash of next hour's private key is this hour's private key. By requesting a public key in the future, you can combine it with your own private key to create an address with no known private key. When lbaat releases the timepoint, it can be combined with your personal private key to release the coins.

lbaat has no way of stealing the coins.

...and its my site  ;D

ha ha ha, yea we know the USER wont have the private key until X date, but your code knows the seed that creates these hourly keys meaning you can sweep the addresses as you like when you like even years before you say it meant to be active..

OP do not trust third party services with 'dad man switches' as they prey on people to not check it regular...... and then its too late

not possible, it takes 2 private keys to decode


Title: Re: Make a transaction that cannot be spent in X years
Post by: TTBit on August 05, 2014, 06:53:23 PM
lbaat.net releases a private key every hour, called a "timepoint secret". The timepoint secret keys are connected - the hash of next hour's private key is this hour's private key. By requesting a public key in the future, you can combine it with your own private key to create an address with no known private key. When lbaat releases the timepoint, it can be combined with your personal private key to release the coins.

lbaat has no way of stealing the coins.

...and its my site  ;D

How can you know the public key associated with a private key that is unknown until a certain time in the future?

Best regards,
ilpirata79

lbaat will give the public key upon request. You combine this with your private key to get a 3rd public key (private key is unknown).


Title: Re: Make a transaction that cannot be spent in X years
Post by: iluvpie60 on August 05, 2014, 06:56:06 PM
I think this is interesting. Being able to set aside transactions to be scheduled into the future is kind of like scheduling to pay a bill through a credit card company. They make you click on a real date and input the amount. Once you do that the funds are "withdrawn" from your account and put into a "holding section" until said time has arrived then those funds are applied. You should also be able to cancel any funds that are in the "holding section" just like you would be able to with a bank/credit card payment online. This already exists in banking, no reason why it couldn't be incorporated into a program for btc.


Title: Re: Make a transaction that cannot be spent in X years
Post by: kolloh on August 05, 2014, 06:57:47 PM
What would the purpose of this type of time delay be?

A will? An inheritance? These are the only that come to mind at the moment.

It does seem like it would be better to handle the delivery of the funds yourself. Rather than keeping the funds locked up, they are in your possession until they need to be sent. If some unforeseen event happens, the funds can be accessed.


Title: Re: Make a transaction that cannot be spent in X years
Post by: odolvlobo on August 05, 2014, 06:58:32 PM
There is a mechanism in the protocol that blocks a transaction until a certain time or block.


Please read these:

https://en.bitcoin.it/wiki/Protocol_specification#tx
https://bitcointalk.org/index.php?topic=131443.0


Title: Re: Make a transaction that cannot be spent in X years
Post by: Zalfrin on August 05, 2014, 06:58:46 PM
You could do something like this with multisig I would think. It wouldn't be an automatic thing unless you wrote a script to do it after x amount of time, but yeah.


Title: Re: Make a transaction that cannot be spent in X years
Post by: alani123 on August 05, 2014, 07:01:49 PM
What about giving them the private key of the address but encrypted? You can set a date for them to receive an email containing the key for the encryption at a later date with a tool like http://www.lettermelater.com/


Title: Re: Make a transaction that cannot be spent in X years
Post by: trade-for-pokermoney on August 05, 2014, 07:05:11 PM
lbaat.net releases a private key every hour, called a "timepoint secret". The timepoint secret keys are connected - the hash of next hour's private key is this hour's private key. By requesting a public key in the future, you can combine it with your own private key to create an address with no known private key. When lbaat releases the timepoint, it can be combined with your personal private key to release the coins.

lbaat has no way of stealing the coins.

...and its my site  ;D

This sounds like a clever idea, still I don't see the need for it.

Rather OP should invest some money in self-control classes :p


Title: Re: Make a transaction that cannot be spent in X years
Post by: TTBit on August 05, 2014, 07:07:47 PM
What would the purpose of this type of time delay be?

A will? An inheritance? These are the only that come to mind at the moment.

It does seem like it would be better to handle the delivery of the funds yourself. Rather than keeping the funds locked up, they are in your possession until they need to be sent. If some unforeseen event happens, the funds can be accessed.

I helped create LBAAT along with nelisky.

One use I envisioned was similar to captcha. You provably send bitcoins to YOURSELF as a way to prevent spamming a site. The site can verify that you sent $5 worth of bitcoins to an address that can not be redeemed for X days. Once the private key was released, you sweep the coins back into your wallet.


Title: Re: Make a transaction that cannot be spent in X years
Post by: franky1 on August 05, 2014, 07:08:42 PM

not possible, it takes 2 private keys to decode

ok i just noticed its an offline generator, that does not grab the users public key for you to abuse later. if you highlight at the top of your page that its a browser based generator that can be used offline, your service could have more advantage. i will edit my last post to emphasise it.


Title: Re: Make a transaction that cannot be spent in X years
Post by: JohnFromWIT on August 05, 2014, 07:17:00 PM
Interesting idea.

How about opening an email account and setting it to send the details at a certain date, then disposing of the email password.
Of course you do have to rely on the service to still be running x years down the line and that your friend still has the same email address.


Title: Re: Make a transaction that cannot be spent in X years
Post by: ilpirata79 on August 05, 2014, 08:43:16 PM
There is a mechanism in the protocol that blocks a transaction until a certain time or block.


Please read these:

https://en.bitcoin.it/wiki/Protocol_specification#tx
https://bitcointalk.org/index.php?topic=131443.0


That has the problem that I can revoke the transaction when I want, by broadcasting a different transaction that has not the lock.

What I want is for the money to be not spendable until the time has come...
like I transfer the amount to a public key (the transaction gets into the block) whose script does not allow to spend the amount until a certain date has come.

Best regards,
ilpirata79




Title: Re: Make a transaction that cannot be spent in X years
Post by: Omikifuse on August 05, 2014, 09:15:56 PM
Send the bitcoins to an address, then let in escrow the private key of that address?


Title: Re: Make a transaction that cannot be spent in X years
Post by: Razick on August 05, 2014, 09:18:28 PM
What about giving them the private key of the address but encrypted? You can set a date for them to receive an email containing the key for the encryption at a later date with a tool like http://www.lettermelater.com/

What happens if the service goes offline?

How about this:

Make a split key (2 of 3 to send) with a tool such as bitaddress.org and give the person one of the keys, then keep the other yourself and give one to a trusted relative or your attorney with instructions to give it to the person at the future date. This way you could also make exceptions for medical emergencies or other dire situations.


Title: Re: Make a transaction that cannot be spent in X years
Post by: odolvlobo on August 05, 2014, 09:31:30 PM
There is a mechanism in the protocol that blocks a transaction until a certain time or block.


Please read these:

https://en.bitcoin.it/wiki/Protocol_specification#tx
https://bitcointalk.org/index.php?topic=131443.0


That has the problem that I can revoke the transaction when I want, by broadcasting a different transaction that has not the lock.

1. Send the money to an intermediate address.
2. Create a time-locked transaction sending from the intermediate address.
3. Destroy the private key for the intermediate address.


Title: Re: Make a transaction that cannot be spent in X years
Post by: 2_Thumbs_Up on August 05, 2014, 09:32:38 PM
There is a mechanism in the protocol that blocks a transaction until a certain time or block.


Please read these:

https://en.bitcoin.it/wiki/Protocol_specification#tx
https://bitcointalk.org/index.php?topic=131443.0


That has the problem that I can revoke the transaction when I want, by broadcasting a different transaction that has not the lock.

What I want is for the money to be not spendable until the time has come...
like I transfer the amount to a public key (the transaction gets into the block) whose script does not allow to spend the amount until a certain date has come.

Best regards,
ilpirata79



1. Create a transaction with lock time from adress A to adress B.
2. Save the signed transaction and delete your private key to adress A. Give the private key to adress B to the recipient.
3. Hope that the protocol doesn't change so that your transaction is still valid when the lock time ends.


Title: Re: Make a transaction that cannot be spent in X years
Post by: Cryptopher on August 05, 2014, 09:42:25 PM
I'm not sure if it is possible within the current implementation of Bitcoin, but one suggestion might be a safe deposit box - although that would then be within the realms of a bank. Perhaps some other location within your security just in case of emergency.


Title: Re: Make a transaction that cannot be spent in X years
Post by: ilpirata79 on August 05, 2014, 10:15:45 PM
After some research, I've found out that it can be done; it is not the easiest thing to do and it's not 100% safe:

First way:

1) I sign a transaction that transfers the amount to a multi-sig address, redeemable by me and by another private key owned by the recipient;

2) I sign an incomplete transaction with the desired lock time that transfers the amount  from the multi-sig address to the sole address owned by the recipient (or another). The recipient completes the transaction by signing it but does not broadcast it.

3) when the time has come the transaction is broadcasted by the recipient. The broadcast cannot be done before otherwise nodes may drop it because is too far in the future.

This schema also works if the money is needed before (e.g. health issue). I and the recipient would just have to sign a new transaction that moves the bitcoins somewhere.

There is the problem though, also pointed out by a previous poster, that the transaction format must not change meanwhile...

Second way:

Using an oracle.

sources: https://en.bitcoin.it/wiki/Contracts (Example 4).

Best regards,
ilpirata79




Title: Re: Make a transaction that cannot be spent in X years
Post by: counter on August 17, 2014, 07:54:14 AM
I mean I guess you could put the coins away like the Winklevoss twins do and save the codes in the safety deposit box or something.  I'm not sure if they can keep the said owner of the box out until the time you stipulate.  It is a rather interesting question to me and I'll follow along to see if there is a current solution or what people think could work.