Liquid Staking via Polkadot.js
This section provides step-by-step instructions for staking and unstaking $EWT through the Liquid Staking Pallet using the Polkadot.js βExtrinsicsβ tab.
Liquid staking allows users to deposit $EWT into a pooled staking system and receive stEWT, a liquid, transferable voucher token that grows in value as staking rewards accumulate. The pallet manages all collator nominations automatically, no manual delegation is required.
Prerequisites
Before interacting with the liquid staking pallet, ensure:
You have a funded EWX account with enough $EWT to cover:
Your stake amount
Transaction fees
You have installed the Polkadot.js browser extension, or are using SubWallet / Nova Wallet / Ledger connected to Polkadot.js explorer.
You meet the minimum staking requirement (
MinStakingAmount).
Liquid Staking
Open Polkadot.js Apps connected to EWX
Open Polkadot JS App and navigate to EWX, or click here to open the URL with the public EWX endpoint.
In the Polkadot JS App go to Developer β Extrinsics.
Click Accounts β Accounts and confirm your account appears and shows your EWT balance.
Submit the Stake Extrinsic
In βsubmit the following extrinsicβ, select the pallet
liquidStakingand select the callstake(amount)Enter the amount of EWT to stake
Must be β₯
MinStakingAmountThe amount should be in Wei (1 EWT = 1 Γ 10^18 wei = 1000000000000000000)
Submit Transaction β Sign with your wallet

Unstaking
Unstaking via the Liquid Staking Pallet consits of two separate actions:
requestUnstakeβ burns stEWT and queues your unstake.claimUnstakeβ withdraws matured $EWT after the unbonding delay.
Note that the unstaking delay is dynamic. It is determined by both the queue length within the Liquid Staking Pallet and the unstaking delay enforced by the Parachain Staking Pallet, which serves as the minimum delay.
Request Unstake
Go to Developer β Extrinsics
Select the account holding stEWT
Select pallet β
liquidStakingSelect extrinsic β
requestUnstake(voucherAmount)Enter the amount of stEWT to redeem.
β₯
MinUnstakingAmount
Submit Transaction β Sign

Behind the scenes, the pallet burns stEWT and determines the amount of stEWT owed to the user via the stEWT : EWT exchange rate.
This $EWT amount is then added to the unstake queue to be processed during a later phase in the era, and an Unlock Chunk is created for the user. An Unlock Chunk records the amount of $EWT the user is owed and the era in which it will become claimable, it can be seen as an IOU mapped to each user.
Processing the Request
Towards the end of each era, the pallet batches unstake requests from the queue, selects a collator to unbond from, and submits a single unbond request to that collator. Each batched request updates the corresponding Unlock Chunks, assigning them a future era when the $EWT will become available after the unstaking delay.
After this unstaking delay has passed, the matured $EWT corresponding to these Unlock Chunks is transferred into the Unstaking Pot, where it becomes available for users to claim.
To query the Unstake Request:
Go to Developer β ChainState β Storage
Ensure "Include Option" is toggled on
Select the account holding stEWT
Select pallet β
liquidStakingSelect extrinsic β
claimableAmount(AccoundId32)Click "+" icon
Note the $EWT amount and era in which it can be claimed

Claim Unstake
Once an unstake request has been fully processed, matured, and funded in the Unstaking Pot, users can withdraw their $EWT.
Go to Developer β Extrinsics
Select the account holding stEWT
Select pallet β
liquidStakingSelect extrinsic β
claimUnstake()Submit Transaction β Sign
The pallet aggregates all Unlock Chunks for the account, the unstake fee is deducted from the balance and the remaining $EWT is transferred from the Unstaking Pot to the user's account and available as free balance, fully liquid.

Viewing Account Balances
Account balances of stEWT and other non-native assets cannot be viewed directly through the Accounts tab in Polkadot.js. Instead the user must query the chain state.
Go to Network β Assets
Take note of the MultiLocation for the stEWT asset
{"parents":0,"interior":{"x2":[{"palletInstance":60},{"generalIndex":1}]}}

Go to Developer β Chain state
Select pallet β
assetsSelect state query β
account(XcmV3MultiLocation, AccountId32)Input the MultiLocation details for stEWT
parents: 0Interior: X2Select
PalletInstancePalletInstance: 60Select
GeneralIndexGeneralIndex: 1
Select the address of the account
Or, toggle "include option" off to query the balance of all accounts holding the asset.

Transfering stEWT Between Accounts
Transferring stEWT between EWX accounts can be acheived simply through most wallet providers which support the stEWT asset, as one would transfer native $EWT.
Transferring can also be achieved via Polkadot.js, although requires several more steps.
Transferring stEWT via Polkadot.js
Go to Network β Assets
Take note of the MultiLocation for the stEWT asset
{"parents":0,"interior":{"x2":[{"palletInstance":60},{"generalIndex":1}]}}
Go to Developer β Extrinsics
Select pallet β
assetsSelect extrinsic β
approveTransfer(id, delegate, amount)Input the MultiLocation details for stEWT
parents: 0Interior: X2Select
PalletInstancePalletInstance: 60Select
GeneralIndexGeneralIndex: 1
Select the recipient address
Enter the amount of stEWT to transfer (in wei)
Submit Transaction β Sign

Go to Network β Explorer
Expand the assets.ApprovedTransfer event to find the submitted transfer

Last updated