Skip to content
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

🚀 Road to V1 #554

Open
37 of 54 tasks
Farhad-Shabani opened this issue Mar 17, 2023 · 0 comments
Open
37 of 54 tasks

🚀 Road to V1 #554

Farhad-Shabani opened this issue Mar 17, 2023 · 0 comments
Labels
A: tracking Admin: tracking/meta issue

Comments

@Farhad-Shabani
Copy link
Member

Farhad-Shabani commented Mar 17, 2023

ibc-rs V1 Roadmap

Motivation

We are thrilled to share the status and plans for the upcoming release of ibc-rs v1.0.0. Our goal is to enable new use cases and business models across the blockchain industry and bring the power of IBC protocol to a wider range of blockchains, developers, operators, and relayers, ultimately paving the way for a truly interconnected blockchain ecosystem.
This tracking issue serves as a beacon of our progress and gives a road toward the future of ibc-rs. View this roadmap as a broad overview rather than a promise of specific outcomes and timelines. As we continue to work towards the release of V1, we try our best to keep this roadmap updated and reflect our status.

Acceptance Criteria

The following are three main objectives we aim to achieve with the implementation. The current issues associated with achieving these goals are outlined in the "Objectives Breakdown" section.

1. Improve Compatibility: with reference to specs and IBC-go enabled chains

We aim to optimize our compatibility with the IBC protocol outlined in the official IBC documentation. To achieve this, we strive to align our data structures, abstractions, and semantics with the protocol set forth by the IBC core, client, and relayer standards and prioritize to support the fungible token transfer (ICS20). We do our best to clearly communicate any deviations from specifications and provide developers with guidance on how to handle them.
In addition to the above, we are committed to achieving compatibility with ibc-go enabled chains, which will expand our system's interoperability and enhance its potential for adoption.

2. Scalable Design: empowering non-cosmos chains

Our goal is to make architectural and design decisions that incorporate implementation with a clear separation of concerns and generic enough modular building blocks. Each with exclusive responsibility and well-defined required and provided APIs that ensure independent maintainability and support the IBC adoption of non-cosmos chains. Thus, this objective is tracked under the following criteria:

  • 2.1. Ensure APIs are delightful and flexible enough for end-users
  • 2.2. Assist non-cosmos chains in adopting IBC and applying feedback

3. Solidify Implementation: by quality assurance measures

This objective will take a number of steps to ensure our designs and implementation function within consistent and reliable behaviors while minimizing backward-incompatible and breaking changes. By taking the following measures, we aim to provide a more robust and user-centric product:

  • 3.1. Clean-ups, public exposure refinement and encapsulation
  • 3.2. Add necessary unit, integration, and e2e compatibility tests and maintain basecoin-rs up-to-date with ibc-rs changes as our primary testing venue
  • 3.3. Fix existing and community-reporting security and functionality findings
  • 3.4. Ensure adequate contents/docs around how to use, integrate and upgrade ibc-rs

Objectives Breakdown

Here, you can check out the list of current and usually more significant issues for each objective!
Note that this list may be subject to periodic updates, meaning it may grow or shrink over time.

1.1. Improve Compatibility [app support]

  1. A: breaking
  2. A: breaking
    plafer

1.2. Improve Compatibility [compliance with ibc-go]

  1. 4 of 4
    A: critical O: reliability
    seanchen1991
  2. A: critical
    seanchen1991
  3. A: critical O: new-feature
    seanchen1991
  4. A: tracking
  5. 5 of 5
    A: breaking O: decoupling O: logic O: maintainability
    plafer
  6. O: exploratory
    Farhad-Shabani
  7. Farhad-Shabani
  8. plafer

1.3. Improve Compatibility [compliance with specs]

  1. A: breaking O: usability S: specs
    Farhad-Shabani
  2. S: specs
    plafer

2.1 Scalable Design [delightful APIs]

  1. 3 of 3
    O: maintainability S: errors
    seanchen1991
  2. A: breaking
    Farhad-Shabani
  3. A: breaking O: optimization
  4. A: breaking O: exploratory
    Farhad-Shabani
  5. A: breaking A: critical O: decoupling O: logic
    Farhad-Shabani
  6. A: breaking O: usability
    Farhad-Shabani
  7. A: breaking O: exploratory O: logic
    plafer
  8. A: breaking O: decoupling
    Farhad-Shabani
  9. O: exploratory O: logic O: usability
    plafer
  10. O: exploratory
    rnbguy

2.2. Scalable Design [non-Cosmos support]

  1. 18 of 18
    A: tracking
  2. 8 of 8
    A: tracking
  3. 5 of 5
    A: tracking
  4. 16 of 16
    A: tracking
  5. 7 of 7
    O: code-hygiene O: decoupling O: maintainability O: usability
  6. O: decoupling O: maintainability O: usability
    Farhad-Shabani

3.1. Solidify Impl [clean-ups]

  1. O: maintainability
  2. A: low-priority O: maintainability
  3. A: breaking O: decoupling O: logic

3.2. Solidify Impl [unit and integration tests]

  1. O: testing
    rnbguy
  2. O: exploratory O: testing
    rnbguy
  3. O: decoupling O: maintainability O: usability
    Farhad-Shabani
  4. O: testing
    rnbguy
  5. O: maintainability O: testing
  6. O: testing
  7. O: security O: testing
  8. O: testing
    rnbguy
  9. O: testing
    rnbguy
  10. O: testing
    rnbguy
  11. A: good-first-issue O: testing
  12. O: testing
    rnbguy
  13. O: testing
    Farhad-Shabani

3.3. Solidify Impl [potential findings]

  1. O: maintainability
  2. A: bug
    Farhad-Shabani
  3. 3 of 3
    A: breaking A: bug
    Farhad-Shabani
  4. A: bug

3.4. Solidify Impl [docs]

  1. 2 of 8
    A: tracking O: usability S: docs
    Farhad-Shabani
  2. seanchen1991

Features to support after the V1 release

  • ICS721 - Support NFT transfer
  • ICS027 - Interchain Accounts
  • ICS029 - Fee payment
  • ICS031 - Cross-chain queries
  • Connection Upgradability
  • Channel Upgradilbilty

TBD with further Investigation

  • Exposing an async API

Milestone

v1.0.0


@Farhad-Shabani Farhad-Shabani added the A: tracking Admin: tracking/meta issue label Mar 17, 2023
@Farhad-Shabani Farhad-Shabani moved this to 🏗️ In Progress in ibc-rs Mar 17, 2023
@Farhad-Shabani Farhad-Shabani pinned this issue Mar 17, 2023
@seanchen1991 seanchen1991 unpinned this issue Jan 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A: tracking Admin: tracking/meta issue
Projects
Status: 🏗️ In Progress
Development

No branches or pull requests

1 participant