-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
Docs : ADR-xxx Proposer Slashing #11968
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The general gist of this is good. Do you mind if I beef this up a bit and commit directly to your branch?
How does this integrate with ABCI++? ABCI++ grants the ability for the state machine to determine the validity of a proposal before it is comitted: https://github.com/tendermint/spec/blob/master/rfc/004-abci%2B%2B.md |
That's a great question! Does each process' (validator) have to yield the same result of pre-process proposal, or just the proposer process? |
This ADR should become standard practice on all Cosmos chains that have Turing-Complete execution environments and is really needed for the SDK to become a robust platform for VM execution. Not having the proposer be accountable to the resources their blocks actually use vs what they declare leaves open too many griefing vectors. Even with deferred execution, the proposer should always be able to deterministically pre-execute the block such that the outcome of the execution won't change once the block is committed. |
In the ante handler, we should track if the total gas wanted has exceeded the max gas per block and fail any txs after that and slash the proposer. This should be done with a new decorator. | ||
|
||
### Slashing | ||
The slashing parameter should slash once per infraction. The jail should remove the validator from the validator set for a fixed time that is not per infraction. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
does it make sense to jail here, or should it be a slash only?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I recommend jail and also recommend comparing a default osmo node to "some others" results may be surprising.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
strong approval
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Some sections are missing (eg status). Let's update to follow the template
- Consequences should be broken down into positive, neutral, negative
- I think we should define default values for slashing and jailing
|
||
## Abstract | ||
|
||
Block Proposers can construct blocks at their discretion but they are free to fill blocks with invalid transactions or exceed the block gas limit. This |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Last sentence is no finished.
2. Submitting transactions with invalid signatures | ||
3. Creating a block where the total of Gas_wanted > max gas for a block. | ||
|
||
If during block processing, the application track these events and slash the block producer. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If during block processing, the application track these events and slash the block producer. | |
During block processing, the application track must track events and slash the block producer. |
|
||
1. Submitting transactions with invalid sequence numbers | ||
2. Submitting transactions with invalid signatures | ||
3. Creating a block where the total of Gas_wanted > max gas for a block. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we also could add:
- including malformed transaction
- wrong chain_id etc...
Related to / Solves: #8192 |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
ADR to modify the slashing module to slash proposers for creating blocks that misuse the network's resources.