ICS for BandChain oracle packet #575
Replies: 5 comments 5 replies
-
Since the the topic of this discussion is creating an ICS spec, I'm going to transfer this discussion to cosmos/ibc since that repository contains the correct audience |
Beta Was this translation helpful? Give feedback.
-
I looked draft ADRs. A few comments.
|
Beta Was this translation helpful? Give feedback.
-
Read through the linked specifications. Some things that come to mind: I think it'd be worth while to avoid using "client", there is already a strong notion of "client" in core IBC and it can be confusing to understand the context. "consumer" is a nice substitute What is the reasoning of using a 2 packet send/receive? Asynchronous acknowledgements are supported. OracleResponsePacketData could be the acknowledgement. This would cut IBC traffic in half and avoid issues with constructing a timeout on-chain. This is a good use case for acknowledgements. Note, there is a separate "receipt" flag in core IBC which will indicate the request was received The escrow address construction is modeled off of ICS20. This construction came from informal's audit of ICS20. Very careful care, was done to ensure the uniqueness of each escrow address (we brute force checked address collisions since we can deterministically construct them before hand). The request key in the escrow address creation seems to draw up these concerns once more. While a very edge case scenario, certainly worth some attention As I understand it, a consumer is expected to pre-create the escrow address using their request key, send tokens to that address on the bandchain and then send their request with that request key. Is this correct? If so, it seems like sub-optimal solution to the fee collection problem as it requires funding new addresses for each request that are also non-redeemable. There is current discussion about how to implement fees for IBC applications which aren't ICS20. This discussion is primarily focused on incentivizing relayers, but there is conceptual overlap here. Using that discussion as a guideline will likely prove worthwhile My initial thought is that this would be cleaner using ICS27. This way a consumer could prefill their ICS27 account and then use that account to execute oracle requests. I'll give this some more thought since I think fees on the service side of IBC seems like it'll be a reoccurring problem Could you document some use cases? Who do you anticipate the consumers to be? Users? Modules? Chains? |
Beta Was this translation helpful? Give feedback.
-
Nice ideas on fee payments and I think it would be very helpful if you could join a general conversation that just started on cross-chain incentivizations. It should idealy be able to handle your use case as well: #578 I was also confused by #578 and what fees got to what address where and how they are passed over the wire. But this is just because that is my focus in IBC now. |
Beta Was this translation helpful? Give feedback.
-
Hello,
As our team has mentioned before, we are looking to standardize our oracle packet into ICS.
Here is some of the code: https://github.com/bandprotocol/chain/blob/master/x/oracle/types/oracle.pb.go#L594
We also have a rough draft which is based on ICS20, but currently our doc is split into two parts due to different roles between BandChain and other chains.
https://github.com/bandprotocol/chain/tree/nat/oracle-adr-docs/spec/app/icsxx-oracle-packet
We are wondering what is the process to make this happen. Thanks!
Beta Was this translation helpful? Give feedback.
All reactions