classic-core icon indicating copy to clipboard operation
classic-core copied to clipboard

(Re)enable IBC connection to Osmosis, Juno and Crescent

Open gosuri opened this issue 2 years ago • 5 comments

Issue

Terra validators disabled IBC by force closing channel-1 and channel-49 using #761 as a stop-gap solution to preventing Impermanent Loss on UST and LUNA pools on Osmosis and other IBC DEXs.

Unfortunately, this also prevents UST and LUNA from transferring between chains. Currently, about 154.7M UST is stuck in Osmosis alone.

Since the LFG and TFL teams has been radio-silent on this issues, I'm here pleading to the devs to come up a plan.

I can help lead the effort with a PR and do other necessary work once I have some clarity on what is needed. The discussion so far has primarily been on this Twitter thread so moving it here to have a more optimal discussion.

Questions / Assumptions

  • As I understand, these clients are not expired and do not need a governance proposal (as per this tweet). Setting the closed channels' to channel.State = ibcchanneltypes.OPEN will re-open the channels (per this tweet).
  • All MsgChannelCloseConfirms should be rejected so that the channel does get closed again partway through the process. (ref tweet)
  • The clients should be kept updated so they don't expire before this channel is reopened, otherwise we would need to use the governance proposal method too.
  • Once we have these a chain upgrade should suffice?

gosuri avatar May 18 '22 19:05 gosuri

Once we have these a chain upgrade should suffice?

Why is a chain upgrade necessary?


Here are some notes from looking into it earlier.

  • The channel / connection / client stack for Terra's channel-1 are as follows:

hermes query channel ends columbus-5 transfer channel-1

Success: ChannelEndsSummary {
    chain_id: ChainId {
        id: "columbus-5",
        version: 5,
    },
    client_id: ClientId(
        "07-tendermint-12",
    ),
    connection_id: ConnectionId(
        "connection-11",
    ),
    channel_id: ChannelId(
        "channel-1",
    ),
    port_id: PortId(
        "transfer",
    ),
    counterparty_chain_id: ChainId {
        id: "osmosis-1",
        version: 1,
    },
    counterparty_client_id: ClientId(
        "07-tendermint-1549",
    ),
    counterparty_connection_id: ConnectionId(
        "connection-1215",
    ),
    counterparty_channel_id: ChannelId(
        "channel-72",
    ),
    counterparty_port_id: PortId(
        "transfer",
    ),
}
  • The channel-72 on Osmosis-1 is Open

hermes query channel end osmosis-1 transfer channel-72

Success: ChannelEnd {
    state: Open,
    ordering: Unordered,
    remote: Counterparty {
        port_id: PortId(
            "transfer",
        ),
        channel_id: Some(
            ChannelId(
                "channel-1",
            ),
        ),
    },
    connection_hops: [
        ConnectionId(
            "connection-1215",
        ),
    ],
    version: Version(
        "ics20-1",
    ),
}
  • The client on Terra is "07-tendermint-12" and has a trusting period of 10days.
    • The client was last updated with header height 4368847 from 6 days ago, so there's ~4 days left to refresh it before it expires

hermes query client state columbus-5 07-tendermint-12

Success: Tendermint(
    ClientState {
        chain_id: ChainId {
            id: "osmosis-1",
            version: 1,
        },
        trust_level: TrustThreshold {
            numerator: 1,
            denominator: 3,
        },
        trusting_period: 864000s,
        unbonding_period: 1209600s,
        max_clock_drift: 15s,
        latest_height: Height {
            revision: 1,
            height: 4368847,
        },
        proof_specs: ProofSpecs...
        upgrade_path: ..
        allow_update: AllowUpdate {
            after_expiry: true,
            after_misbehaviour: true,
        },
        frozen_height: None,
    },
)
  • The client on Osmosis is "07-tendermint-1549" and has a trusting period of 14 days.
    • The client was last updated with header height 7688265 from today, so no worries about client expiration here

hermes query client state osmosis-1 07-tendermint-1549

Success: Tendermint(
    ClientState {
        chain_id: ChainId {
            id: "columbus-5",
            version: 5,
        },
        trust_level: TrustThreshold {
            numerator: 1,
            denominator: 3,
        },
        trusting_period: 1209600s,
        unbonding_period: 1814400s,
        max_clock_drift: 5s,
        latest_height: Height {
            revision: 5,
            height: 7688265,
        },
        proof_specs: ...
        upgrade_path: ...
        allow_update: AllowUpdate {
            after_expiry: true,
            after_misbehaviour: true,
        },
        frozen_height: None,
    },
)

adizere avatar May 19 '22 08:05 adizere

any updates on this? It seems that IBCs are still off in Classic, but in the new chain there were enabled immediately. This is wrong as in classic chain they are actually needed and used on the other hand in terra 2 there is not much to bridge yet.

pteczar avatar May 30 '22 19:05 pteczar

Any updates on this issue? The IBC between Terra and Osmosis is closed for a month. Some people cannot collect their asset pending on IBC bridge. We hope it will be enabled.

0xAjin avatar Jun 07 '22 01:06 0xAjin

https://cosmosrun.info/terra-phoenix-1/gov/349

adizere avatar Jun 07 '22 08:06 adizere

We hope this proposal will be implemented regardless of the result of the vote on the new platform. We believe that no matter how much Terra is discredited by stable coin depeg, Terra community remains in true decentralized governance. https://station.terra.money/proposal/1299

0xAjin avatar Jun 07 '22 08:06 0xAjin