You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When an asset is time locked (but the BTC anchor transaction is not), we currently publish a transfer transaction in the normal tapfreighter send flow, even if the asset would become invalid and factually burned because its time lock hasn't expired yet.
We need to add a check in the send flow that makes sure every asset's witness is valid with the current block height before publishing the transaction.
The text was updated successfully, but these errors were encountered:
Yes and no. Bubbling up the time locks from the asset level to the anchor transaction level assumes that the BTC anchor transaction has the same time lock restrictions (which IMO in most cases makes sense, mostly to just prevent this case).
But if the BTC level is unencumbered by scripts (just normal keyspend path), then currently nothing stops the transaction from going through and effectively burning the assets in the process (because a proof will be generated that can never become valid).
Thinking about it a bit more, there would also be interactions with potential re-orgs. Time locks and re-orgs aren't a problem on BTC in general because when a re-org happens, the transactions just go back into the mempool. And if a time lock witness isn't valid anymore because of the re-org, the transaction would just be rejected and would need to be re-broadcasted at a later time.
But if an asset has a time lock restriction, the BTC level mempool mechanism wouldn't detect that and might include such a transaction in a block that's too early.
So perhaps we should make it very clear that for safety reasons the BTC level transaction should always have the same time lock in place?
Discovered in #1287 (reply in thread).
When an asset is time locked (but the BTC anchor transaction is not), we currently publish a transfer transaction in the normal
tapfreighter
send flow, even if the asset would become invalid and factually burned because its time lock hasn't expired yet.We need to add a check in the send flow that makes sure every asset's witness is valid with the current block height before publishing the transaction.
The text was updated successfully, but these errors were encountered: