Rewrite x/ccv/provider and x/ccv/consumer in a new vaas folder as a new Go module with package path github.com/allinbits/vaas.
| Feature | Decision | Notes |
|---|---|---|
| Consumer Lifecycle Management | KEEP | Phases: REGISTERED → INITIALIZED → LAUNCHED → STOPPED → DELETED |
| Top N Chains | REMOVE | Part of PSS removal |
| Opt-In Chains | REMOVE | Part of PSS removal - all validators validate all consumers |
| Partial Set Security (PSS) | REMOVE | All validators validate all consumers (no opt-in/out) |
| Power Shaping | REMOVE | No caps, allowlists, denylists, etc. |
| Key Assignment | KEEP | Validators can use different keys per consumer |
| Per-Consumer Infraction Parameters | REMOVE | Use global defaults |
| Slash Packet Throttling | REMOVE | Remove all slash-related functionality |
| Consumer Reward Distribution | REMOVE | No cross-chain rewards |
| Double Voting Evidence | KEEP | Handle double voting evidence from consumers |
| Light Client Misbehavior | KEEP (detection only) | Keep detection/logging, no slashing action |
| Epoch-Based VSC Packets | KEEP | Send VSC at epoch boundaries |
| Per-Consumer Commission Rates | REMOVE | Same commission as provider |
| Consumer Metadata | KEEP | Name, description, metadata for discovery |
| Inactive Provider Validators (ADR-017) | REMOVE | Only active provider validators can validate consumers |
| Minimum Validators for Launch | KEEP | Safety check - don't launch with zero validators |
| Chain ID Update Before Launch | KEEP | Allow fixing chain ID typos before launch |
| Existing Client/Connection Reuse | KEEP | Reuse existing IBC client/connection when creating consumer |
| Feature | Decision | Notes |
|---|---|---|
| VSC Packet Handling | KEEP | Core functionality, without VSCMatured (already removed in v6.4.0) |
| Slash Packet Sending | REMOVE | All slash-related removed |
| Slash Packet Throttling/Retry | REMOVE | All slash-related removed |
| Reward Distribution to Provider | REMOVE | Consistent with provider removal |
| Standalone-to-Consumer Changeover | REMOVE | Only new chains as consumers |
| Outstanding Downtime Flag | REMOVE | Part of slash removal |
| Historical Info Storage | KEEP | Required for IBC evidence verification |
Core Components:
- Consumer Lifecycle - Create, update, remove consumer chains with phase management
- Validator Set Management - Track which validators are opted-in per consumer
- Key Assignment - Allow validators to use different keys per consumer
- VSC Packet Generation - Generate and send VSC packets at epoch boundaries
- IBC Channel Management - Handshake, packet handling
- Light Client Misbehavior Detection - Log/emit events for misbehavior (no slashing)
- Consumer Metadata - Store chain name, description, metadata
State to Keep:
- Consumer ID → Chain ID, Channel ID, Client ID, Owner, Phase, Metadata
- Consumer ID → Initialization Parameters (including connection_id for client reuse)
- Spawn/Removal time scheduling
- Validator consumer public keys (key assignment)
- VSC update ID counter
- Epoch tracking
Validator Selection: All active provider validators automatically validate all consumer chains (no opt-in/out).
Messages:
MsgCreateConsumerMsgUpdateConsumerMsgRemoveConsumerMsgAssignConsumerKeyMsgSubmitConsumerMisbehaviourMsgSubmitConsumerDoubleVoting
Core Components:
- VSC Packet Handling - Receive and apply validator set changes
- Cross-Chain Validator Storage - Store current validator set
- Historical Info Tracking - Store validator sets by height for IBC
- IBC Channel Management - Handshake, packet handling
- Parameters - Minimal config (unbonding period, timeouts, etc.)
State to Keep:
- Provider client/channel IDs
- Cross-chain validators (current set)
- Historical info (validator sets by height)
- Height → VSC ID mapping
- Init genesis height
- Module parameters
Removed State:
- Slash record
- Outstanding downtime
- Pending data packets (slash/VSCMatured)
- Reward distribution tracking
- Standalone changeover flags
vaas/
├── go.mod # module github.com/allinbits/vaas
├── go.sum
├── x/
│ └── ccv/
│ ├── provider/
│ │ ├── keeper/
│ │ ├── types/
│ │ ├── client/cli/
│ │ ├── module.go
│ │ └── ibc_module.go
│ ├── consumer/
│ │ ├── keeper/
│ │ ├── types/
│ │ ├── client/cli/
│ │ ├── module.go
│ │ └── ibc_module.go
│ └── types/ # Shared types
├── proto/ # Protobuf definitions
│ └── vaas/
│ └── ccv/
│ ├── provider/v1/
│ └── consumer/v1/
└── ... # Other root files as needed
Go Module: github.com/allinbits/vaas
Import paths will be:
github.com/allinbits/vaas/x/ccv/providergithub.com/allinbits/vaas/x/ccv/consumergithub.com/allinbits/vaas/x/ccv/types
Copy all files EXCEPT these (entirely for removed features):
keeper/throttle.go,keeper/throttle_test.go- Slash throttlingkeeper/distribution.go,keeper/distribution_test.go- Consumer rewardskeeper/power_shaping.go,keeper/power_shaping_test.go- Power shapingkeeper/infraction_parameters.go,keeper/infraction_parameters_test.go- Per-consumer infraction paramskeeper/partial_set_security.go,keeper/partial_set_security_test.go- PSS / Top N (keep opt-in only)keeper/provider_consensus.go,keeper/provider_consensus_test.go- Inactive validatorsmigrations/- Skip entire migrations folder (fresh start)
Files to keep but clean (remove references to removed features):
keeper/consumer_equivocation.go- Keep double voting evidence & light client misbehaviorkeeper/keeper.go- Remove keeper fields for removed featureskeeper/msg_server.go- Remove handlers for removed featureskeeper/relay.go- Remove slash packet handlingtypes/*.go- Remove types for removed features
Copy all files EXCEPT these (entirely for removed features):
keeper/changeover.go,keeper/changeover_test.go- Standalone changeoverkeeper/distribution.go,keeper/distribution_test.go- Reward distributionkeeper/throttle_retry.go,keeper/throttle_retry_test.go- Slash throttling/retrymigrations/- Skip entire migrations folder (fresh start)
Files to keep but clean:
keeper/relay.go- Remove slash packet sending, keep VSC handlingkeeper/validators.go- Remove outstanding downtime handlingkeeper/keeper.go- Remove keeper fields for removed featurestypes/*.go- Remove types for removed features
- Update all import paths from
github.com/cosmos/interchain-security/v7togithub.com/allinbits/vaas - Update proto package paths
- Create
go.modwithmodule github.com/allinbits/vaas - Run
go mod tidyto resolve dependencies
For each copied file:
- Remove imports for removed features
- Remove function calls to removed features
- Remove keeper fields for removed features
- Remove message handlers for removed features
- Remove state keys for removed features
- Update genesis import/export
- Build:
go build ./vaas/... - Unit tests:
go test ./vaas/... - Integration test: Start provider + consumer chains
Provider (current):
x/ccv/provider/keeper/keeper.go- Keeper structurex/ccv/provider/keeper/consumer_lifecycle.go- Lifecycle managementx/ccv/provider/keeper/key_assignment.go- Key assignmentx/ccv/provider/keeper/relay.go- VSC packet logicx/ccv/provider/types/keys.go- State keysx/ccv/provider/ibc_module.go- IBC callbacks
Consumer (current):
x/ccv/consumer/keeper/keeper.go- Keeper structurex/ccv/consumer/keeper/relay.go- VSC handlingx/ccv/consumer/keeper/validators.go- Validator + historical infox/ccv/consumer/types/keys.go- State keysx/ccv/consumer/ibc_module.go- IBC callbacks