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

Add settings for witnesses to disable certain operation types #122

Closed
bytemaster opened this issue Jul 1, 2015 · 8 comments
Closed

Add settings for witnesses to disable certain operation types #122

bytemaster opened this issue Jul 1, 2015 · 8 comments

Comments

@bytemaster
Copy link
Contributor

In the event of an bug in certain operations, witnesses need the ability to respond quickly and filter transactions that contain those operations.

@vikramrajkumar vikramrajkumar added this to the beta milestone Jul 1, 2015
@VoR0220
Copy link
Contributor

VoR0220 commented Jul 8, 2015

49fb41c

a152351

I made these commits in my forked repo. I wasn't super positive in terms of where to start in terms of setting up an outline of where to attack, so I made two and hoped that one of them might be a useful place. Let me know if they're helpful and I'll create a PR.

@theoreticalbts
Copy link
Contributor

@VoR0220 I looked briefly at your commits. Resignation (see ticket #143 ) needs to be a blockchain op, so you're on the right track with that.

However, the op filtering functionality proposed in this ticket would be a local setting of an individual witness node.

@VoR0220
Copy link
Contributor

VoR0220 commented Jul 8, 2015

Am I wrong in my understanding that the op filtering functionality would fall under the witness_object? Where is the local setting of an individual witness node handled?

@vikramrajkumar vikramrajkumar self-assigned this Jul 8, 2015
@nathanielhourt
Copy link
Contributor

This needs to be implemented carefully: if the operation being filtered is found while processing a block, it must be allowed. It can only be rejected in a new transaction.

@vikramrajkumar
Copy link
Contributor

Related ancestor issue from BTS 0.x: bitshares/bitshares1-core#1147

@theoreticalbts
Copy link
Contributor

@nathanhourt : The alternatives are:

  • Filter the op out of tx's, but build on blocks that contain the op.
  • Don't build on blocks containing the op at all.

If the scenario envisioned for using this is discovering an awful bug in an operation which requires witnesses to disable that op very quickly, it's likely a chain security issue. Which would mean the thing the old version would need to support with only a witness config change is being able to hardfork the operation out. If you merely censor it, then a single witness could still include the buggy op and compromise the chain.

I.e., if you don't build on blocks that contain the op, then reconfiguring a majority of witnesses suffices to suppress the buggy op. If you do build on blocks that contain the op, the witness reconfiguration must be unanimous to suppress the buggy op.

@nathanielhourt
Copy link
Contributor

Right, so in general the question is whether it's better to fork the chain, or to censor the op as soon as possible. The answer to that question is highly situation-dependent, so should we allow either option and then decide on a case-by-case basis which alternative to go with?

@vikramrajkumar
Copy link
Contributor

This issue was moved to bitshares/bitshares-core#34

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants