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

Explore a lightweight, Eureka-inspired IBC architecture #1361

Open
11 tasks
Farhad-Shabani opened this issue Oct 17, 2024 · 0 comments
Open
11 tasks

Explore a lightweight, Eureka-inspired IBC architecture #1361

Farhad-Shabani opened this issue Oct 17, 2024 · 0 comments
Assignees
Labels
A: tracking Admin: tracking/meta issue O: eureka Objective: implement IBC Eureka O: exploratory Objective: aims to investigate new ideas

Comments

@Farhad-Shabani
Copy link
Member

Farhad-Shabani commented Oct 17, 2024

Overview

This issue serves as a tracking point to explore and demonstrate the feasibility of a reduced-footprint IBC design, in the style of Eureka. The goal is to simplify the ibc-rs implementations while retaining essential functionality, focusing on a leaner structure as v2.

Tasks

  • Decide on IBC v2 codebase structure
    • Determine the structure for the IBC v2 codebase, aligning it with the current ibc-rs implementation. Along with setting up the necessary boilerplate for v2.
  • Remove unnecessary core modules
    • Streamline the IBC core by removing modules and crates that are no longer needed, particularly those related to connection and channel handshakes from IBC v1.
  • Simplify 24-host implementation
    • Streamline validation and execution context traits to fit the Eureka model.
    • Remove unnecessary paths, focusing only on essential packet flows.
    • Retain only the necessary identifiers and validations.
  • Combine/bind client and channel IDs
    • Experiment with merging client and channel IDs into a single identifier for both source and destination, simplifying identification.
  • Implement v2 packet structure
    • Implement the new v2 packet structure, including associated types, conversions, and helper methods. Packets will contain both a header and multi-payload data, with each payload featuring its own header and data section as discussed internally.
  • Implement v2 core handlers
    • Develop the first iteration of IBC v2 core handlers. This will function as a basic transport layer without any handshake processes or counterparty registration. Social consensus will be leveraged to establish canonical clients/channels, allowing free data exchange between channels on different chains without predefined registration.
  • Experiment removing acknowledgement
  • Investigate v2 packet commitment
    • Explore the ideal structure for v2 packet commitment, experiment with different implementations to determine the best approach.
  • Update module (Callbacks) trait
    • Adjust the module trait (callbacks) to integrate with the new v2 packet structure.
  • Modify ICS-26 routing module
    • Make the necessary changes to the ICS-26 router module to align with the new v2 architecture. Also, determine whether to use the application identifier and/or the port identifier.
  • Testing v2 with ibc-testkit
    • Use ibc-testkit to write unit and integration tests for the first iteration to ensure sound design choices.

Remarks

  • The initiative will move forward in the feature branch feat/ibc-eureka and won't be merged into the main until the specifications are finalized in collaboration with the IBC protocol team.

  • For the first iteration, we’re not concerned with backward compatibility with IBC v1

@Farhad-Shabani Farhad-Shabani added O: exploratory Objective: aims to investigate new ideas O: eureka Objective: implement IBC Eureka labels Oct 17, 2024
@Farhad-Shabani Farhad-Shabani added the A: tracking Admin: tracking/meta issue label Oct 17, 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 O: eureka Objective: implement IBC Eureka O: exploratory Objective: aims to investigate new ideas
Projects
Status: 📥 To Do
Development

No branches or pull requests

2 participants