informalsystems / hermes

IBC Relayer in Rust
https://hermes.informal.systems
Apache License 2.0
441 stars 326 forks source link

Solo machine client support #705

Closed tomtau closed 2 years ago

tomtau commented 3 years ago

Crate

proto (potentially relayer etc.)

Summary

Currently, the IBC solo machine client isn't supported.

Problem Definition

https://github.com/cosmos/ics/blob/master/spec/ics-006-solo-machine-client/README.md

Proposal

@devashishdxt has been working on this

https://github.com/informalsystems/ibc-rs/compare/master...devashishdxt:solo-machine

so this will be upstreamed when ready.


For Admin Use

tomtau commented 3 years ago

(opened this issue to sync up / in order not to duplicate efforts :))

adizere commented 3 years ago

Beautiful! (On the ibc-rs side, no one is working on ICS 006, so we should be good. In contrast, we may update the protos, but it's not going to be very soon e.g., within 1-2 weeks; but there shouldn't be conflicts there anyway.)

devashishdxt commented 3 years ago

In contrast, we may update the protos, but it's not going to be very soon e.g., within 1-2 weeks; but there shouldn't be conflicts there anyway

Thanks for the heads-up. I'll keep rebasing my branch with the latest master to keep everything updated.

zmanian commented 3 years ago

Is the Crypto.com team planning on building a solo machine relayer/orchestrator in Rust?

tomtau commented 3 years ago

Is the Crypto.com team planning on building a solo machine relayer/orchestrator in Rust?

what do you mean by "relayer/orchestrator"? Do you mean a solo machine that would open two connections against two different networks and do synchronous ops between the networks (e.g. transfer-in/transfer-out ICS20)?

devashishdxt commented 3 years ago

Is the Crypto.com team planning on building a solo machine relayer/orchestrator in Rust?

Is there any reason for the normal relayer not to work with solo machines?

zmanian commented 3 years ago

I think of it something that generate and process IBC packets for an IBC solo machine.

zmanian commented 3 years ago

The normal relayer would need new functions to injest and deliver packets that aren't based on Tendermint rpc.

devashishdxt commented 3 years ago

The normal relayer would need new functions to injest and deliver packets that aren't based on Tendermint rpc.

By tendermint RPC, do you mean these GRPC endpoints? https://github.com/cosmos/ibc-go/blob/97f8985e485ea067d187a0813ca880d771b56abc/proto/ibc/core/channel/v1/tx.proto#L12

tomtau commented 3 years ago

The normal relayer would need new functions to injest and deliver packets that aren't based on Tendermint rpc.

By tendermint RPC, do you mean these GRPC endpoints? https://github.com/cosmos/ibc-go/blob/97f8985e485ea067d187a0813ca880d771b56abc/proto/ibc/core/channel/v1/tx.proto#L12

AFAIK, Tendermint JSON-RPC, as the relayer uses it for the light client: https://github.com/cosmos/relayer/blob/v0.8.2/relayer/tm-light-client.go ?

tomtau commented 3 years ago

I think of it something that generate and process IBC packets for an IBC solo machine.

@devashishdxt is working on CLI that will leverage the client from https://github.com/informalsystems/ibc-rs/compare/master...devashishdxt:solo-machine i.e. AFAIK do what you described, but internal/embedded -- so far no plan for some external interface to the solo machine, but it may evolve out of it.

hxrts commented 3 years ago

Is crypto.com also planning to create a solo machine instance that uses the solo machine client? We haven't seen one in the wild yet, would like to give this effort visibility if so.

devashishdxt commented 3 years ago

Is crypto.com also planning to create a solo machine instance that uses the solo machine client? We haven't seen one in the wild yet, would like to give this effort visibility if so.

I'm doing a POC here: https://github.com/devashishdxt/ibc-solo-machine

tomtau commented 3 years ago

@hxrts one thing to note is that due to IBC spec and implementation bugs, a solo machine can currently only connect to networks that have applied https://github.com/cosmos/ibc-go/pull/123

hxrts commented 3 years ago

Noted, thanks @tomtau. Also @brapse @fedekunze are interested in connecting with you regarding this effort.

adizere commented 2 years ago

Not clear if this issue is still relevant. Optimistically closing.

Had a look at https://github.com/devashishdxt/ibc-solo-machine and I don't see much activity. Please let us know otherwise, esp. if any changes should be upstreamed into the Hermes relayer. Thank you.