This document describes possible approaches of bridging wstETH from Ethereum to Neutron
This feature is used under the hood of Axelar’s Satellite app. Axelar generates a deposit address on Ethereum, where you can send your tokens to with a simple transfer transaction. After transfer is complete, ibc denom (with some relaying fee deducted) will appear on target wallet on Neutron. After that, it is necessary to wrap bridged tokens into canonical ones using Lido Satellite contract.
It is unclear if reverse path is the same or not, since Axelar’s documentation about Cosmos is pretty scarce, and I couldn’t “reverse-engineer” it quickly because apparently IBC relayer between Axelar and Neutron testnets is down.
It is practically not very different from approach #1, instead of sending funds to some kind of deposit address, user has to go through these three steps manually:
sendToken("neutron", "neutron1…", "wsteth-wei", amount)
on Axelar’s Gateway contract, e.g. 0xe432150cce91c13a887f7D836923d5597adD8E31
on Goerli.In order to transfer funds back, user will have to:
axelar1dv4u5k73pzqrxlzujxg3qp8kvc3pje7jtdvu72npnt5zhq05ejcsn5qme5s
on Axelar network, all funds and fees are sent together with this IBC transfer. In order for Axelar to understand where these funds are to be routed further, a special memo should be crafted: GeneralMessage { "ethereum", <wstETH receiver on Ethereum>, <payload constructed of recipient address> }
. Please note that this is not the way a memo will look in real life, it has to be properly encoded.