-
Notifications
You must be signed in to change notification settings - Fork 384
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
ICS28: Consumer Initiated Slashing (aka Evidence) #663
Conversation
…cepts.md Co-authored-by: Sergio Mena <[email protected]>
…cepts.md Co-authored-by: Sergio Mena <[email protected]>
…rties.md Co-authored-by: Sergio Mena <[email protected]>
…n.md Co-authored-by: Sergio Mena <[email protected]>
Co-authored-by: Sergio Mena <[email protected]>
Co-authored-by: Sergio Mena <[email protected]>
… marius/ccv-staking-hooks
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.
Part way through
|
||
## Forwards Compatibility | ||
|
||
(discussion of compatibility or lack thereof with expected future standards) | ||
Future version may use newer versions of ABCI (e.g., ABCI++), which may result in different Tendermint block headers and, consequently, in different values for `ValidatorUpdateDelay` (see the [External Data Structures](./technical_specification.md#external-data-structures) section). |
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.
What are the implications of this? Does this protocol also have to change?
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 already removed this, i.e., 8b0915b, since I decided that ValidatorUpdateDelay
should be part of the Slashing module. There is a note about this in the Technical Spec. I'll add the Forwards Compatibility section once the entire draft is ready.
spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md
Outdated
Show resolved
Hide resolved
spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md
Outdated
Show resolved
Hide resolved
The four color (i.e., red, blue, green, and yellow) indicate the mapping of consumer chain heights to provider chain heights (note that on the provider chain there is only one block of a given color). | ||
As a result, a validator misbehaving on the consumer chain, e.g., in either of the two green blocks, is slashed the same as if misbehaving on the provider chain, e.g., in the green block. | ||
This ensures that once unbonding operations are initiated, the corresponding unbonding tokens are not slashed for infractions committed in the subsequent blocks, e.g., the tokens unbonding due to `undelegate-3` are not be slashed for infractions committed in or after the green blocks. |
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'm not sure if this conceptualization is easier to understand than to simply say that a validator is slashable on the provider chain by a consumer chain from the moment their voting power gets added to the consumer to the moment it gets removed + unbonding period
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 idea here is to explain via the diagram the intuition behind the height mapping. The period a validator is slashable is not needed for understanding the height mapping. Thus, I don't see why adding the unbonding period to this explanation would make it easier to understand.
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 specifically looked at the "Consumer initiated slashing" sections of the overview and the properties file. Apart minor comments, it looks great.
I will have a look at the corresponding section in the technical specification file later today.
spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md
Outdated
Show resolved
Hide resolved
spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md
Outdated
Show resolved
Hide resolved
spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md
Outdated
Show resolved
Hide resolved
spec/app/ics-028-cross-chain-validation/system_model_and_properties.md
Outdated
Show resolved
Hide resolved
spec/app/ics-028-cross-chain-validation/technical_specification.md
Outdated
Show resolved
Hide resolved
spec/app/ics-028-cross-chain-validation/technical_specification.md
Outdated
Show resolved
Hide resolved
…cepts.md Co-authored-by: Aditya <[email protected]>
…cepts.md Co-authored-by: Josef Widder <[email protected]>
…cepts.md Co-authored-by: Josef Widder <[email protected]>
…cepts.md Co-authored-by: Josef Widder <[email protected]>
…n.md Co-authored-by: Josef Widder <[email protected]>
…n.md Co-authored-by: Josef Widder <[email protected]>
|
||
> **Note**: In the context of single-chain validation, usually `evidenceHeight = slashingHeight`. | ||
|
||
The [Security Model](#security-model) guarantees that any misbehaving validator can be slashed for at least the unbonding period, |
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 would maybe rephrase this sentence as I understood it in the following way: "If any misbehaving validator misbehaves, it is slashed within the unbonding period".
Maybe: "The security model allows any misbehaving validator to be slashed only within the unbonding period".
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.
That's the current behavior in Cosmos SDK. But this is not necessary for security. Validators can be slashed also after the unbonding period elapses and there will be no impact on security. In CCV, this may be the case since a validator must wait to unbond on all consumer chains. Thus, even though the unbonding period elapsed on the provider chain, the validator can still be slashed.
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.
Another partial review. Looking good
spec/app/ics-028-cross-chain-validation/system_model_and_properties.md
Outdated
Show resolved
Hide resolved
|
||
> **Note**: Depending on the implementation, the (*unbonding initiation*) part of the *Unbonding Safety* MAY NOT be necessary for validator unbonding operations. | ||
- ***Evidence Provision***: If the consumer ABCI application receives a valid evidence of misbehavior at block height `h`, then it MUST submit it to the consumer CCV module *exactly once* and at the same height `h`. |
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.
Shouldn't we also note that consumer CCV should not send evidence packet after it sends unbonding packet for a validator that has fully unbonded? Or do we just assume that provider chain enforces this guarantee
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.
At the moment we don't track on the consumer which validators fully unbonded. For that we should keep a list of unbonding validators mapped to the VSC that set their power to 0. However, I don't think it's necessary, at least not for security. The consumer sends the SlashPacket, the provider receives it and request the staking module to slash. If the validator is already unbonded, nothing will happen.
spec/app/ics-028-cross-chain-validation/system_model_and_properties.md
Outdated
Show resolved
Hide resolved
spec/app/ics-028-cross-chain-validation/system_model_and_properties.md
Outdated
Show resolved
Hide resolved
…rties.md Co-authored-by: Aditya <[email protected]>
…rties.md Co-authored-by: Aditya <[email protected]>
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.
Looks great! Thanks for the work!!
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.
Nice work!
### Consumer Initiated Slashing | ||
[↑ Back to Outline](#outline) | ||
|
||
For the [Security Model](#security-model) to be preserved, misbehaving validators MUST be slashed (and MAY be jailed, i.e., removed from the validator set). |
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.
Arguably, jailing is more important than slashing since it immediately removes the harmful validator. Both are very important though and maybe it's not possible to say which is more important.
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 would argue that both MUST happen, and indeed both do happen.
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 actual requirement is "misbehaving validators MUST be punished". This punishment can come in the form of slashing and maybe jailing. IMO, slashing is mandatory. Jailing without slashing will not be enough (since the attacker may leave the set anyway after an attack). Slashing without jailing will still satisfy the safety requirement, since it will act as a deterrent agains misbehavior. I agree though that both are better.
|
||
The following figure shows the intuition behind such a mapping using the provided VSCs. | ||
The four unbonding operations (i.e., undelegations) occur on the provider chain and, as a consequence, the provider chain provides VSCs to the consumer chain, e.g., `undelegate-3` results in `VSC3` being provided. | ||
The four colors (i.e., red, blue, green, and yellow) indicate the mapping of consumer chain heights to provider chain heights (note that on the provider chain there is only one block of a given color). |
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.
Could use some more detail on what's up with the white blocks
As a result, the consumer CCV module sends a `SlashPacket` to the provider chain: | ||
It makes a request to slash `V`, but it replaces the infraction height `Hc1` with `HtoVSC[Hc1]`, | ||
i.e., the ID of the VSC that updated the "misbehaving voting power" or `0` if such a VSC does not exist. | ||
- The provider CCV module receives at (slashing) height `Hp1` the `SlashPacket` with `vscId = HtoVSC[Hc1]`. |
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.
Am I correct in assuming that this does not include the extra piece of information on the VSCpacket which confirms that the slashpacket was received?
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.
Yes, I find that too much of a detail for the overview. That's described in the technical spec.
* ICS 28 CCV draft w/ init and validator set update (#640) * Create README.md * Add files with CCV spec * fix links to ICS 4 * fix links to ICS 7 * add ICS 28 to main README.md * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/technical_specification.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * minor, remove confusing phrasing * child -> consumer; parent -> provider * clarify which staking module * extend staking assumptions, remove redundant inv, prove staking props and sys inv * break long lines * break long lines * remove dependecies to Cosmos SDK * changes in the security model * specify multiple consumer chains * channel init overview * split Valid Blockchain assumption * minor changes after discussion w/ Josef * make the split of Valid Blockchain consistent * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Aditya <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Aditya <[email protected]> * resolve conversations Co-authored-by: Sergio Mena <[email protected]> Co-authored-by: Aditya <[email protected]> * merge CODEOWNERS from master * ICS28: CCV draft w/ complete unbonding (#646) * Create README.md * Add files with CCV spec * fix links to ICS 4 * fix links to ICS 7 * add ICS 28 to main README.md * adding tech spec for unbonding delegations * add context on unbonding operations * add unbonding operation diagram * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/technical_specification.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * minor, remove confusing phrasing * child -> consumer; parent -> provider * clarify which staking module * extend staking assumptions, remove redundant inv, prove staking props and sys inv * modify staking hooks spec to cover other unbonding ops * provider Staking module * break long lines * break long lines * remove dependecies to Cosmos SDK * changes in the security model * specify multiple consumer chains * channel init overview * address issues #27 and #33 from cosmos/interchain-security repo * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> Co-authored-by: Sergio Mena <[email protected]> Co-authored-by: Josef Widder <[email protected]> * ICS28: Extend consumer InitGenesis (#659) * Create README.md * Add files with CCV spec * fix links to ICS 4 * fix links to ICS 7 * add ICS 28 to main README.md * adding tech spec for unbonding delegations * add context on unbonding operations * add unbonding operation diagram * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/technical_specification.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * minor, remove confusing phrasing * child -> consumer; parent -> provider * clarify which staking module * extend staking assumptions, remove redundant inv, prove staking props and sys inv * modify staking hooks spec to cover other unbonding ops * provider Staking module * break long lines * break long lines * remove dependecies to Cosmos SDK * changes in the security model * specify multiple consumer chains * channel init overview * address issues #27 and #33 from cosmos/interchain-security repo * extend consumer InitGenesis * describe mechanism to disseminate genesis state * remove ExportGenesis and restarted chains * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> * validate channel IDs on provider genesis Co-authored-by: Sergio Mena <[email protected]> Co-authored-by: Josef Widder <[email protected]> * ICS28: Consumer Initiated Slashing (aka Evidence) (#663) * Create README.md * Add files with CCV spec * fix links to ICS 4 * fix links to ICS 7 * add ICS 28 to main README.md * adding tech spec for unbonding delegations * add context on unbonding operations * add unbonding operation diagram * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/technical_specification.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * minor, remove confusing phrasing * child -> consumer; parent -> provider * clarify which staking module * extend staking assumptions, remove redundant inv, prove staking props and sys inv * modify staking hooks spec to cover other unbonding ops * provider Staking module * break long lines * break long lines * remove dependecies to Cosmos SDK * changes in the security model * specify multiple consumer chains * channel init overview * address issues #27 and #33 from cosmos/interchain-security repo * extend consumer InitGenesis * describe mechanism to disseminate genesis state * describe mapping heights provider <> consumer * remove ExportGenesis and restarted chains * add overview of consumer initiated slashing * add slashing invariant * add assumptions needed by evidence * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> * draft CCV props for slashing * replace time w/ height; add HtoVSC and VSCtoH * replace time with height in invariants and properties * validate channel IDs on provider genesis * prove Slashing Invariant * enable mapping from consumer to provider heights * technical spec for slashing * minor changes * fix links to tendermint spec * clarify Staking vs Slashing modules * replace VSC acks w/ VSCMaturedPackets * fix some TODOs * fix properties * HtoVSC and VSCtoH from () to [] * fix infraction height and add intuition diagram * keep ValidatorSet in consumer CCV module state * add outstanding downtime flag and decouple from validatorSet * fix issues pointed by Simon * dealing with downtime slashing atomicity * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Aditya <[email protected]> * addressing Aditya's comments * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/technical_specification.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/technical_specification.md Co-authored-by: Josef Widder <[email protected]> * addressing Josef's comments * link TODOs with issues * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Aditya <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Aditya <[email protected]> * apply suggestions from code review * cleanup outdated note on restarted consumer chains Co-authored-by: Sergio Mena <[email protected]> Co-authored-by: Josef Widder <[email protected]> Co-authored-by: Aditya <[email protected]> * ICS28: Remove CCV channel state (#678) * Create README.md * Add files with CCV spec * fix links to ICS 4 * fix links to ICS 7 * add ICS 28 to main README.md * adding tech spec for unbonding delegations * add context on unbonding operations * add unbonding operation diagram * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/technical_specification.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * Update spec/app/ics-028-cross-chain-validation/README.md Co-authored-by: Sergio Mena <[email protected]> * minor, remove confusing phrasing * child -> consumer; parent -> provider * clarify which staking module * extend staking assumptions, remove redundant inv, prove staking props and sys inv * modify staking hooks spec to cover other unbonding ops * provider Staking module * break long lines * break long lines * remove dependecies to Cosmos SDK * changes in the security model * specify multiple consumer chains * channel init overview * address issues #27 and #33 from cosmos/interchain-security repo * extend consumer InitGenesis * describe mechanism to disseminate genesis state * describe mapping heights provider <> consumer * remove ExportGenesis and restarted chains * add overview of consumer initiated slashing * add slashing invariant * add assumptions needed by evidence * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> * draft CCV props for slashing * replace time w/ height; add HtoVSC and VSCtoH * replace time with height in invariants and properties * validate channel IDs on provider genesis * prove Slashing Invariant * enable mapping from consumer to provider heights * technical spec for slashing * minor changes * fix links to tendermint spec * clarify Staking vs Slashing modules * replace VSC acks w/ VSCMaturedPackets * fix some TODOs * fix properties * HtoVSC and VSCtoH from () to [] * fix infraction height and add intuition diagram * keep ValidatorSet in consumer CCV module state * remove CCV channel status * add outstanding downtime flag and decouple from validatorSet * adressing Josef's comment * fix issues pointed by Simon * dealing with downtime slashing atomicity * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Aditya <[email protected]> * addressing Aditya's comments * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/technical_specification.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/technical_specification.md Co-authored-by: Josef Widder <[email protected]> * addressing Josef's comments * link TODOs with issues * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Aditya <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Aditya <[email protected]> * apply suggestions from code review * cleanup outdated note on restarted consumer chains Co-authored-by: Sergio Mena <[email protected]> Co-authored-by: Josef Widder <[email protected]> Co-authored-by: Aditya <[email protected]> * Update technical_specification.md Fix typo: VSCtoH replaced with HtoVSC in SendSlashRequest * ICS28: Replace "Initiator" w/ "Caller" and “Trigger Event” (#696) * update init methods and ics26 methods * updating ValSet Update methods * updating Consumer Initiated Slashing methods * ICS28: Handle pending proposals to spawn consumer chains (#697) * handle pending proposals * ICS28: Remove genesisHash from specification (#699) * remove genesis hash * remove details of genesis state dissemination * ICS28: CCV Reward Distribution subprotocol (#704) * add overview of reward distribution * add CCVHandshakeMetadata and update channel handshake methods signatures * initiate opening handshake for transfer channel * add DistributeRewards() method * address review comments * add distribution invariant * replace system invariants with system properties Co-authored-by: Josef Widder <[email protected]> * ICS28: Set initH in onChanOpenConfirm (#705) * set initH in onChanOpenConfirm * replace initH with initialHeights * ICS28: Enable the removal of a consumer chain from the provider (#707) * stopping a consumer chain * deal with timeouts on the consumer side * fix typo * add note on how to shut down the consumer * add note on safety implication of lockUnbondingOnTimeout * ICS28: Remove BeforeUnbondingOpCompleted (#711) * remove BeforeUnbondingOpCompleted hook * cleanup method names * ICS28: Update SlashPacketData (#728) * update SlashPacket * ICS28: Remove dependency on Tendermint and ABCI (#730) * remove mention of V2 * remove ABCI dependency from overview; also small fixes * remove dependencies from system model and README * remove dependencies from tech spec * call UnbondMaturePackets() earlier (#747) * fix edge case enabled by aggregation (#746) * Use `h < hp'` instead of `h <= hp'` in Bond-Based Consumer Voting Power (#749) * replace slashRequests w/ downtimeSlashRequests (#745) * ics28 update sendPacket (#756) * ICS28: Restructure technical spec (#760) * split technical spec into two files * restructure methods and subprotocols * add links to readme.md * fix typo - initH replaced w/ initialHeights * ICS28: Unbonding ops are put on hold even w/o consumer chains (#763) * PutUnbondingOnHold only if consumer chains exist * Use currentTimestamp() >= p.stopTime in StopConsumerChainProposalHandler (#769) Tackle #768 * adding consumerUnbondingPeriod (#771) * fix sendFungibleTokens signature * add authors * ICS28: Removing the only consumer chain (#770) * remove unbonding op with no consumer chains * add postcondition * add conditions for CreateConsumerClient and StopConsumerChain (#775) * update created date * ICS28: Account for slashing in Bond-Based Consumer Voting Power property (#793) * extend Bond-Based Consumer Voting Power w/ slashing * fix Bond-Based Consumer Voting Power formula * expand note for clarity * add pUnbonding * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Josef Widder <[email protected]> * clarify mathematical writeup of property * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Josef Widder <[email protected]> * Update spec/app/ics-028-cross-chain-validation/system_model_and_properties.md Co-authored-by: Josef Widder <[email protected]> * make changes to sumUnbonding / sumSlash consistent * add history Co-authored-by: Josef Widder <[email protected]> Co-authored-by: Sergio Mena <[email protected]> Co-authored-by: Aditya <[email protected]> Co-authored-by: Josef Widder <[email protected]> Co-authored-by: Daniel T <[email protected]>
Closes #685
The partial specification of Cross-Chain Validation.
Changes to base (i.e., ccv):
infractionHeight
.VSCMaturedPacket
instead ofVSCpacket
acknowledgements to notify the provider chain when unbonding operations can complete (i.e., reached maturity on the consumer chain). This is needed to keep the order between this notifications and the slashing requests.Features not included (to be added to other PRs):