Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Magic abort transaction" mechanism to disable activation of a network upgrade #3331

Open
daira opened this issue Jun 12, 2018 · 0 comments
Open
Labels
D-decentralization Design issue: Decentralization I-SECURITY Problems and improvements related to security. Network Upgrade Wishlist

Comments

@daira
Copy link
Contributor

daira commented Jun 12, 2018

This is an idea proposed by @tromer (originally for Sapling, but note that the Sapling spec is frozen), to allow activation of a pending Network Upgrade to be aborted by use of a "magic transaction" mined before the activation would have occurred. Related to #3040, #3270, and #3311.

One way to do this is to have a hard-coded UTXO that disables activation if it is spent in a block before the activation height. For this particular mechanism, I can think of the following advantages and disadvantages:

Advantages

  • The UTXO can be held by a multisig address, thus allowing multi-factor control of keys with little additional code complexity. Similarly, the keys can be held by hardware wallets.
  • It's a simple mechanism that is easy to describe, precisely specify, and test.
  • This is an "on-chain" (non)activation signal so it avoids potential ambiguity due to some nodes receiving an alert and others not.

Disadvantages

  • It relies on the magic transaction being mined, so if there were a coalition of miners who wanted to exploit a vuln then they could potentially censor it (this seems unlikely to succeed to me under normal circumstances, but should be considered especially in the context of vulns that affect mining or that DoS the network).
  • It isn't clear right up until the activation height whether the activation will occur. This could be mitigated by only paying attention to whether the magic UTXO has been spent by a "lock-in height" N blocks before the activation height (where N > 100, so rollbacks can't affect whether activation occurs).
  • Arguably, having validation below the UTXO layer be dependent on UTXO handling is a layering violation.
  • It exerts centralized control over whether an upgrade goes ahead
    • counterargument: not much more than it is already centralized. This argument could be stronger if and when there are multiple implementations.
@daira daira added I-SECURITY Problems and improvements related to security. Z-NU2-Blossom wishlist labels Jun 12, 2018
@daira daira added this to Sprint Backlog in Protocol Team Jul 13, 2018
@daira daira added the D-decentralization Design issue: Decentralization label Dec 4, 2018
@mms710 mms710 added this to Needs Prioritization in Arborist Team Jan 3, 2019
@mms710 mms710 removed this from Sprint Backlog in Protocol Team Jan 3, 2019
@str4d str4d added this to Consensus security in Protocol Team Mar 6, 2019
@Eirik0 Eirik0 moved this from Needs Prioritization to Security Issue Backlog in Arborist Team Jun 6, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
D-decentralization Design issue: Decentralization I-SECURITY Problems and improvements related to security. Network Upgrade Wishlist
Projects
Arborist Team
  
Security Issue Backlog
Protocol Team
  
Consensus Security
Development

No branches or pull requests

3 participants