sBTC Research - OP_RETURN vs OP_DROP #315
Replies: 9 comments 8 replies
-
Currently under investigation by @stjepangolemac |
Beta Was this translation helpful? Give feedback.
-
@FriendsFerdinand, could you link the Github issue that introduced OP_DROP back in January/February? I think there's an important discussion there A little bit of context: We’ve concluded on multiple occasions since January 2023 that OP_DROP is a superior peg-in method to OP_RETURN (first with Igor and Jude, then with Marten, etc). As a result, the sBTC BD team has been operating under the assumption that OP_DROP will be supported. It would be great if we can put this discussion to bed with a detailed sBTC SIP that includes OP_DROP so that we won’t have to repeat the same points. 1. OP_DROP significantly lowers sBTC integration efforts. OP_DROP allows users to peg-in from any Bitcoin wallet, custodian, or exchange. OP_RETURN on the other hand only allows users to peg in from a wallet that supports sBTC peg-ins through OP_RETURN, which would be only the Leather Wallet and Xverse upon sBTC launch.
2. OP_DROP allows for superior UX. Stacks apps can now abstract sBTC peg-in operations away, enabling users to interact with apps with native BTC.
3. OP_DROP is significantly more tax efficient than OP_RETURN
|
Beta Was this translation helpful? Give feedback.
-
sBTC proposal: Using OP_DROP instead of OP_Return: https://docs.google.com/document/d/1bbz4dY47qjZzafUFD2Pa2EaDOxDC_L1DIW4o0jo5Lkg/edit A lot of discussion in this issue: |
Beta Was this translation helpful? Give feedback.
-
Another doc on commit-reveal: https://stacks-network.github.io/sbtc-docs/sbtc-operations/commit-reveal-system.html |
Beta Was this translation helpful? Give feedback.
-
I'm currently writing the specs in response to the fact that the signers cannot generate a reveal transaction. The previous threads were written under that assumption. |
Beta Was this translation helpful? Give feedback.
-
Complexity concerns: For stackers to become revealers, assuming that some API is set up with the reveal script or some stacker db instance is created to share reveal scripts with stackers, the complexity required to add commit-reveal from the stackers perspective is minimal. It will be essentially just one more type of stacker db event/peg in transaction type to handle. However, complexity gets introduced due to the need for creating the backchannel that actually sends the necessary info required to reveal the commit to the signers. There also needs to be some API call or function that should be callable to return the resulting address to commit funds to. (See the current sBTC bridge) Security implications: Adding commit reveal to the stackers list of responsibilities is the exact same security concern as the sBTC / stacker system as a whole. The commited funds/DKG aggregate public key are being controlled by a set of stackers who in theory could be malicious. Minimizing the liklihood of a majority stackers (by weight) being compromised minimizes the risk for all transaction types including the commit reveal type The only other security concern is that the means to unlock the committed funds must be secured. This reveal script must be well formed (but this is on the service that creates it to do essentially) and should have the means to be relciamed if the revealer chooses to ignore these funds. Legal implications: |
Beta Was this translation helpful? Give feedback.
-
A related concern is determining whether or not the Stackers can complete the peg-in at all. If the value to be pegged in is too small to cover the requisite transaction fee, or too low to guarantee a fast confirmation time, then what's the upside to Stackers for even processing these peg-ins? We can't force them to process them, because Bitcoin transaction fees and confirmation times are out of our hands. An attempt to punish Stackers for the behaviors of Bitcoin miners would lead to a prohibitively brittle system. But even if transaction fees and timely confirmations weren't a concern, Stackers could simply pretend to have not seen the peg-in transaction. They have no financial incentive to spend extra cycles and take extra risk on providing this service. |
Beta Was this translation helpful? Give feedback.
-
I need to dig in on more details here before commenting on OP_DROP vs OP_RETURN. However, I want to quickly raise one point. At the stage of implementation that we're at and the short timeline that we're operating against, introducing any additional implementation work is something we should be very careful about. If path (a) already has an implementation and significant work has happened on that path and path (b) may (or may not) have clear benefits but will add implementation overhead, then I'd give a heavy weight to the implementation overhead. Shipping the first version of sBTC is the goal here. Obviously things will evolve/change after the first release. |
Beta Was this translation helpful? Give feedback.
-
Following the discussion in the SIP review, it was deemed necessary to include the Commit-Reveal deposit method in the hard fork because it has to be part of consensus to function. To respond to the concerns regarding signature malleability, Commit-Reveal deposits may only be used once and their TXIDs must be recorded. |
Beta Was this translation helpful? Give feedback.
-
This is a discussion post meant to be edited with research pertaining to implementing OP_DROP (commit reveal) and OP_RETURN, and the potential that we support only one.
This research is around surrounding factors for implementing OP_RETURN and OP_DROP, but isn't about the implementation of either.
Why is OP_RETURN unable to fulfill long-term requirements of SBTC?
If the problem is that wallets can't produce OP_RETURN transactions, would it make sense have 3rd parties that would act as proxies between wallets and Bitcoin?
Are OP_DROP and commit-reveal part of the same concept or are they two different approaches?
How does commit-reveal solve the problems of OP_RETURN?
Who are revealers and how do they work?
What are the downsides of commit-reveal?
Do we have any other options besides OP_RETURN and commit-reveal?
Research legal implications of these approaches
Research security implications of these approaches
Research trust implications of these approaches
Beta Was this translation helpful? Give feedback.
All reactions