From 0fb5df8bfb92175ee6ef4d2500974f92a5403cab Mon Sep 17 00:00:00 2001 From: mpoke Date: Tue, 2 May 2023 22:17:43 +0200 Subject: [PATCH 1/8] add check for .md links --- .github/workflows/linkchecker.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/workflows/linkchecker.yml diff --git a/.github/workflows/linkchecker.yml b/.github/workflows/linkchecker.yml new file mode 100644 index 0000000000..15f2bdbc46 --- /dev/null +++ b/.github/workflows/linkchecker.yml @@ -0,0 +1,10 @@ +name: Check Markdown links +on: push +jobs: + markdown-link-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3.5.2 + - uses: gaurav-nelson/github-action-markdown-link-check@1.0.13 + with: + folder-path: "docs" \ No newline at end of file From 12133dc6a9b5629d32a9e74dd87f5c9a2e7904b1 Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 3 May 2023 00:02:32 +0200 Subject: [PATCH 2/8] fixing links --- docs/docs/adrs/adr-002-throttle.md | 2 +- .../consumer-chain-governance.md | 2 +- docs/docs/features/proposals.md | 2 +- docs/old/protocol_audit.md | 8 +-- docs/old/quality_assurance.md | 50 +++++++++---------- docs/old/testing.md | 12 ++--- 6 files changed, 38 insertions(+), 38 deletions(-) diff --git a/docs/docs/adrs/adr-002-throttle.md b/docs/docs/adrs/adr-002-throttle.md index ffa353c3cc..e60c619ca9 100644 --- a/docs/docs/adrs/adr-002-throttle.md +++ b/docs/docs/adrs/adr-002-throttle.md @@ -93,7 +93,7 @@ while meter.IsPositiveOrZero() && entriesExist() { All CCV system properties should be maintained by implementing this feature, see: [CCV spec - Consumer Initiated Slashing](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/system_model_and_properties.md#consumer-initiated-slashing). -One implementation-specific property introduced is that if any of the chain-specific packet data queues become larger than `MaxThrottledPackets (param)`, then the provider binary will panic, and the provider chain will halt. Therefore this param should be set carefully. See [SetThrottledPacketDataSize](../x/ccv/provider/keeper/throttle.go#L269). This behavior ensures that if the provider binaries are queuing up more packet data than machines can handle, the provider chain halts deterministically between validators. +One implementation-specific property introduced is that if any of the chain-specific packet data queues become larger than `MaxThrottledPackets (param)`, then the provider binary will panic, and the provider chain will halt. Therefore this param should be set carefully. See `SetThrottledPacketDataSize`. This behavior ensures that if the provider binaries are queuing up more packet data than machines can handle, the provider chain halts deterministically between validators. ### Main Throttling Property diff --git a/docs/docs/consumer-development/consumer-chain-governance.md b/docs/docs/consumer-development/consumer-chain-governance.md index fce5a7014e..ca99286d93 100644 --- a/docs/docs/consumer-development/consumer-chain-governance.md +++ b/docs/docs/consumer-development/consumer-chain-governance.md @@ -22,4 +22,4 @@ For an example, see [Neutron](https://github.com/neutron-org/neutron/). ## The Whitelist -Not everything on a consumer chain can be changed by the consumer's governance. Some settings having to do with consensus etc. can only be changed by the provider chain. Consumer chains include a whitelist of parameters that are allowed to be changed by the consumer chain governance. For an example whitelist, see [Neutron's](https://github.com/neutron-org/neutron/blob/main/app/proposals_whitelisting.go). +Not everything on a consumer chain can be changed by the consumer's governance. Some settings having to do with consensus etc. can only be changed by the provider chain. Consumer chains include a whitelist of parameters that are allowed to be changed by the consumer chain governance. For an example, see [Neutron's](https://github.com/neutron-org/neutron/blob/main/app/proposals_allowlisting.go) whitelist. diff --git a/docs/docs/features/proposals.md b/docs/docs/features/proposals.md index 3ba208b342..9285baa62b 100644 --- a/docs/docs/features/proposals.md +++ b/docs/docs/features/proposals.md @@ -45,7 +45,7 @@ Minimal example: "binary_hash": "376cdbd3a222a3d5c730c9637454cd4dd925e2f9e2e0d0f3702fc922928583f1" } ``` -More examples can be found in the replicated security testnet repository [here](https://github.com/cosmos/testnets/blob/master/replicated-security/baryon-1/proposal-baryon-1.json) and [here](https://github.com/cosmos/testnets/blob/master/replicated-security/noble-1/proposal-noble-1.json). +More examples can be found in the replicated security testnet repository [here](https://github.com/cosmos/testnets/blob/master/replicated-security/baryon-1/proposal-baryon-1.json) and [here](https://github.com/cosmos/testnets/blob/master/replicated-security/noble-1/start-proposal-noble-1.json). ## `ConsumerRemovalProposal` Proposal type used to suggest removing an existing consumer chain. diff --git a/docs/old/protocol_audit.md b/docs/old/protocol_audit.md index 878f41ab12..66a164c678 100644 --- a/docs/old/protocol_audit.md +++ b/docs/old/protocol_audit.md @@ -6,7 +6,7 @@ For a general overview of the quality assurance process necessary for the releas ## Reading / onboarding materials -- Interchain Security [specification](https://github.com/cosmos/ibc/blob/marius/ccv/spec/app/ics-028-cross-chain-validation/README.md) +- Interchain Security [specification](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/README.md) - Quality Assurance [overview](./quality_assurance.md) ## Plan @@ -16,11 +16,11 @@ Priority of concerns: 2. The correctness (safety and liveness) of the Interchain Security protocol, see [QA overview](./quality_assurance.md#interchain-security-protocol-correctness). Sub-protocols to focus on: -- [Channel Initialization](https://github.com/cosmos/ibc/blob/marius/ccv/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#channel-initialization) +- [Channel Initialization](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#channel-initialization) -- [Validator Set Update](https://github.com/cosmos/ibc/blob/marius/ccv/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#validator-set-update) with a focus on [Completion of Unbonding Operations](https://github.com/cosmos/ibc/blob/marius/ccv/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#completion-of-unbonding-operations) (**good starting point**) +- [Validator Set Update](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#validator-set-update) with a focus on [Completion of Unbonding Operations](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#completion-of-unbonding-operations) (**good starting point**) -- [Consumer Initiated Slashing](https://github.com/cosmos/ibc/blob/marius/ccv/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#consumer-initiated-slashing) +- [Consumer Initiated Slashing](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#consumer-initiated-slashing) diff --git a/docs/old/quality_assurance.md b/docs/old/quality_assurance.md index 70d24630be..d51b64f02e 100644 --- a/docs/old/quality_assurance.md +++ b/docs/old/quality_assurance.md @@ -47,14 +47,14 @@ IBC packets: | ID | Concern | Code Review | Unit Testing | Integration Testing | Diff. Testing | Testnet | | -- | ------- | ----------- | ------------ | ----------- | ------------- | ------- | -| 2.01 | Create IBC clients | `Scheduled` (ibc-go) | `Done` [TestCreateConsumerClient](../x/ccv/provider/keeper/proposal_test.go#117), [TestInitGenesis](../x/ccv/consumer/keeper/genesis_test.go#26) | `Done` [SetupTest](../tests/integration/setup.go) | `Future work` | `Scheduled` | -| 2.02 | Create CCV channel (handshake) | `Scheduled` (ibc-go) | `Done` [provider/ibc_module_test.go](../x/ccv/provider/ibc_module_test.go), [consumer/ibc_module_test.go](../x/ccv/consumer/ibc_module_test.go) | `Done` [SetupCCVChannel](../tests/integration/setup.go) | `Future work` | `Scheduled` | -| 2.03 | Sending IBC packets | `Scheduled` (ibc-go) | `NA` | `Done` [TestSendVSCMaturedPackets](../tests/integration/valset_update.go), [TestSendSlashPacket](../tests/integration/slashing.go) | `Done` | `Scheduled` | -| 2.04 | Handling acknowledgments | `Scheduled` (ibc-go) | [Scheduled](https://github.com/cosmos/interchain-security/issues/362) | `Partial coverage` [TestOnAcknowledgementPacket](../x/ccv/consumer/keeper/relay_test.go#152), [TestSlashPacketAcknowldgement](../tests/integration/slashing.go) | `Done` | `Scheduled` | +| 2.01 | Create IBC clients | `Scheduled` (ibc-go) | `Done` [TestCreateConsumerClient](../../x/ccv/provider/keeper/proposal_test.go#117), [TestInitGenesis](../../x/ccv/consumer/keeper/genesis_test.go#26) | `Done` [SetupTest](../../tests/integration/setup.go) | `Future work` | `Scheduled` | +| 2.02 | Create CCV channel (handshake) | `Scheduled` (ibc-go) | `Done` [provider/ibc_module_test.go](../../x/ccv/provider/ibc_module_test.go), [consumer/ibc_module_test.go](../../x/ccv/consumer/ibc_module_test.go) | `Done` [SetupCCVChannel](../../tests/integration/setup.go) | `Future work` | `Scheduled` | +| 2.03 | Sending IBC packets | `Scheduled` (ibc-go) | `NA` | `Done` [TestSendVSCMaturedPackets](../../tests/integration/valset_update.go), [TestSendSlashPacket](../../tests/integration/slashing.go) | `Done` | `Scheduled` | +| 2.04 | Handling acknowledgments | `Scheduled` (ibc-go) | [Scheduled](https://github.com/cosmos/interchain-security/issues/362) | `Partial coverage` [TestOnAcknowledgementPacket](../../x/ccv/consumer/keeper/relay_test.go#152), [TestSlashPacketAcknowldgement](../../tests/integration/slashing.go) | `Done` | `Scheduled` | | 2.05 | Handling timeouts | `Scheduled` (ibc-go) | [Scheduled](https://github.com/cosmos/interchain-security/issues/362) |`NA` | `Future work` | `Scheduled` | -| 2.06 | Handling IBC client expiration | `Scheduled` (ibc-go) | `NA` | `Done` [expired_client.go](../tests/integration/expired_client.go) | `Future work` | `Scheduled` | -| 2.07 | ICS-20 channel creation | `Scheduled` (ibc-go) | `NA` | `Done` [SetupTransferChannel](../tests/integration/setup.go) |`Future work` | `Scheduled` | -| 2.08 | ICS-20 transfer | `Scheduled` (ibc-go) | `NA` | `Done` [TestRewardsDistribution](../tests/integration/distribution.go) | `NA` | `Scheduled` | +| 2.06 | Handling IBC client expiration | `Scheduled` (ibc-go) | `NA` | `Done` [expired_client.go](../../tests/integration/expired_client.go) | `Future work` | `Scheduled` | +| 2.07 | ICS-20 channel creation | `Scheduled` (ibc-go) | `NA` | `Done` [SetupTransferChannel](../../tests/integration/setup.go) |`Future work` | `Scheduled` | +| 2.08 | ICS-20 transfer | `Scheduled` (ibc-go) | `NA` | `Done` [TestRewardsDistribution](../../tests/integration/distribution.go) | `NA` | `Scheduled` | | 2.09 | Changes in IBC-GO testing suite | `Scheduled` (ibc-go) | `NA` | `NA` | `Partial coverage` | `NA` | ### Integration with Cosmos SDK @@ -63,9 +63,9 @@ IBC packets: | ID | Concern | Code Review | Unit Testing | Integration Testing | Diff. Testing | Testnet | | -- | ------- | ----------- | ------------ | ----------- | ------------- | ------- | -| 3.01 | Changes to staking module | `Done` | `Done` [unbonding_test.go](https://github.com/cosmos/cosmos-sdk/blob/interchain-security-rebase.0.45.6/x/staking/keeper/unbonding_test.go) | `Partial coverage`
[unbonding_test.go](../tests/integration/unbonding.go)
redelegation could be expanded, validator unbonding missing | `Partial coverage` | `Scheduled` | -| 3.02 | Changes to slashing module | `Done` | `NA` | `Done`
[TestValidatorDowntime](../tests/integration/slashing.go)
| `Partial coverage` | `Scheduled` | -| 3.03 | Changes to evidence module | `Done` | `NA` | `Done`
[TestValidatorDoubleSigning](../tests/integration/slashing.go)
| `NA` | `Scheduled` | +| 3.01 | Changes to staking module | `Done` | `Done` [unbonding_test.go](https://github.com/cosmos/cosmos-sdk/blob/interchain-security-rebase.0.45.6/x/staking/keeper/unbonding_test.go) | `Partial coverage`
[unbonding_test.go](../../tests/integration/unbonding.go)
redelegation could be expanded, validator unbonding missing | `Partial coverage` | `Scheduled` | +| 3.02 | Changes to slashing module | `Done` | `NA` | `Done`
[TestValidatorDowntime](../../tests/integration/slashing.go)
| `Partial coverage` | `Scheduled` | +| 3.03 | Changes to evidence module | `Done` | `NA` | `Done`
[TestValidatorDoubleSigning](../../tests/integration/slashing.go)
| `NA` | `Scheduled` | ### Provider Chain Correctness @@ -77,18 +77,18 @@ The main concern addressed in this section is the correctness of the provider ch | ID | Concern | Code Review | Unit Testing | Integration Testing | Diff. Testing | Testnet | Protocol audit | | -- | ------- | ----------- | ------------ | --- | ------------- | ------- | -------------- | -| 4.01 | Liveness of undelegations
- unbonding delegation entries are eventually removed from `UnbondingDelegation` | `Scheduled` | `NA` | `Done`
[unbonding_test.go](../tests/integration/unbonding.go) | `Done` | `Scheduled` | `NA` | +| 4.01 | Liveness of undelegations
- unbonding delegation entries are eventually removed from `UnbondingDelegation` | `Scheduled` | `NA` | `Done`
[unbonding_test.go](../../tests/integration/unbonding.go) | `Done` | `Scheduled` | `NA` | | 4.02 | Liveness of redelegations
- redelegations entries are eventually removed from `Redelegations` | `Scheduled` | `NA` | `Scheduled` | `Scheduled` | `Scheduled` | `NA` | | 4.03 | Liveness of validator unbondings
- unbonding validators with no delegations are eventually removed from `Validators` | `Scheduled` | `NA` | `NA` | `Done` | `Scheduled` | `NA` | -| 4.04 | Unbonding operations (undelegations, redelegations, validator unbondings) should eventually complete even if the CCV channel is never established (due to error)
- expected outcome: the channel initialization sub-protocol eventually times out, which leads to the consumer chain removal | `Scheduled` | `NA` | `Done` [TestUndelegationDuringInit](../tests/integration/unbonding.go) | `Future work` | `Scheduled` | `Done` | -| 4.05 | Unbonding operations (undelegations, redelegations, validator unbondings) should eventually complete even if one of the clients expire
- expected outcome: the pending VSC packets eventually timeout, which leads to the consumer chain removal | `Scheduled` | `NA` | `Done` [TestUndelegationVscTimeout](../tests/integration/unbonding.go) | `Future work` | `Scheduled` | `NA` | -| 4.06 | A validator cannot get slashed more than once for double signing, regardless of how many times it double signs on different chains (consumers or provider) | `Scheduled` | `NA` |`Done`
[TestHandleSlashPacketErrors](../tests/integration/slashing.go) | `Done` | `Scheduled` | `NA` | -| 4.07 | A validator cannot get slashed multiple times for downtime on the same consumer chain without requesting to `Unjail` itself on the provider chain in between | `Scheduled` | `NA` | `Partial coverage`
[TestSendSlashPacket](../tests/integration/slashing.go) | `Partial coverage` | `Scheduled` | `NA` | +| 4.04 | Unbonding operations (undelegations, redelegations, validator unbondings) should eventually complete even if the CCV channel is never established (due to error)
- expected outcome: the channel initialization sub-protocol eventually times out, which leads to the consumer chain removal | `Scheduled` | `NA` | `Done` [TestUndelegationDuringInit](../../tests/integration/unbonding.go) | `Future work` | `Scheduled` | `Done` | +| 4.05 | Unbonding operations (undelegations, redelegations, validator unbondings) should eventually complete even if one of the clients expire
- expected outcome: the pending VSC packets eventually timeout, which leads to the consumer chain removal | `Scheduled` | `NA` | `Done` [TestUndelegationVscTimeout](../../tests/integration/unbonding.go) | `Future work` | `Scheduled` | `NA` | +| 4.06 | A validator cannot get slashed more than once for double signing, regardless of how many times it double signs on different chains (consumers or provider) | `Scheduled` | `NA` |`Done`
[TestHandleSlashPacketErrors](../../tests/integration/slashing.go) | `Done` | `Scheduled` | `NA` | +| 4.07 | A validator cannot get slashed multiple times for downtime on the same consumer chain without requesting to `Unjail` itself on the provider chain in between | `Scheduled` | `NA` | `Partial coverage`
[TestSendSlashPacket](../../tests/integration/slashing.go) | `Partial coverage` | `Scheduled` | `NA` | | 4.08 | A validator can be slashed multiple times for downtime on different chains | `Scheduled` | `NA` | `Future work` | `NA` | `Scheduled` | `NA` | -| 4.09 | The provider chain can easily be restarted with IS enabled
- `ExportGenesis` & `InitGenesis`
- requires https://github.com/informalsystems/hermes/issues/1152| `Scheduled` | `Done`
[TestInitAndExportGenesis](../x/ccv/provider/keeper/genesis_test.go#L20) | `Future work` | `Future work` | `Scheduled` | `NA` | +| 4.09 | The provider chain can easily be restarted with IS enabled
- `ExportGenesis` & `InitGenesis`
- requires https://github.com/informalsystems/hermes/issues/1152| `Scheduled` | `Done`
[TestInitAndExportGenesis](../../x/ccv/provider/keeper/genesis_test.go#L20) | `Future work` | `Future work` | `Scheduled` | `NA` | | 4.10 | The provider chain can graciously handle a CCV packet timing out (without shuting down)
- expected outcome: consumer chain shuts down and its state in provider CCV module is removed | `Scheduled` | `Scheduled` | `NA` | `Future work` | `Scheduled` | `NA` | -| 4.11 | The provider chain can graciously handle a `ConsumerRemovalProposal`
- expected outcome: consumer chain shuts down and its state in provider CCV module is removed | `Scheduled` | `Done`
[TestHandleConsumerRemovalProposal](../x/ccv/provider/keeper/proposal_test.go#L313) | `NA` | `Future work` | `Scheduled` | `NA` | -| 4.12 | The provider chain can graciously handle a `ConsumerAdditionProposal`
- expected outcome: a consumer chain is registered and a client is created | `Scheduled` |`Done`
[TestHandleConsumerAdditionProposal](../x/ccv/provider/keeper/proposal_test.go#L31) | `NA` | `Future work` | `Scheduled` | `NA` | +| 4.11 | The provider chain can graciously handle a `ConsumerRemovalProposal`
- expected outcome: consumer chain shuts down and its state in provider CCV module is removed | `Scheduled` | `Done`
[TestHandleConsumerRemovalProposal](../../x/ccv/provider/keeper/proposal_test.go#L313) | `NA` | `Future work` | `Scheduled` | `NA` | +| 4.12 | The provider chain can graciously handle a `ConsumerAdditionProposal`
- expected outcome: a consumer chain is registered and a client is created | `Scheduled` |`Done`
[TestHandleConsumerAdditionProposal](../../x/ccv/provider/keeper/proposal_test.go#L31) | `NA` | `Future work` | `Scheduled` | `NA` | ### Interchain Security Protocol Correctness @@ -107,8 +107,8 @@ In addition, the implementation MUST guarantee the following [system properties] | ID | Concern re. _Channel Uniqueness_ | Code Review | Unit Testing | Intg Testing | Diff. Testing | Testnet | Protocol audit | | -- | -------------------------------- | ----------- | ------------ | ----------- | ------------- | ------- | -------------- | -| 5.01 | `HandleConsumerAdditionProposal()` should fail if a consumer with `chainId` is already registered | `Scheduled` | `Done` [TestCreateConsumerClient](../x/ccv/provider/keeper/proposal_test.go#L116) | `NA` | `NA` | `Scheduled` | `NA` | -| 5.02 | The channel handshake for a consumer with `chainId` should fail if there is already an established CCV channel for `chainId` | `Scheduled` | `Done` [TestOnChanOpenTry](../x/ccv/provider/ibc_module_test.go#L103), [TestOnChanOpenInit](../x/ccv/consumer/ibc_module_test.go#L59) | `NA` | `NA` | `Scheduled` | `NA` | +| 5.01 | `HandleConsumerAdditionProposal()` should fail if a consumer with `chainId` is already registered | `Scheduled` | `Done` [TestCreateConsumerClient](../../x/ccv/provider/keeper/proposal_test.go#L116) | `NA` | `NA` | `Scheduled` | `NA` | +| 5.02 | The channel handshake for a consumer with `chainId` should fail if there is already an established CCV channel for `chainId` | `Scheduled` | `Done` [TestOnChanOpenTry](../../x/ccv/provider/ibc_module_test.go#L103), [TestOnChanOpenInit](../../x/ccv/consumer/ibc_module_test.go#L59) | `NA` | `NA` | `Scheduled` | `NA` | | 5.03 | _Channel Uniqueness_ should hold even if a consumer chain restarts | `Scheduled` | `NA` | `Scheduled` | `NA` | `Scheduled` | `NA` | | 5.04 | _Channel Uniqueness_ should hold even when a client expires | `Scheduled` | `NA` | `Scheduled` | `NA` | `Scheduled` | `NA` | @@ -138,7 +138,7 @@ In addition, the implementation MUST guarantee the following [system properties] | ID | Concern re. _Consumer Rewards Distribution_ | Code Review | Unit Testing | Integration Testing | Diff. testing | Testnet | Protocol audit | | -- | ------------------------------------------- | ----------- | ------------ | ----------- | ------------- | ------- | -------------- | -| 9.01 | Validators on the provider chain receive rewards for participating in IS | `Scheduled` | `NA` | `Done` [TestRewardsDistribution](../tests/integration/distribution.go) | `NA` | `Scheduled` | `NA` | +| 9.01 | Validators on the provider chain receive rewards for participating in IS | `Scheduled` | `NA` | `Done` [TestRewardsDistribution](../../tests/integration/distribution.go) | `NA` | `Scheduled` | `NA` | | 9.02 | The rewards sent to the provider chain are escrowed on the consumer chains (no double spend) | `Scheduled` | `NA` | `Scheduled` | `NA` | `Scheduled` | `NA` | --- @@ -157,7 +157,7 @@ The main concern addressed in this section is the correctness of the consumer ch | 10.02 | A chain has the ability to restart as a consumer chain with no more than 24 hours downtime | `Scheduled` | `NA` | `NA` | `NA` | `Scheduled` | `NA` | | 10.03 | A consumer chain has the ability to restart as a normal chain after shutting down, either controlled (via `ConsumerRemovalProposal`) or due to timing out | `Scheduled` | `NA` | `NA` | `NA` | `Scheduled` | `NA` | | 10.04 | A consumer chain has the ability to restart as a consumer chain with the same `chainId` after shutting down, either controlled (via `ConsumerRemovalProposal`) or due to timing out | `Scheduled` | `NA` | `Scheduled` | `NA` | `Scheduled` | `NA` | -| 10.05 | Governance on `gov-cc` | `Scheduled` | `NA` | `Partial Coverage` [TestDemocracyGovernanceWhitelisting](../tests/integration/distribution.go) | `Scheduled` | `Scheduled` | `NA` | +| 10.05 | Governance on `gov-cc` | `Scheduled` | `NA` | `Partial Coverage` [TestDemocracyGovernanceWhitelisting](../../tests/integration/distribution.go) | `Scheduled` | `Scheduled` | `NA` | | 10.06 | CosmWasm on `wasm-cc` | `Scheduled` | `NA` | `Scheduled` | `NA` | `Scheduled` | `NA` | | TBA ... @@ -167,8 +167,8 @@ The main concern addressed in this section is the correctness of the consumer ch The following diagrams show (in orange) the events that influence the operation of Interchain Security -- during creating consumer chains, normal operation, and removing consumer chains. These events are the result of actions that can be performed by the existing actors, i.e., users (token holders), validators, and relayers. -![Creating Consumer Chains](./figures/is_init_overview.png?raw=true) +![Creating Consumer Chains](./../figures/is_init_overview.png?raw=true) -![Normal Operation](./figures/is_normalop_overview.png?raw=true) +![Normal Operation](./../figures/is_normalop_overview.png?raw=true) -![Remove Consumer Chains](./figures/is_remove_overview.png?raw=true) +![Remove Consumer Chains](./../figures/is_remove_overview.png?raw=true) diff --git a/docs/old/testing.md b/docs/old/testing.md index 826da0ad84..4c288f5136 100644 --- a/docs/old/testing.md +++ b/docs/old/testing.md @@ -6,21 +6,21 @@ To increase confidence in the correctness of the Interchain Security code we con Unit tests are useful for simple standalone functionality, and CRUD operations. Unit tests should use golang's standard testing package, and be defined in files formatted as ```_test.go``` in the same directory as the file being tested, following standard conventions. -[Mocked external keepers](./testutil/keeper/mocks.go) (implemented with [gomock](https://github.com/golang/mock)) are available for testing code that briefly interacts with external modules, but still only a single function/method relevant to ccv, and a single chain. Ie. do not use mocked external keepers to test the integration of the ccv module with external modules, or integration between consumer and provider. +[Mocked external keepers](../../testutil/keeper/mocks.go) (implemented with [gomock](https://github.com/golang/mock)) are available for testing code that briefly interacts with external modules, but still only a single function/method relevant to ccv, and a single chain. Ie. do not use mocked external keepers to test the integration of the ccv module with external modules, or integration between consumer and provider. ## Integration Tests -[integration-tests](./tests/integration/) utilize the [IBC Testing Package](https://github.com/cosmos/ibc-go/tree/main/testing), and test functionality that is wider in scope than a unit test, but still able to be validated in-memory. Ie. code where advancing blocks would be useful, simulated handshakes, simulated packet relays, etc. +[integration-tests](../../tests/integration/) utilize the [IBC Testing Package](https://github.com/cosmos/ibc-go/tree/main/testing), and test functionality that is wider in scope than a unit test, but still able to be validated in-memory. Ie. code where advancing blocks would be useful, simulated handshakes, simulated packet relays, etc. -To run integration tests against your own consumer/provider implementations, use [instance_test.go](./tests/integration/instance_test.go) as an example. All you'll need to do is make sure your applications implement the necessary interfaces defined in [interfaces.go](./testutil/integration/interfaces.go), pattern match [specific_setup.go](./testutil/ibc_testing/specific_setup.go), then pass in the appropriate types and parameters to the suite, as is done in `instance_test.go` for the dummy provider/consumer implementations. +To run integration tests against your own consumer/provider implementations, use [instance_test.go](../../tests/integration/instance_test.go) as an example. All you'll need to do is make sure your applications implement the necessary interfaces defined in [interfaces.go](../../testutil/integration/interfaces.go), pattern match [specific_setup.go](../../testutil/ibc_testing/specific_setup.go), then pass in the appropriate types and parameters to the suite, as is done in `instance_test.go` for the dummy provider/consumer implementations. ## Differential Tests (WIP) -[Differential tests](./tests/difference/) is similar to integration tests, but they compare the system state to an expected state generated from a model implementation. +[Differential tests](../../tests/difference/) is similar to integration tests, but they compare the system state to an expected state generated from a model implementation. ## End-to-End (E2E) Tests -[E2E tests](./tests/e2e/) run true consumer and provider chain binaries within a docker container and are relevant to the highest level of functionality. E2E tests use queries/transactions invoked from CLI to drive and validate the code. +[E2E tests](../../tests/e2e/) run true consumer and provider chain binaries within a docker container and are relevant to the highest level of functionality. E2E tests use queries/transactions invoked from CLI to drive and validate the code. ## Running Tests Tests can be run using `make`: @@ -94,7 +94,7 @@ gofmt -w -s -e . go vet ./... ``` -Some useful tools are included in the repository using [pre-commit](https://pre-commit.com/hooks.html). pre-commit lets you run developer tools either on every git commit, or manually with `pre-commit run --all-files`. See the [config](./.pre-commit-config.yaml) for details. In this repo the hooks are not installed to git, as that can be cumbersome, but it is still possible to benefit from them. +Some useful tools are included in the repository using [pre-commit](https://pre-commit.com/hooks.html). pre-commit lets you run developer tools either on every git commit, or manually with `pre-commit run --all-files`. See the [config](../../.pre-commit-config.yaml) for details. In this repo the hooks are not installed to git, as that can be cumbersome, but it is still possible to benefit from them. ```bash ## Prerequisites From 4a0319b64963a935833df70d6c6ba56c1a83703e Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 3 May 2023 00:12:23 +0200 Subject: [PATCH 3/8] fix broken links --- docs/old/quality_assurance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/old/quality_assurance.md b/docs/old/quality_assurance.md index d51b64f02e..327e5acb7e 100644 --- a/docs/old/quality_assurance.md +++ b/docs/old/quality_assurance.md @@ -59,11 +59,11 @@ IBC packets: ### Integration with Cosmos SDK -- [x] A prerequisite of the code review is to open a PR with all the [SDK changes](https://github.com/cosmos/cosmos-sdk/tree/interchain-security-rebase) needed by Interchain Security. +- [x] A prerequisite of the code review is to open a PR with all the SDK changes needed by Interchain Security. | ID | Concern | Code Review | Unit Testing | Integration Testing | Diff. Testing | Testnet | | -- | ------- | ----------- | ------------ | ----------- | ------------- | ------- | -| 3.01 | Changes to staking module | `Done` | `Done` [unbonding_test.go](https://github.com/cosmos/cosmos-sdk/blob/interchain-security-rebase.0.45.6/x/staking/keeper/unbonding_test.go) | `Partial coverage`
[unbonding_test.go](../../tests/integration/unbonding.go)
redelegation could be expanded, validator unbonding missing | `Partial coverage` | `Scheduled` | +| 3.01 | Changes to staking module | `Done` | `Done` [unbonding_test.go](https://github.com/cosmos/cosmos-sdk/blob/main/x/staking/keeper/unbonding_test.go) | `Partial coverage`
[unbonding_test.go](../../tests/integration/unbonding.go)
redelegation could be expanded, validator unbonding missing | `Partial coverage` | `Scheduled` | | 3.02 | Changes to slashing module | `Done` | `NA` | `Done`
[TestValidatorDowntime](../../tests/integration/slashing.go)
| `Partial coverage` | `Scheduled` | | 3.03 | Changes to evidence module | `Done` | `NA` | `Done`
[TestValidatorDoubleSigning](../../tests/integration/slashing.go)
| `NA` | `Scheduled` | From b1bcf52723972610d8a940844803a12e36305241 Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 3 May 2023 10:48:16 +0200 Subject: [PATCH 4/8] fix broken link --- docs/docs/validators/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/validators/overview.md b/docs/docs/validators/overview.md index 2f5cdc4369..5a670f0780 100644 --- a/docs/docs/validators/overview.md +++ b/docs/docs/validators/overview.md @@ -101,5 +101,5 @@ For more information check our the [Key assignment overview and guide](../featur ## References: - [Cosmos Hub Validators FAQ](https://hub.cosmos.network/main/validators/validator-faq.html) - [Cosmos Hub Running a validator](https://hub.cosmos.network/main/validators/validator-setup.html) -- [Startup Sequence](https://github.com/cosmos/ics-testnets/blob/main/docs/Consumer-Chain-Start-Process.md) +- [Startup Sequence](https://github.com/cosmos/testnets/blob/master/replicated-security/CONSUMER_LAUNCH_GUIDE.md#chain-launch) - [Submit Unjailing Transaction](https://hub.cosmos.network/main/validators/validator-setup.html#unjail-validator) From 90d3874afe1f3cc237b5bac3d8969b2a38816e5c Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 3 May 2023 11:53:45 +0200 Subject: [PATCH 5/8] adding config file --- .github/workflows/linkchecker.yml | 3 +++ mlc_config.json | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 mlc_config.json diff --git a/.github/workflows/linkchecker.yml b/.github/workflows/linkchecker.yml index 15f2bdbc46..ac85afb96b 100644 --- a/.github/workflows/linkchecker.yml +++ b/.github/workflows/linkchecker.yml @@ -4,7 +4,10 @@ jobs: markdown-link-check: runs-on: ubuntu-latest steps: + # Check out the latest version of the code - uses: actions/checkout@v3.5.2 + + # Checks the status of hyperlinks in *.md files in docs/ - uses: gaurav-nelson/github-action-markdown-link-check@1.0.13 with: folder-path: "docs" \ No newline at end of file diff --git a/mlc_config.json b/mlc_config.json new file mode 100644 index 0000000000..cb4ad264b2 --- /dev/null +++ b/mlc_config.json @@ -0,0 +1,10 @@ +{ + "ignorePatterns": [ ], + "replacementPatterns": [ ], + "httpHeaders": [ ], + "timeout": "20s", + "retryOn429": true, + "retryCount": 5, + "fallbackRetryDelay": "30s", + "aliveStatusCodes": [200, 206] + } \ No newline at end of file From de3e28a596dba5167227a616a19977359fe39ba2 Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 3 May 2023 11:59:41 +0200 Subject: [PATCH 6/8] ignore false positive --- docs/docs/features/slashing.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/features/slashing.md b/docs/docs/features/slashing.md index 65d14c0b41..a28b16e8c2 100644 --- a/docs/docs/features/slashing.md +++ b/docs/docs/features/slashing.md @@ -32,4 +32,5 @@ The offending validator will only be slashed (and tombstoned) if an `Equivocatio The offending validator will effectively get slashed and tombstoned on all consumer chains. ::: + You can find instructions on creating `EquivocationProposal`s [here](./proposals#equivocationproposal). From 35e9e65d6ac0d83271edad53d29c72ebc9221caa Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 3 May 2023 12:21:06 +0200 Subject: [PATCH 7/8] check also README.md --- .github/workflows/linkchecker.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linkchecker.yml b/.github/workflows/linkchecker.yml index ac85afb96b..fb846d6a74 100644 --- a/.github/workflows/linkchecker.yml +++ b/.github/workflows/linkchecker.yml @@ -10,4 +10,5 @@ jobs: # Checks the status of hyperlinks in *.md files in docs/ - uses: gaurav-nelson/github-action-markdown-link-check@1.0.13 with: - folder-path: "docs" \ No newline at end of file + folder-path: "docs" + file-path: './README.md' \ No newline at end of file From 06a0e8e972e620fb3b1c57b81721f294d3a70258 Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 3 May 2023 13:27:03 +0200 Subject: [PATCH 8/8] fix broken links in README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 80b42bb828..d7e63d11f5 100644 --- a/README.md +++ b/README.md @@ -45,11 +45,11 @@ Inspect the [Makefile](./Makefile) if curious. ## Testing -See [testing docs](./docs/testing.md). +See [testing docs](./docs/old/testing.md). ## Learn more -- [IBC Docs](https://docs.cosmos.network/master/ibc/) +- [IBC Docs](https://ibc.cosmos.network/) - [IBC Protocol](https://ibcprotocol.org/) - [IBC Specs](https://github.com/cosmos/ibc) - [Cosmos SDK documentation](https://docs.cosmos.network)