-
Notifications
You must be signed in to change notification settings - Fork 0
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
user story #1
Comments
I want to run a relayer to transport IBC packets from chain A to chain B. Both chains support Interchain Accounts. The Interchain Accounts module allows the creation of remote accounts on behalf of an individual user account OR the community pool as a whole. I want to run a relayer that only transports packets originating from the community pool as a public service, where I will be paying transactions fees on the community pool's behalf. There is one main connection between chain A and chain B, by convention individuals who want to use Interchain Accounts do so via channel X, whereas the community pool uses channel Y. I don't know what channels exist, however to setup my relayer to only transport packets from the community pool I must know to use channel Y. I need a list of all open channels between chain A and B for a given connection. With this information I can manually query these connections for a recent Interchain Account packet and inspect whether it originated from the community pool, validating this is the correct connection to automatically relay. |
Product Goal MVP: Public UI for IBC activity which will start with IBC channel discovery but be able to expand to cover further IBC features as they develop Internal Users:
IG/marketing wants to see/create visibility about activity on IBC and relayers, this should inform grants decisions and/or marketing&PR efforts IBC-Go team is interested in seeing activity because this data can be used to support building of community consensus on which channels we use to transfer between chains. Should also segway with IG and marketing team efforts on this point. Golang relayer usage is more transparent, we can use this for issue triage/deciding the maintenance timeline for the repo. External Users:
External persons are curious about status of IBC now that it's been launched External devs want to see the active channels, and which transfers are using which channels. Relayer teams can see current activity/usage of relayers, hopefully will help guide feature roadmap Caveats + Next Steps We want to be careful not to duplicate https://mapofzones.com/?period=24 because that already exists. We should also focus on relayer visibility bc that's not covered in map of zones, I think this would be the best value added direction for this UI. This would be relayer discovery, seeing the packets that are in the queue, etc |
Due to the bottom up structure of IBC, channels cannot be considered fungible. This causes fracturing at the application level if two channels which perform the same function for the same connection are used. Tokens transferred from one chain to another using the same connection but different channels are non-fungible. If users/exchanges/wallets proceed to use channels in isolation from each other, we will end up in a world of many fractured IBC tokens that all come from the same place, but cannot be ascribed equal value. It is very important we begin to coalesce around certain channels in order to prevent liveness and fracturing issues and increase UX of IBC. If there is a canonical channel to transfer atoms to ethermint, then the community as a whole can ensure the associated clients are always kept active and atoms transferred to ethermint via this channel will be fungible and easily tradeable on a dex. Providing visibility into the most used channels will allow new users to select these channels as well causing a positive feedback loop. This fracturing will apply to all IBC applications |
Am I correct in assuming that once there is some "canonical" channels well defined in the future this notion of end users manually choosing their own channels will be abstracted away by the various popular clients? Also, there is only talk of channels here but ports are equally as important, right? The port informs what type of IBC application is being used. @colin-axner Some user stories summarized from the comments above:
|
This is mostly implemented in Happy if you comment on the issue and add any other requirements |
There is unfortunately no way to list all bound ports on a chain. We had this in our spec, but could not find a query endpoint. We asked the IBC team and there confirmed there is no way to query that information. Maybe in sdk 0.44? |
You can also take a look at our IBC Visualizer which provides a graphical interface to list clients, connections and channels (and some packet info) It was designed as an "admin interface" to show stats and not user facing. Happy if anyone wants to make use of this or extend it. |
Maybe you can contribute to one of these other (Apache, ICF-funded) projects rather than start another? We'd be happy to collaborate |
@ethanfrey thanks for commenting and we may make use of your library. This project is going to be focused on creating a micro-site that surfaces basic channel info for the Hub. It's also a learning project we're doing as a team to get some hands-on experience working with IBC data, while training our new jr dev @JessicaDosseh in blockchain front-end design patterns. |
@ethanfrey super cool to see the IBC visualiser! I will take a look at it more in depth but, it looks like we can definitely make use of parts of that codebase. Like @hxrts said, we would ideally want to make something a bit more user facing but the data that IBC visualiser is retrieving looks very helpful. I'll also put more thought into the relayer story, what we want to display and comment on the issue. Would be great to get more synergy/unification across all the relayers in general and this could be a good way to start doing that :) |
Yes this was an oversight in our sprint for IBC 1.0.0. I've opened an issue for this, so hopefully we can get this fixed soon |
Yes this sounds likely.
Correct, but you can also think of channels as a channel/port ID pair
For local development I don't see any usage. An explorer is useful for exploring what others are doing, not for understanding what you are doing. It might be nice for testnets |
Informal went through a design sprint for Hermes and we focused on the persona of a "Relayer Operator". This is a broader category that would encompass operators running the relayer in perpetuity (maintainers) and would also consider the needs of Cosmos stakeholders such as wallets and chain developers that need a relayer to transmit IBC txs. Perhaps it might make sense to divide "Relayer Operator" in to external and internal users. Internal: Golang relayer, Hermes, TypeScript relayer, etc Some outcomes from that design sprint which are relevant to an IBC channel explorer from the perspective of external and internal Relayer Operators:
This is a great overview of end user needs and focusing on channels in the short-term makes a ton of sense. I wanted to add a few comments on relayer operators though I imagine this will be out of scope in the short-term. |
This is just a summary of what you all have said to see if I understand correctly and some notes for myself. Index(work in progress) User Question
User Story
User Story BreakdownUser Persona Internal Users: Note: think of channels as a channel/port ID pair querying ports not currently available: view spec, and issue
External Users:
Word FrameProduct requirements:
Feedback loop that gets created:
Initial feature order:
![ add simple flow chart coming soon] Todos
QuestionsWhat is the general timeline for this project? How complex do we want this website to be? How interactive should it be? Resources
|
Hey 👋 @Jelena647 asked me to relay a list of UX issues around IBC we're trying to solve in the upcoming Gravity DEX UI (which will include support for IBC transfers).
|
The text was updated successfully, but these errors were encountered: