Lux Docs
Liquid

Liquid Tokens

LETH, LBTC, and LUSD -- yield-bearing bridge tokens with flash loan support

Each liquid token wraps an external asset (ETH, BTC, or stablecoins) as an LRC20B bridge token with ERC-3156 flash loan capabilities. Minting and burning are restricted to whitelisted addresses.

Token Details

TokenNameUnderlyingContract
LETHLiquid ETHETHLuxETH extends LRC20B
LBTCLiquid BTCBTCLuxBTC extends LRC20B
LUSDLiquid USDUSDC/USDTLuxUSD extends LRC20B

All 32+ liquid tokens live in contracts/liquid/tokens/ and share the same base contract.

Minting and Redeeming

Only whitelisted addresses (vaults, bridges) can mint or burn liquid tokens.

// Whitelisted minter (vault or bridge)
liquidToken.mint(recipient, amount);

// Any holder can burn their own tokens
liquidToken.burn(amount);

// Burn from another account (requires approval)
liquidToken.burnFrom(account, amount);

Whitelisting is managed by the ADMIN_ROLE. The SENTINEL_ROLE can pause individual minters or remove them from the whitelist immediately.

Flash Loans (ERC-3156)

Every liquid token is an ERC-3156 flash lender. Borrowers receive minted tokens within a single transaction and must repay the principal plus a fee.

// Query max flash loan
uint256 max = liquidToken.maxFlashLoan(address(liquidToken));

// Query fee for 1000 tokens
uint256 fee = liquidToken.flashFee(address(liquidToken), 1000e18);

// Execute flash loan
liquidToken.flashLoan(borrower, address(liquidToken), amount, data);
ParameterRange
Flash fee1 - 10,000 basis points (minimum 1 bp enforced)
Max flash loanConfigurable by admin
Fee recipientConfigurable address

Yield Accrual

Liquid tokens do not rebase. Yield accrues to the protocol via flash loan fees and bridge fees, which flow into the xLUX vault through the FeeSplitter. Holders benefit indirectly when they also hold xLUX.

Access Control

RolePermissions
ADMIN_ROLEWhitelist minters, set flash fee, set fee recipient
SENTINEL_ROLEPause minters, remove from whitelist (emergency)

On this page