Author

Topic: OP_VAULT and OP_UNVAULT what you guys think? (Read 146 times)

sr. member
Activity: 1190
Merit: 469
January 20, 2023, 10:22:25 PM
#13
Quote from: achow101
I also want to note that the author of this proposal has been working on vault constructions for a very long time. It's highly likely that if you think of an "obvious" construction, he's likely thought or heard of it already. The motivation of this proposal is that there is no way to construct a vault that meets the "idealized vault" described in the paper using today's consensus and policy rules.
thanks for putting you your 2 cents (and more)! you definitely know this thing pretty well it seems like. nice to have someone like that around.

Quote from: pooya87
I also disliked the unvaulting process where you have to send the "vaulted" coins to a new special output to be "unvaulted" before you can spend them normally. In other words it requires 2 transactions to spend a vaulted coin.
yes that is true. but just ask anyone like LukeDashJr if they wish they would have had something like this. it could have saved him from losing all his money. he could have still used his "hot wallet" from a computer connected to the internet but when he saw the hacker trying to unvault and then spend his bitcoins, he could have snuffed that out asap by sending to his "cold wallet".

now i'm not gonna lie, the value of the delay time is an important consideration that would be something each individual would need to evaluate and determine what works best for themself based on their particular use case of bitcoin. set it too small and someone could unvault and spend before you even knew it happened. set it too large and you can't really use your "hot wallet" effectively to send bitcoin in an expedient manner.  enough said. Shocked
staff
Activity: 3458
Merit: 6793
Just writing some code
Reading this I also have the feeling that this is just a combination of existing OP codes or a script that can be done using existing ones (OP_CHECKLOCKTIMEVERIFY and OP_IF).
I also disliked the unvaulting process where you have to send the "vaulted" coins to a new special output to be "unvaulted" before you can spend them normally. In other words it requires 2 transactions to spend a vaulted coin.
Time locks are already a thing: https://en.bitcoin.it/wiki/Timelock
Yes. And?

Quote
I don't see much of a purpose for "vaulting" and "unvaulting" funds as it seems to serve the same purpose and doesn't add much/any extra security than a multisig might.

I disagree. Per the author,

Quote
Vaults are an especially useful kind of covenant that give Bitcoin users operational simplicity
during expected use, but heightened security in the event of unauthorized access to private keys


Multisig does the same though?

I'm.sure there could be a mistake I've made in this (hence why I didn't post it straight away) but why is this different from.a 2of2 multisig where a time locked transaction is signed from.them 2 and held in a wallet. The second can still sign for funds to be spent if they want to at any time (to cosign the first) but it could be stored in a more secure manner (such as on an airgapped machine).

Considering you have to store extra values in op_vault (an extra address at least) it just seems like a less efficient way to do it.

I think NotATether was getting at the idea that an attacker unvaulting coins wouldn't be waiting around with their transaction too and would try to do both broadcasts fairly quickly.
Multisigs with timelocks and other script constructions do not do what OP_VAULT enables.

There are constructions for vaults today, however they involve the use of presigned transactions and destroying keys. This is generally fragile and has several pitfalls, the obvious being loss of the presigned transactions means loss of the funds. It turns the transactions into secret data, and transactions are much larger, so this becomes harder to deal with. There are other issues such as the vault cannot be reused (the key was destroyed after setup, so no new inputs can be signed for) and the destinations and amounts cannot be changed after the setup. OP_VAULT solves these things.

OP_VAULT makes it so that the secret data in the vault is still just private keys. Because it's a script, it can be reused and receive coins even after setup. The destinations of the coins can be determined during unvaulting, not during setup.

And what happens if somebody needs to move the coins that are delayed by the vault, because an unauthorized person initiated the transfer in the first place? Will RBF still work in that kind of enclave, or does this design require the consensus to reject such transactions?
The way I understand it, the RBF itself has to be changed and added to the protocol as part of the consensus rules (it currently is just an option) at least for transactions containing the proposed OP codes so that they can treat them differently and enforce it correctly too (ie. reject if the "ephemeral anchor" was not optional).

Yeah, I don't see that happening. It sounds like a more extreme version of fullrbf where instead of being default-on, the "off" switch is completely disabled.

And then all the other full nodes which do not have any support for "node policies" would have to implement the RBF capability as well.
Actually it doesn't. There aren't any additional changes to RBF required that aren't already planned and in the works. Ephemeral anchors requires package relay and validation, which is already largely in progress. It just adds one additional rule for detecting and handling the anchor output. Otherwise, OP_TRUE outputs are already valid, as are 0-value outputs and spending them. It's just a policy change, there's no consensus meaning applied to ephemeral anchors.

And what happens if somebody needs to move the coins that are delayed by the vault, because an unauthorized person initiated the transfer in the first place? Will RBF still work in that kind of enclave, or does this design require the consensus to reject such transactions?
There are two methods for recovering the coins. The first is to double spend the unvault, and the second is to recover during the spend delay. In the first method, you would double spend the OP_VAULT input with a transaction that sends those funds to the recovery address. Doing this requires package RBF to be implemented (and this is something that is already in progress) as well as ephemeral anchors. The recovery just needs to pay a package feerate that's higher than the unvaulting. However, even if this fails (or is not done) and the unvaulting transaction is confirmed, there is still an additional delay before the unvaulted coins can actually be moved to their final destinations. During this time, the coins still be swept to the recovery address by a transaction that spends the OP_UNVAULT output and sends everything to the recovery address. This does not require RBF, and the only consensus changes are those required to implement the semantics of the opcodes themselves.



I also want to note that the author of this proposal has been working on vault constructions for a very long time. It's highly likely that if you think of an "obvious" construction, he's likely thought or heard of it already. The motivation of this proposal is that there is no way to construct a vault that meets the "idealized vault" described in the paper using today's consensus and policy rules.
copper member
Activity: 821
Merit: 1992
Quote
I think NotATether was getting at the idea that an attacker unvaulting coins wouldn't be waiting around with their transaction too and would try to do both broadcasts fairly quickly.
That's why multisig is combined with timelock. In other cases, we would have only multisig in the Lightning Network.
copper member
Activity: 2856
Merit: 3071
https://bit.ly/387FXHi lightning theory
Time locks are already a thing: https://en.bitcoin.it/wiki/Timelock
Yes. And?

Quote
I don't see much of a purpose for "vaulting" and "unvaulting" funds as it seems to serve the same purpose and doesn't add much/any extra security than a multisig might.

I disagree. Per the author,

Quote
Vaults are an especially useful kind of covenant that give Bitcoin users operational simplicity
during expected use, but heightened security in the event of unauthorized access to private keys


Multisig does the same though?

I'm.sure there could be a mistake I've made in this (hence why I didn't post it straight away) but why is this different from.a 2of2 multisig where a time locked transaction is signed from.them 2 and held in a wallet. The second can still sign for funds to be spent if they want to at any time (to cosign the first) but it could be stored in a more secure manner (such as on an airgapped machine).

Considering you have to store extra values in op_vault (an extra address at least) it just seems like a less efficient way to do it.

I think NotATether was getting at the idea that an attacker unvaulting coins wouldn't be waiting around with their transaction too and would try to do both broadcasts fairly quickly.

legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
And what happens if somebody needs to move the coins that are delayed by the vault, because an unauthorized person initiated the transfer in the first place? Will RBF still work in that kind of enclave, or does this design require the consensus to reject such transactions?
The way I understand it, the RBF itself has to be changed and added to the protocol as part of the consensus rules (it currently is just an option) at least for transactions containing the proposed OP codes so that they can treat them differently and enforce it correctly too (ie. reject if the "ephemeral anchor" was not optional).

Yeah, I don't see that happening. It sounds like a more extreme version of fullrbf where instead of being default-on, the "off" switch is completely disabled.

And then all the other full nodes which do not have any support for "node policies" would have to implement the RBF capability as well.
legendary
Activity: 3472
Merit: 10611
And what happens if somebody needs to move the coins that are delayed by the vault, because an unauthorized person initiated the transfer in the first place? Will RBF still work in that kind of enclave, or does this design require the consensus to reject such transactions?
The way I understand it, the RBF itself has to be changed and added to the protocol as part of the consensus rules (it currently is just an option) at least for transactions containing the proposed OP codes so that they can treat them differently and enforce it correctly too (ie. reject if the "ephemeral anchor" was not optional).
sr. member
Activity: 333
Merit: 506

I re-read that thread, but didn't see anyone mentioning OP_VAULT.

My response was naive. The former discussion acts on an output retrospectively, while this acts prospectively. That small difference makes this very interesting but not without pitfalls.
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
And what happens if somebody needs to move the coins that are delayed by the vault, because an unauthorized person initiated the transfer in the first place? Will RBF still work in that kind of enclave, or does this design require the consensus to reject such transactions?
legendary
Activity: 3472
Merit: 10611
Reading this I also have the feeling that this is just a combination of existing OP codes or a script that can be done using existing ones (OP_CHECKLOCKTIMEVERIFY and OP_IF).
I also disliked the unvaulting process where you have to send the "vaulted" coins to a new special output to be "unvaulted" before you can spend them normally. In other words it requires 2 transactions to spend a vaulted coin.
sr. member
Activity: 333
Merit: 506
This has been discussed in detail in this thread: https://bitcointalksearch.org/topic/why-doesnt-bitcoin-have-a-freeze-function-5351497

An op_vault or op_unvault is little different than a multisig.

Timelocks, multisigs, or using multiple addresses can tackle this issue.
sr. member
Activity: 1190
Merit: 469
Time locks are already a thing: https://en.bitcoin.it/wiki/Timelock
Yes. And?

Quote
I don't see much of a purpose for "vaulting" and "unvaulting" funds as it seems to serve the same purpose and doesn't add much/any extra security than a multisig might.

I disagree. Per the author,

Quote
Vaults are an especially useful kind of covenant that give Bitcoin users operational simplicity
during expected use, but heightened security in the event of unauthorized access to private keys
copper member
Activity: 2856
Merit: 3071
https://bit.ly/387FXHi lightning theory
Time locks are already a thing: https://en.bitcoin.it/wiki/Timelock

I don't see much of a purpose for "vaulting" and "unvaulting" funds as it seems to serve the same purpose and doesn't add much/any extra security than a multisig might.
sr. member
Activity: 1190
Merit: 469
Dude seems pretty solid.

https://jameso.be/vaults.pdf

Would like to see something make it into bitcoin like this. Since if the time delay could be set long enough then it would serve effectively as a "freezing" function: my post about freezing functions was locked https://bitcointalksearch.org/topic/why-doesnt-bitcoin-have-a-freeze-function-5351497  Shocked

for those too lazy to read the pdf, here's their concluding remarks:

Quote
We have presented a new set of opcodes, OP_VAULT and OP_UNVAULT, which enable featureful
vaults in Bitcoin. These opcodes allow encumbering a set of coins in such a way that their
spending requires passing through a delay period, during which the coins can be recovered to a
set address. Enabling on-chain enforcement of such a control flow presents significant benefits to
custodians of bitcoin, whether large or small, because this scheme in essence offers multisig-like
security for an expected operational burden roughly on par with single sig use.
Jump to: