Skip to content

Conversation

n2p5
Copy link
Collaborator

@n2p5 n2p5 commented Aug 1, 2025

AtomOne ICS1: Pure Replicated Security Implementation

Overview

This PR creates ICS1 - a fork of Interchain Security v5.2.0 that implements pure
Replicated Security
for AtomOne. All Partial Set Security (PSS) features have been
removed, ensuring that ALL bonded validators must validate ALL consumer chains,
providing maximum security guarantees.

Key Changes

Pure Replicated Security

  • Removed all PSS features (~11,000 lines of code)
  • All bonded validators participate in all consumer chains (no opt-in/opt-out)
  • Simplified validator set computation
  • Maximum security for consumer chains

AtomOne Compatibility

  • Integrated with AtomOne SDK v0.50.14-atomone.1
  • Added governance adapter for AtomOne's custom gov module
  • Removed x/crisis module (not used in AtomOne)
  • Go 1.23+ compatibility

Other Improvements

  • Applied VSCMatured packet removal optimization from upstream

Merged PRs

This branch consolidates work from multiple PRs:

  1. #3 - IBC v10 Upgrade

    • Upgraded IBC-go to v10.2.0 for modern chain compatibility
    • Updated protobuf generation tooling
  2. #4 - AtomOne Gov Compatibility

    • Created adapter pattern for AtomOne's governance module
    • Avoided circular dependencies with minimal interface
  3. #5 - Dependency Alignment

    • Updated to AtomOne SDK v0.50.14-atomone.1
    • Removed x/crisis module
    • Cleaned up technical debt
  4. #6 - VSCMatured Packet Removal

  5. #7 - Legacy Migration Cleanup

    • Removed v1-v5 migrations (fresh deployment only)
    • Simplified dependencies
  6. #8 - E2E & Integration Test Fixes

    • Updated test configurations for AtomOne compatibility
  7. #9 - Reintroduce TopN

    • Reintroduced TopN functionality for more validator flexibility
  8. #10 - add support for updating consumer chain-id

Testing Status

All unit tests passing
E2E tests passing
Integration tests passing

What's NOT Included (Future Work)

From Upstream v6/v7

  • Complete unbonding pausing removal (ADR-018)
  • IBC transfer packet memos for reward tracking
  • Multiple reward denomination support
  • Bug fixes from v6.3.0

AtomOne Specific

  • Production deployment configuration
  • Migration guide for existing chains
  • Performance benchmarking
  • Complete documentation updates

Breaking Changes

⚠️ This is a breaking fork - Not compatible with upstream ICS due to:

  • Removed PSS message types from protobufs
  • Changed validator set computation logic
  • AtomOne SDK instead of Cosmos SDK

Usage

This fork is designed for AtomOne mainnet deployment where:

  • All validators participate in consumer chain security
  • No partial validator sets
  • Maximum security through full replication

Review Focus

Please review:

  1. PSS removal completeness
  2. AtomOne SDK integration points
  3. Test coverage for RS-only operation
  4. Documentation accuracy

Note: This is an intentional fork with breaking changes. We're not seeking to
merge upstream but rather maintaining a specialized version for AtomOne's security
model.


Summary: This PR successfully removes ~12,000 lines of PSS code while maintaining a clean, working Replicated Security implementation. The actual logic changes are minimal and focused, making this a surgical removal rather than a refactor.


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • Included the correct type prefix in the PR title
  • Added ! to the type prefix if the change is state-machine breaking
  • Confirmed this PR does not introduce changes requiring state migrations, OR migration code has been added to consumer and/or provider modules
  • Targeted the correct branch (see PR Targeting)
  • Provided a link to the relevant issue or specification
  • Followed the guidelines for building SDK modules
  • Included the necessary unit and integration tests
  • Added a changelog entry to CHANGELOG.md
  • Included comments for documenting Go code
  • Updated the relevant documentation or specification
  • Reviewed "Files changed" and left comments if necessary
  • Confirmed all CI checks have passed
  • If this PR is library API breaking, bump the go.mod version string of the repo, and follow through on a new major release

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed ! the type prefix if the change is state-machine breaking
  • confirmed this PR does not introduce changes requiring state migrations, OR confirmed migration code has been added to consumer and/or provider modules
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic
  • reviewed API design and naming
  • reviewed documentation is accurate
  • reviewed tests and test coverage

@n2p5 n2p5 changed the title feat: upgrade to AtomOne SDK v0.50.13 and fix Go 1.24.5 compatibility DRAFT: ICS with RS only POC experiment Aug 1, 2025
@n2p5 n2p5 changed the title DRAFT: ICS with RS only POC experiment feat(rs)!: ICS with RS only POC experiment Aug 1, 2025
@n2p5 n2p5 force-pushed the atomone-replicated-security-poc branch from b0ab4bd to 354f839 Compare August 6, 2025 18:11
@n2p5 n2p5 force-pushed the atomone-replicated-security-poc branch from 354f839 to 0d95b37 Compare August 6, 2025 18:19
@n2p5
Copy link
Collaborator Author

n2p5 commented Aug 14, 2025

Discoveries:

  • AtomOne Cosmos SDK 0.50.13 upgrades from IBC from v7 -> v10
  • cosmos ICS v5.2 is on IBC v8 and doesn't upgrade to IBC v10 until v7

This has been interesting and somewhat of a rabbit hole I've been going down, but I think I'll have some POC worthy code soon (maybe I am too optimistic here).

@n2p5
Copy link
Collaborator Author

n2p5 commented Aug 15, 2025

I've merged the work of the IBC v10 experiment into this POC branch for simplicity, putting this link here for traceability and so that it is easy to diff this major change to this experiment. #3

* chore: update tag filter for e2e build

* feat: fix e2e testing for simple test

* chore: code cleanup

* chore: code cleanup

* chore: code cleanup

* chore: update CI go version and remove e2e compat test

* chore: fix ci workers

* chore: fix ci workers

* chore: fix ci workers

* fix: integration tests

* fix: remove sonarcloud from CI

* chore: debug logging cleanup

* chore: debug logging cleanup

* fix: remove pss refs in e2e

* chore: remove some dead docs

* fix: restore documentation files from 7f8a868

* fix: make small changes with PR feedback

* fix: typo in e2e steps
@github-actions github-actions bot added the C:CI label Sep 15, 2025
@n2p5 n2p5 changed the title feat(rs)!: ICS with RS only POC experiment feat!: ICS1 with RS POC experiment Sep 15, 2025
n2p5 and others added 5 commits September 16, 2025 13:06
* feat: reintroduce TopN

* chore: fix diff formatting

* chore: ensure tx.proto has all required fields

* fix: restore tx comments

* fix: restore tx.proto formatting

* fix: reintroduce TopN state functions for keeper.go

* fix: reintroduce TopN state functions for keeper.go

* fix: finish TopN first pass with testing

* fix: update integration tests for TopN

* fix: TopN test coverage

* fix: all testing

* fix: update testing signatures

* fix: cleaning up diffs
…10)

- Add NewChainId field to MsgConsumerModification
- Implement renameConsumerChain to migrate all chain-scoped state
- Extend HandleConsumerModificationProposal with prelaunch rename logic
- Add comprehensive tests covering all control-flow paths
- Update CLI and tx.proto accordingly
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants