Lido on Cosmos: Initial Deployment

Related to Interchain Liquidity for stTokens.

Summary

Axelar and Hadron Labs are collaboratively bridging wstETH to the Cosmos ecosystem.

The bridge implementation is designed to allow the eventual transfer of ownership of the bridge mechanism to the DAO’s Aragon smart-contract, and to prevent the challenges that uncoordinated bridging to the Cosmos ecosystem could result in.

This post summarises the bridge implementation and roadmap. High level implementation strategy for wstETH in Cosmos will be shared subsquently.

Problem statement

Mounting demand for wstETH in Cosmos has been demonstrated by numerous parallel initiatives to bridge the token into the ecosystem. To mention a few:

  • Canto bridged wstETH to its ecosystem via custom fork of the Gravity Bridge,
  • Injective had plans to bridge wstETH to Cosmos via Wormhole,
  • Osmosis and Axelar had plans to bridge wstETH to Cosmos via Axelar.

These demonstrate strong demand for the asset. Nevertheless, left unattended, the resulting uncoordinated bridging outcomes would have present the following long-term issues for wstETH and Lido in Cosmos:

  • Vendor lock-in: Migrating to another provider or a different solution a posteriori would generate additional risk and overhead,
  • Liquidity fragmentation: denominations being issued by third party bridges would not be fungible with one another, and neither would IBC denominations issued on different chains,
  • Technical debt: additional features and upgrades would depend on the goodwill or the various bridge providers and could have led to duplicate work being required to release gas-less bridging or native staking, for example.
  • Uneven security: bridges vary wildly in security model and assumptions. Uncoordinated bridging outcomes could have heightened the risk of exploits and loss.

Solution

To alleviate the concerns with uncoordinated bridging outcomes, Lido Protocol Relations contributors and Hadron Labs (a core contributor to Neutron) collaboratively carried out the following steps:

  1. Negotiated with Osmosis and Injective to pause uncoordinated bridging attempts
  2. Identified bridge providers and solicited proposals
  3. Conducted and gathered assessments of the bridge providers
  4. Reached out to DeFi projects and put together an integration roadmap
  5. Collaborated on defining redlines and a multi-bridge solution spec
  6. Gathered supporting economic commitments from bridge providers@

This document outlines the results of this process, which includes the deployment of an initial bridge mechanism to satisfy the urgent demand in the ecosystem and maintain security and optionality for the DAO.

This initial bridge mechanism relies on an established bridging provider, Axelar, and a “wrapper contract” which enshrines a unique denomination for wstETH in Cosmos regardless of what mechanism is used in the backend to enable the bridging of the asset between ecosystems. This contract will initially be owned by a multisig of Cosmos ecosystem contributors, until the contract’s ownership can be transferred to the Lido DAO’s Aragon smart-contracts on Ethereum, once cross-chain governance has been implemented.

The wrapper contract also enables bridge providers to be added, removed or replaced upon request of the Lido DAO in order to adhere to its security criteria and long-term bridging vision, while avoiding liquidity fragmentation and technical debt.

To ensure this denomination is recognized as the canonical denomination and serves as the shelling point for wstETH integrations and liquidity in the Cosmos ecosystem, Axelar and Hadron Labs will be collaborating to drive and incentivize the adoption of the token.

Timeline

Hadron Labs believes the following tentative timeline to be realistic:

Sept. 2023:

  1. Initial bridge Launch

H1 2024:

  1. Cross-chain governance implementation
  2. Multi-bridge implementation

Technical Implementation

The initial bridge implementation comprises two components: the Axelar network and a dedicated wrapper contract deployed on Neutron.

Axelar Network

Axelar is a full-stack decentralised transport layer, governed by permissionless PoS consensus. It provides universal composability of programs with any-to-any cross-chain capability. Users access consolidated pools of liquidity. Developers do not need to speak any custom language; they do not need to make any changes to their chains or UIs.

The Axelar Network has three key components across two functional layers.

  • The first is the actual network itself, composed of a set of validators that are responsible for maintaining the network and executing transactions. The validators run the cross-chain gateway protocol, which is a multi-party cryptography overlay that sits on top of a Layer 1 blockchain. They are responsible for performing read-and-write operations to gateway accounts deployed on connected external chains, voting, and attesting to events on those chains.
  • The second are the gateways, which are effectively smart contracts that provide the connectivity between the Axelar Network and its interconnected external chains. Validators monitor gateways for incoming transactions, which the validators READ. They then come to a consensus on the validity of that transaction and, once agreed, they WRITE to the destination chain’s gateway to execute the cross-chain transaction. The funds are sent to a generated address on the source chain and are locked, and a corresponding asset is minted on the destination chain. The validators and gateways compose the core infrastructure layer.
  • Sitting on top of the validators and gateways are the APIs that enable developers to access the tools and infrastructure enabled by those validators and gateways. This is the application-development layer that applications will interact with to go cross-chain. It uses the underlying core infrastructure layer to pass customizable, generalised messages across chains. These APIs are how developers can easily lock, unlock and transfer assets between any two addresses on any two blockchain platforms, execute cross-chain application triggers, and more generally handle any cross-chain requests.

Useful links

Security Considerations

  • Axelar Admin multisig: The former admin multisig is being deprecated, and replaced with validator voting for all upgrades. The new implementation has been audited, and is planned to go live by the end of August. The code for the governance implementation slated to replace the former admin multisig can be found here.
  • AXL token

External Diligence reports

Wrapper Contract

The purpose of the wrapper contract is to serve as a bridge agnostic anchor for the wstETH denomination in Cosmos. It allows bridge providers to be swapped in and out without needing to deploy swap contracts or rebuild liquidity.

Initially, the contract will be owned on behalf of the Lido DAO by a multisig of Cosmos contributors. The multisig is expected to be deprecated in favour of the Aragon smart-contracts of the Lido DAO once cross-chain governance is implemented, tested and audited.

Individual Project Address
Kai Tyurin Hadron Labs neutron1tkavhfqt8358vl74z7r5kdkdy05s98yka0gl0t
Avril Dutheil Neutron Foundation neutron1yycmdn4t5gmzfddtsle2xurd3x30h4crz02j9x
Georgios Axelar neutron1pymharqxfutl5ncpxe8hghpsz4y39jxl8wlfd0
Robinson Burkey Wormhole neutron17venextdsudmg96v8kp70c83zlk25y9cwqlwv2
Mirza Uddin Injective neutron1gdzdhhndw5jsdvt8cdzk2xuy0w4nprrp5lwppp

In the future, once available, the contract may be upgraded into a multi-bridge solution without changing the denomination. This would provide better security guarantees than any single bridge provider and would make the setup resistant to the failure of a portion of the bridges.

Useful links

13 Likes

Hi everyone, I’m Georgios Vlachos, representing Axelar Foundation. We are thrilled to support Lido’s expansion across ecosystems!

To demonstrate our commitment and long term alignment with the Lido community, and support the growth of wstETH and other stAssets across chains, Axelar Foundation will commit a total of 10,000,000 AXL (1% of genesis supply, $3.35m at current price). These AXL tokens should be utilized for the following intended purposes over the course of multiple years:

  1. To support the adoption of wstETH and wstETH-based DeFi on Neutron
  2. To support the adoption of wstETH and wstETH-based DeFi across the larger Cosmos ecosystem
  3. To support the adoption of any stAssets issued by Lido Protocol on any chains where Lido DAO has sanctioned Axelar to provide bridging products or services to users.

The 10M committed AXL tokens are allocated as follows.

  1. Productive AXL Deployment on Neutron

1,000,000 AXL (10%) will go towards liquidity mining incentives on Neutron. These tokens will be paired with NTRN tokens from LiquidSig and provided as AXL-NTRN liquidity on Astroport. The resulting LP tokens would become available to be distributed as incentives linearly over the following twelve (12) months.

  1. Ecosystem partner allocations

1,000,000 AXL (10%) will go towards liquidity mining incentives on Osmosis and Injective each (for a total of 2,000,000 AXL (20%)) over the next twenty-four (24) months.

  1. Other ecosystems

5,000,000 AXL (50%) will go towards liquidity mining incentives on other mutually agreed upon chains where Axelar is chosen by Lido as the bridge for the wstETH asset. In addition, if this condition is met, a further 2,000,000 AXL tokens will be allocated to be distributed on Neutron over the following 12 months period. These incentives will be emitted so long as Axelar remains the bridge solution enabled by the Lido DAO on a given, mutually agreed upon chain.

For these allocations, incentivized pairs should include wstETH-ETH, wstETH-Stablecoin and other jointly agreed upon pools.

8 Likes

Well received - the allocations will be made shortly

Hi everyone. This is Achilleas from Injective Labs and we are excited to be growing usage for stETH across the Injective and broader Cosmos ecosystem.

The recipient address will be neutron1gdzdhhndw5jsdvt8cdzk2xuy0w4nprrp5lwppp

The community is planning to launch a number of campaigns over the specified period using the rewards distributed, including trading competitions on DEXs built on Injective, LP rewards on protocols and much more.

Hi everyone,
The Osmosis portion of this is being received to neutron1k7ehz7s84k03ghr2ea06jlmteju74pg4zrcj8q

These incentives will be used to incentivize initial liquidity on Osmosis in a Supercharged wstETH/ETH pool.
Incentives may be used for other campaigns relating to the adoption of wstETH on Osmosis and encouraging the formation of a solid liquidity base for Osmosis applications and the wider Cosmos ecosystem.

3 Likes

Following the initial deployment and operation of the Lido on Cosmos initiative, we are providing an update on the current status of the project and a proposal for its long-term future.

Background & Current Status
As a reminder, this initiative established the canonical wstETH across the Interchain ecosystem (including Neutron, Osmosis, Injective and other networks). The architecture utilized a “Satellite” contract on Neutron to wrap and unwrap Axelar-bridged wstETH. This specific design was chosen to prevent vendor lock-in with a single bridge provider, intended as a stepping stone toward a more robust multi-bridge setup.

While the bridge launched successfully and incentives were distributed across partner chains as planned, the initiative has faced significant headwinds. Despite coordinated efforts from various ecosystem partners, wstETH did not achieve the desired level of traction. Furthermore, the Interchain ecosystem as a whole has seen continued contraction in market size over the past years.

Changes to the Neutron Landscape
Recently, Neutron announced a transition to long-term maintenance mode. While this does not present an immediate threat to the bridge—as the maintenance period extends until June 30, 2026, and the network is expected to function beyond that date—it does introduce long-term risk to the canonical denomination.

Proposal: Deprecation of the Initiative
Given the lack of market traction and the changing long-term outlook for the underlying infrastructure, we propose to sunset this initiative and deprecate the Lido Satellite contract. The wind-down will be managed as follows:

  1. “Unwrap Only” Mode: The Lido Satellite contract on Neutron will be upgraded to “unwrap only” mode. This ensures that users can always redeem the underlying axl.wstETH, but no new canonical wstETH can be minted.

  2. Skip Go Integration: We are coordinating with Skip Go (the primary aggregator/router for most Interchain swap/bridge UIs) to support this updated contract. Skip will help mark the canonical version as deprecated and route users toward unwrapping when bridging back to Ethereum or other networks.

  3. UI Support: The native Neutron bridge UI (app.neutron.org/bridge) will support these withdrawal functions until at least June 30, 2026. However, because of the Skip API integration, a dedicated UI is not strictly necessary; any front-end integrated with Skip will be able to facilitate these withdrawals.

  4. Supply Contraction: We expect the canonical supply to shrink over time. Users will have the choice to either bridge back to Ethereum or convert to unwrapped assets (like axlWSTETH) to continue participating in Interchain DeFi without reliance on the Satellite contract.

Next Steps & Support Our priority is a smooth transition for users and partners. We will provide:

  • Technical Assistance: Direct support for any project or partner that integrated wstETH to help guide their communities through the unwinding of positions.

  • Documentation: Clear, written guides for users on how to unwrap and migrate their assets simply.

We want to thank everyone at Lido, Osmosis, Injective, and Axelar for their collaboration throughout this deployment. We remain committed to ensuring that the exit process is handled with the same level of care as the launch.

We welcome any questions or feedback from the DAO and the community below.

2 Likes

Following Neutron’s transition to long-term maintenance mode, the initial deployment is being deprecated.

For users still looking to withdraw their positions, you can refer to the manual withdrawal guide below:

This guide explains how to move wstETH held on Neutron back to native wstETH on Ethereum.
It covers the on-chain “unwrap” step against the Lido Satellite contract and the bridging step
back to Ethereum.

TL;DR — There are two steps:

  1. Unwrap your canonical Neutron wstETH by sending it to the Lido Satellite contract with a burn message. You get back the Axelar-bridged wstETH (wstETH.axl).
  2. Bridge that wstETH.axl from Neutron to Ethereum with Squid Router, which delivers native wstETH to your Ethereum address.

Background: which wstETH are you holding?

wstETH was brought to Neutron by Lido, Axelar and Neutron. On Neutron there are two
representations
of the same underlying asset:

Representation What it is Denom on Neutron
Axelar-bridged wstETH (wstETH.axl) The raw token that arrives over the Axelar → Neutron IBC channel An ibc/... denom
Canonical wstETH A single, interoperable token minted 1:1 by the Lido Satellite contract so that DeFi on Neutron only ever deals with one denom factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH

The Lido Satellite contract is a thin wrapper:

  • mint — send it Axelar-bridged wstETH, receive canonical wstETH (this is how you got your
    Neutron wstETH in the first place).
  • burn — send it canonical wstETH, it burns it and returns the Axelar-bridged wstETH to you.
    This burn is the “unwrap”.

Almost everything you hold and use on Neutron (wallets, DEXs, LSTs) is the canonical denom, so
you will almost certainly need the unwrap step before you can bridge out.

As part of the transition to long-term maintenance, Solva took over infrastructure and security maintenance. You can find the endpoints they maintain below:
→ Solva’s Infrastructure Transition Guide


The withdrawal path at a glance

[Canonical wstETH on Neutron]
        │   Step 1: burn / "unwrap" on Lido Satellite
        ▼
[Axelar-bridged wstETH.axl on Neutron]
        │   Step 2: Squid Router (Neutron → Ethereum)
        ▼
[Native wstETH on Ethereum]


Step 1 — Unwrap (burn) on Neutron

What this does

You send your canonical factory/…/wstETH to the Lido Satellite contract with a burn message.
The contract burns it and, in the same transaction, sends you back the equivalent amount of the
Axelar-bridged wstETH (wstETH.axl). By default the tokens are returned to the sender; you can
optionally direct them to another Neutron address.

Prerequisites

  • A Neutron wallet holding the canonical wstETH and a small amount of NTRN for gas.
  • Either the neutrond CLI with your key imported, or a browser
    wallet (Keplr/Leap) for the GUI alternative below.

(Recommended) Confirm the current denoms first

Contracts and denoms can change through governance, so it’s worth confirming the live values before you send funds. Query the contract’s config:

neutrond query wasm contract-state smart \
  neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry \
  '{"config":{}}' \
  --node <RPC_ENDPOINT> --output json

This returns both canonical_denom (what you send) and bridged_denom (the wstETH.axl you’ll
receive). Use these exact strings in the steps below.

Check your exact balance

burn unwraps whatever canonical wstETH you attach to the transaction, so first find your exact
base-unit balance:

neutrond query bank balances <YOUR_NEUTRON_ADDRESS> \
  --node <RPC_ENDPOINT> --output json

Look for the entry whose denom is
factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH
and note the integer amount.

Decimals matter. The amount is in the token’s smallest unit. Copy the raw integer from the
balance query rather than typing a human-readable figure — this avoids off-by-many-decimals mistakes.

CLI: run the unwrap

neutrond tx wasm execute \
  neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry \
  '{"burn":{}}' \
  --amount <AMOUNT>factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH \
  --from <YOUR_KEY_NAME> \
  --chain-id neutron-1 \
  --node <RPC_ENDPOINT> \
  --gas auto \
  --gas-adjustment 1.4 \
  --gas-prices 0.05untrn \
  -y

Notes:

  • Replace <AMOUNT> with the raw integer from your balance query (e.g. to unwrap 1500000000000000000
    base units, -amount 1500000000000000000factory/neutron1ug740…/wstETH). There is no space
    between the amount and the denom.
  • The canonical wstETH goes in -amount (it becomes the contract’s funds). Gas is paid
    separately via -gas-prices, so it is not part of the funds you send. Do not attach any
    other coin in -amount — the contract rejects transactions carrying extra funds.
  • To send the unwrapped tokens to a different Neutron address, use
    '{"burn":{"receiver":"neutron1..."}}' instead of '{"burn":{}}'.
  • Public RPC endpoints change over time; pick a current one from the Neutron docs or a provider (e.g. Polkachu, Cosmos Directory) for <RPC_ENDPOINT>.

After it confirms, your balance query will show the Axelar-bridged wstETH (ibc/…, i.e.
wstETH.axl) in place of the canonical denom.

GUI alternative (no CLI)

Most of the original Lido/Neutron bridge front-ends are no longer running, but you can still execute the burn from a browser:

  1. Open the contract on Celatone:
    neutron.celat.one/neutron-1/contracts/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry
  2. Go to the Execute tab and connect Keplr or Leap.
  3. Set the message to {"burn":{}}.
  4. Attach funds: add the canonical denom
    factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH
    with the amount you want to unwrap.
  5. Submit and sign in your wallet.

This does exactly the same thing as the CLI command.

If Celatone does not work, the same method functions with Mintscan.io and any other explorer that allows for contract execution.


Step 2 — Bridge to Ethereum with Squid Router

Once you hold the Axelar-bridged wstETH.axl on Neutron, use Squid Router to bridge it to
Ethereum. Squid still supports Neutron (neutron-1) and routes through Axelar back to Ethereum, delivering native wstETH on the destination.

Use this pre-filled link:

app.squidrouter.com/?fromChain=neutron&toChain=ethereum&fromToken=wsteth.axl&toToken=wsteth

Steps:

  1. Open the link. Source is preset to Neutron / wstETH.axl, destination to Ethereum / wstETH.
  2. Connect your Neutron wallet (Keplr/Leap) as the source and enter/confirm your Ethereum
    destination address
    .
  3. Enter the amount, review the quote, fees and estimated received amount, then confirm.
  4. Sign the transaction(s) in your wallet and wait for Axelar to relay. Cross-chain settlement
    usually completes in minutes; keep the Squid tab open until it reports completion.

Things to check before confirming:

  • Destination address. Make sure the Ethereum address is one you control (e.g. your MetaMask account).
  • Fees / gas. Squid quotes the bridge and gas costs and deducts them from the transfer; review the “you receive” figure. You generally do not need ETH pre-funded on the destination for the bridge itself, but you will need ETH for any later Ethereum transactions.
  • Slippage. For larger amounts, check the route and price impact, since the final leg may involve a swap from Axelar-wrapped wstETH into native wstETH.
  • Amount available. Bridge the wstETH.axl you received in Step 1, leaving a little NTRN for the source-chain gas.

Notes, caveats and troubleshooting

  • Do I have to unwrap? If a tool already shows your balance as wstETH.axl (the ibc/… denom), you can skip Step 1 and go straight to Squid. If your balance is the factory/…/wstETH canonical denom (the common case), you must unwrap first — Squid’s fromToken=wsteth.axl refers to the Axelar-bridged denom, not the canonical one.
  • “Nothing to burn” / extra-funds errors. These come from attaching the wrong denom or an extra coin in -amount. Attach only the canonical wstETH denom, and pay gas via -gas-prices.
  • This flow is for withdrawal only. The Ethereum-side GMP Helper
    (0x8A5fcd88B4aC70A1939955fAeA4E12bd0C7B1237) exists to simplify deposits (Ethereum → Neutron) and is not used for withdrawing.
  • Final redemption to ETH. Squid gives you wstETH on Ethereum. If you ultimately want ETH, you can unwrap wstETH → stETH and redeem via Lido, or swap on any Ethereum DEX — that’s a separate, standard Ethereum step.
  • Verify addresses. Always cross-check the Lido Satellite address and denoms against the current Neutron mainnet contracts page before moving funds.

Reference

Item Value
Lido Satellite (neutron-1) neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry
Lido Satellite code ID 233
Canonical wstETH denom factory/neutron1ug740qrkquxzrk2hh29qrlx3sktkfml3je7juusc2te7xmvsscns0n2wry/wstETH
Axelar-bridged denom (wstETH.axl) ibc/… — read it from the contract’s config query (bridged_denom)
Unwrap message {"burn":{}} (optional {"burn":{"receiver":"neutron1…"}})
GMP Helper (Ethereum, deposits only) 0x8A5fcd88B4aC70A1939955fAeA4E12bd0C7B1237
Squid withdrawal link https://app.squidrouter.com/?fromChain=neutron&toChain=ethereum&fromToken=wsteth.axl&toToken=wsteth

Sources: Lido Satellite contract source (msg.rs, execute.rs), the Neutron mainnet contracts
list, and Squid’s supported-chains documentation.

1 Like