-
Notifications
You must be signed in to change notification settings - Fork 395
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
ICS 28 CCV draft w/ init and validator set update #640
Conversation
After going through the current draft, these are my comments. Please reach out to me if something is not clear
Here are some more detailed comments:
Finally, some minor/editorial comment are added inline |
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 minor/editorial comments that complement my other comments added in the PR's conversation
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
…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]>
@sergio-mena Thanks for the feedback. I replied to all comments inline.
This is probably a good idea. @AdityaSripal, @jtremback was this ever discussed? Basically, a turn-off button on the provider chain :)
To be added before the complete draft is merge to the main branch.
The motivation of CCV is a complex, ongoing discussion. For V1, Hub Minimalism may be the best motivation. Future versions may enable higher security.
It can pre-exist, but not as a consumer chain. To become a consumer chain, a hard-fork is required. The operators of validators of the provider chain will start full-nodes of the consumer chain starting from a Genesis state; this state can be exported by a pre-existing chain.
Fixed.
Currently, the spec assumes that the app is implemented using Cosmos SDK. It's not really a requirement, e.g., instead of However, we should probably remove any dependencies to Cosmos SDK, e.g., replace "CCV is a Cosmos SDK module" with "CCV is a module of an ABCI application". @josef-widder Do you agree?
Consumer. Fixed.
If the consumer gets stuck, the unbonding cannot complete. Not sure I understand the second question. What do you mean by scalable?
I agreee. "Valid Blockchain" is overloaded and ambiguous. @josef-widder we should probably be more exact in what does CCV expect here, right?
This is marked w/ a ToDo in the Technical Spec. In the case of a timeout, probably all the unbonding operations will complete. However, the spec is written under the assumption that timeouts cannot happen. There is a discussion on this under the definition of the "Correct Relayer" assumption.
Actually, it is specified, e.g., "tokens bonded by validator
Actually, it does. It doesn't declare "val". Fixed.
No. Slashing is a feature not yet specified. But why should Validator Update To VSC Validity mention slashing?
Not really. I want it to include also Provide VSC uniformity, i.e., If the provider chain provides a VSC to a consumer chain, then it MUST eventually provide that VSC to all consumer chains.
The consumer chain MAY aggregate multiple VSCs before applying them to the validator set. However, ACKs are sent back for every VSCPacket (i.e., for every VSC). The "Register Maturity" properties are concern only with providing VSCs by the consumer chain and registering VSC maturity notifications on the provider chain. They don't have anything to do with aggregated VSCs.
The completion of unbonding operations is specified in the next iteration (#646)
Hard forks. |
"Valid Blockchain" means basically that the security model holds. In the case of Tendermint: <1/3 faulty validators. The properties, we actually need
Together this ensures that
From another viewpoint, if the provider chain does arbitrary state transitions (or if there is a fork that is installed on the consumer's light client), we cannot guarantee a lot on the consumer chain. Yes, it makes sense to make this clear in the specification. |
I would also add progress here, i.e., we assume both chains make progress. In general, the "Valid Blockchain" assumption entails that
@josef-widder do you see any other requirements that are included into the "Valid Blockchain" assumption? I agree that this assumption is necessary to ensure all the properties of IBC packets. I do though abuse a bit the "Valid Blockchain" assumption in the argument of correctness. Probably I should point directly to the functions in the Technical Specification that describe the functionality provided by CCV. |
I think that is basically it. I agree that liveness also should be in the picture. But perhaps it makes sense to separate safety and liveness? In my mind "valid" was only concerned with the safety part. (As the "validity" property in typical consensus definitions).
At least it would be good to understand which property depend on which assumptions. If this is clear, we don't need to go into too much detail in the correctness arguments. |
@mpoke My pleasure. I just included here comments where I have something to reply.
Forget about the word "scalable" here. It was a poor choice on my side (I was meaning, scalable as the number of consumer chains grows). Basically, my question here is already fully addressed here and in the general comment.
The property itself is good. My comment was rather relating to the text between parentheses "i.e., resulted from a change in the amount of bonded tokens on the provider chain". Maybe a way to address my comment could be to change "i.e." by "e.g." there
Fair enough. When I work with properties for specs, I try to make each of them as simple as possible, assuming their actual usefulness comes when considered together, hence my comment. But I'm lacking context here to clearly see what's best. |
Added the following changes in commit ab41f91
|
@sergio-mena But slashing is "a change in the amount of bonded tokens". It's a forced change, not user initiated, but a change nonetheless. |
spec/app/ics-028-cross-chain-validation/system_model_and_properties.md
Outdated
Show resolved
Hide resolved
That's true. Maybe less obvious when you read it, but yes the sentence is correct |
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.
Partial review. Will continue going through it in the next couple of days
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/overview_and_basic_concepts.md
Outdated
Show resolved
Hide resolved
- *OnChanOpenInit*: On receiving the *FIRST* `ChanOpenInit` message, the consumer CCV module sets the status of its end of the CCV channel to `INITIALIZING`. | ||
- *OnChanOpenTry*: On receiving the *FIRST* `ChanOpenTry` message, the provider CCV module sets the status of its end of the CCV channel to `INITIALIZING`. | ||
- *OnChanOpenConfirm*: On receiving the *FIRST* `ChanOpenConfirm` message, the provider CCV module sets the status of its end of the CCV channel to `VALIDATING`. | ||
- **Channel completion**: Once the provider chain sets the status of the CCV channel to `VALIDATING`, it provides a VSC (i.e., validator set change) to the consumer chain (see [next section](#validator-set-update)). On receiving the *FIRST* `VSCPacket`, the consumer CCV module sets the status of its end of the CCV channel to `VALIDATING`. |
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.
We should discuss if this is necessary. It was written this way so that we have a single unique channel, even if provider chain code is incorrect for some reason. But this is an odd defensive maneuver especially since elsewhere we assume provider ccv module is correct.
We can simplify by just setting VALIDATING on confirm of the consumer chain
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.
You mean on ChanOpenAck
on the consumer chain, right?
I kind of took this design for granted since it was already there when I joined the project. But yeah, I guess that since on ChanOpenAck
the consumer sets the channel to OPEN, it can also set it as VALIDATING. This would actually enable the consumer to send Distribution / Evidence packets before the first VSC packet is received from the provider, which means rewarding or slashing the initial validator set. Plus, it avoids the corner case when the validator set never changes.
@josef-widder Do you see any issue with this 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 talked with Josef about this and we agreed to have a chat with Jovan to figure out if we could actually drop the VALIDATING state completely.
My suggestion would be:
- validators cannot unbond during the initialization protocol (no ACKs);
- as a result, the initial validator set on the consumer chain is trust worthy and the consumer chain can already accept TXs;
- a consumer chain is registered on the provider as soon as the governance proposal passes (the channel doesn't have to be initialized);
- for every valset update, send a VSC packet to all registered consumer chains w/ an open channel; if the channel is not open yet, queue the VSC packets to send them later (once the channel is initialized);
- for unbonding, any initiated unbonding operations must wait for ACKs from all registered channels (see PR ICS28: CCV draft w/ complete unbonding #646)
@AdityaSripal Do you see any reason to keep the VALIDATING / INITIALIZING states?
The changes in 0d9edad remove dependencies of the CCV spec to Cosmos SDK. @josef-widder Do you agree that CCV is actually a module in an ABCI application that depends on functionalities provided by a Staking module (that implements PoS) and a Governance module (that allows for proposals to be voted upon)? |
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.
Finished a first run-through of the spec. Great work!
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
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
spec/app/ics-028-cross-chain-validation/technical_specification.md
Outdated
Show resolved
Hide resolved
…rties.md Co-authored-by: Aditya <[email protected]>
…rties.md Co-authored-by: Aditya <[email protected]>
…marius/ccv-init-and-vsc
* 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]>
The partial specification of Cross-Chain Validation.
To facilitate the review process, we split the CCV spec in multiple PRs. All these PRs will be merge into the
marius/ccv
branch. Once the CCV spec is complete (all the features are included), we can create a PR to merge it to the main branch.Features included:
Features not included (to be added to other PRs):