block-core / bcips

Blockcore Improvement Proposals
The Unlicense
1 stars 0 forks source link

Idea after reading BCIP-0005 #7

Open bitcoinuser opened 1 week ago

bitcoinuser commented 1 week ago

Hi,

I would like to know if is possible to have something like this in Bitcoin:

1- We have a bitcoin address with some rules like: People that deposit bitcoins on it, only will be able to spend it after 10 years. If someone decides, after depositing, to withdraw the funds, this someone will have a penalty of like 10% of the value that he deposited. The 10% would be redistributed to all other people that is following the contract.

Do you think something like this is possible? Thanks.

dangershony commented 1 week ago

Hi,

I would like to know if is possible to have something like this in Bitcoin:

1- We have a bitcoin address with some rules like: People that deposit bitcoins on it, only will be able to spend it after 10 years. If someone decides, after depositing, to withdraw the funds, this someone will have a penalty of like 10% of the value that he deposited. The 10% would be redistributed to all other people that is following the contract.

Do you think something like this is possible? Thanks.

Hi may I ask what is the use case?

I will need more context, are the users know in advance? Can the allocation of the 10% be known in advance or at a later stage? Can you use a third party as escrow?

You would probably use a taproot script, for the 10 year delay it's easy you use a time-lock and the funders key.

But what you ask for the 10% distribution is a bit complicated, because you need to know in advance the keys of such participants committing bitcoin in order to create the rules for the distribution of 10% to other participants.

Say you know in advance that 10 participants will add money to an address, then each participant can program a revocation transaction that pays out 10% evenly distributed to the 9 other participants and the remaining 90% to a key the spender controls (the redistributed funds go directly to the other users no additional conditions).

This means however that the address will be reused in multiple utxos (transactions) using a single utxo will make it far more complicated.

If users are not known in advance the only way to do it (that I can think of) is using multisig between the funder and some thrid party escrow and later creating relocation transactions.

bitcoinuser commented 1 week ago

Hi may I ask what is the use case?

The use case is having a tool (like a game) that makes possible to see who is skin in the game in Bitcoin (Not only in words). Many people say that they believe in Bitcoin for long run, but when Bitcoin price appreciates, they are the first to sell. If we could have a tool to see how many people and how many bitcoins are locked for long run, other people could gain confidence that Bitcoin people are in the game for long run and will not sell to make more fiat money. They are in Bitcoin because they believe in it as a store of value. And if someone decides to withdraw the bitcoins early, they pay a penalty for the rest of bitcoiners that believe in Bitcoin for long run and that follows the contract.

dangershony commented 1 week ago

I like the idea, but not sure how to implement it in bitcoin script.

As I said before this can also be achieved by burning 10% but then you don't have the direct incentives of the users gaining coins when others exist.