Skip to Content

BTC Stake

The BTC Stake action converts native Bitcoin into LBTC on an EVM chain. Users deposit BTC to a generated address, and LBTC is minted on their chosen destination chain after confirmations.


Basic Usage

import { createLombardSDK, Chain, AssetId } from '@lombard.finance/sdk'; import { config } from './lib/lombard'; const sdk = createLombardSDK(config); const stake = sdk.chain.btc.stake({ destChain: Chain.ETHEREUM, assetOut: AssetId.LBTC, }); await stake.prepare({ amount: '0.1', recipient: '0x1234567890abcdef1234567890abcdef12345678', }); await stake.authorize(); const depositAddress = await stake.generateDepositAddress(); // depositAddress: 'bc1q...'

Parameters

Stake Options

ParameterTypeRequiredDescription
destChainChainYesTarget blockchain for LBTC
assetOutAssetIdYesMust be AssetId.LBTC
sourceChainChainNoBitcoin network (mainnet or signet)

Prepare Parameters

ParameterTypeRequiredDescription
amountstringYesBTC quantity
recipientstringYesEVM wallet address for LBTC
referralCodestringNoReferral tracking identifier

Status Flows

Ethereum Mainnet:

IDLE → NEEDS_FEE_AUTHORIZATION → READY → ADDRESS_READY

Other EVM Chains (Base, Arbitrum, etc.):

IDLE → NEEDS_ADDRESS_CONFIRMATION → READY → ADDRESS_READY

With Referral Code

await stake.prepare({ amount: '0.1', recipient: '0x1234567890abcdef1234567890abcdef12345678', referralCode: 'PARTNER123', });

Event Handling

import { StakeEvent } from '@lombard.finance/sdk'; stake.on(StakeEvent.StatusChange, (status) => { console.log('Status:', status); }); stake.on(StakeEvent.Progress, (progress) => { console.log('Confirmations:', progress.confirmations, '/', progress.requiredConfirmations); }); stake.on(StakeEvent.Completed, () => { console.log('LBTC minted successfully!'); }); stake.on(StakeEvent.Error, (error) => { console.error('Error:', error.code, error.message); });

Error Handling

import { isLombardError } from '@lombard.finance/sdk'; try { await stake.authorize(); } catch (error) { if (isLombardError(error) && error.code === 'user-rejected') { console.log('User cancelled signing'); } }
Last updated on