How LTCVM works
LTCVM is a Litecoin-compatible chain running on Metal Blockchain, joined to Litecoin by a one-for-one LTC bridge. This page covers how LTC moves, what it costs, and what you're trusting.
The chain
LTCVM uses Litecoin's transaction format, script language and address formats, with SegWit and Taproot active from its first block, and standard relay rules, except that a payment costs 1 litoshi and there is no dust limit. It runs as its own Layer 1 on Metal Blockchain, whose Snowman consensus makes a transaction final as soon as it is in a block, typically within a couple of seconds. There are no reorganisations to wait out, and no mining: LTC exists on LTCVM only through the bridge's peg reserve. MWEB, Litecoin's private extension block, isn't part of LTCVM.
A key has the same address on Litecoin and on LTCVM, whatever the address type: L…, M…, ltc1q… or ltc1p…. The wallets use native SegWit (ltc1q…) addresses. The two balances are separate: coins on one network move to the other only through the bridge.
The web wallet pays ltc1…, L… and M… addresses. It refuses MWEB addresses (ltcmweb1…), which neither LTCVM nor the bridge can pay, and the older Bitcoin-style 3… form of a Litecoin P2SH address: ask for the M… form of the same address instead.
The bridge
Deposits: Litecoin to LTCVM
Every wallet gets its own Litecoin deposit address, an ltc1q… address. Its script names your LTCVM address and is spendable only by the peg signers, so the bridge knows who to credit and nobody else can move the coins. Your wallet derives this address itself from the signers' public keys and refuses to show one that doesn't match. Once Litecoin has confirmed it enough for its size (…), the same amount, less the bridge fee, is released to you on LTCVM from the peg reserve.
The web wallet can make the deposit for you from your Litecoin balance. You can also send to your deposit address from any Litecoin wallet or exchange.
From MWEB. A deposit can also be paid from MWEB coins. Litecoin lets such a payment be spent only once it has 6 confirmations, and a deep reorganisation could move it, so it's credited only after the full confirmation count (12 on mainnet), whatever its size. Its sender is private, so if it ever has to be refunded, the refund needs a Litecoin address from you.
Withdrawals: LTCVM to Litecoin
A withdrawal sends LTC back to the peg reserve with a note naming a Litecoin address. Once it's final on LTCVM, the signers pay that address from the LTC locked on Litecoin, less the Litecoin network fee at Litecoin's current fee rate. Litecoin nodes don't accept replacement transactions by default, so a payout is never replaced. Instead, if one is still unconfirmed after 30 minutes and fees have risen, the bridge speeds it up with a child transaction (CPFP): it spends the payout's change back to the peg, with a fee high enough for miners to take both. The child's fee comes from the peg's surplus, not from your withdrawal, and the payout itself is unchanged, so the withdrawal can only be paid once.
Proof of reserves
Every LTC on LTCVM is backed by LTC locked on Litecoin. The explorer lists every locked output, each linked to a public Litecoin explorer, next to the amount circulating on LTCVM. The bridge refuses to move anything unless the locked LTC covers what circulates plus what's pending.
Fees, limits and timings
Live from the bridge:
- Confirmations before a deposit is credited
- …. A Litecoin block comes about every 2.5 minutes, at random; smaller deposits carry less risk, so they may wait less.
- Bridge fee on each deposit
- … LTC
- Litecoin network fee on each withdrawal
- about … LTC today, at … lit/vB; it follows Litecoin's fee rate
- Smallest deposit
- … LTC
- Largest deposit (beta)
- … LTC; larger ones are held for a refund
- Most LTC on LTCVM in total (beta)
- … LTC
- Smallest withdrawal
- … LTC
- Signers
- …
- Peg address on Litecoin
…
Sending on LTCVM costs 1 litoshi, whatever the amount, and is final within seconds. You can send as little as 1 litoshi. (One LTC is 100,000,000 litoshis.) A Litecoin block comes about every 2.5 minutes, at random, and a slow one can take much longer. A payment from the web wallet on Litecoin itself sends no output under 5,460 litoshis, so every output clears Litecoin's dust limit.
The site measures LTCVM's speed live. For every payment sent through this site, the bridge times how long it takes from receiving the payment to accepting the block that holds it. On LTCVM, an accepted block is final. It checks four times a second, so a figure can be up to a quarter of a second slow, never fast. The home page shows the median of the last 50 payments, and /api/status reports the median, the 90th percentile and the latest (finality).
Where fees go
In short: fees on LTCVM go to its validators, and the withdrawal fee goes to Litecoin's miners. The bridge keeps nothing.
| Fee | When you pay it | How much | Who gets it |
|---|---|---|---|
| Network fee | Any payment on LTCVM | 1 litoshi | The validator that built the block |
| Bridge fee | Each deposit | … LTC | The validator that built the block (it's the fee of the transaction that credits you) |
| Withdrawal fee | Each withdrawal | about … LTC today | Litecoin's miners (it pays for the payout on Litecoin) |
With several validators, each sets its own fee address. Metal takes turns choosing which validator proposes each block, weighted by stake, and that validator collects the fees in it. So fees spread across validators roughly in proportion to their stake. LTCVM only makes a block when there are payments, so a validator's share also depends on traffic. The beta starts with one validator.
Litecoin vs LTCVM vs Lightning
| Litecoin | LTCVM | Lightning | |
|---|---|---|---|
| Smallest payment | About 2,940–5,460 litoshis, by address type (the dust limit) | 1 litoshi | 1 litoshi (thousandths inside channels) |
| Fee for a payment | A few hundred to a few thousand litoshis, at 1–10 lit/vB | 1 litoshi, whatever the amount | Often 0–1 litoshi plus a small share of the amount, depending on the route |
| Final after | About 2.5 minutes per block; 15 minutes for 6 confirmations | 1–2 seconds on Metal Blockchain, and can't be reversed | Seconds, if a route is found |
| Setup | None | None: ordinary Litecoin addresses, and the receiver can be offline | Channels and liquidity; the receiver must be online |
| Privacy | Public by default; MWEB, Litecoin's optional extension block, hides amounts and addresses | Public, like an ordinary Litecoin payment; no MWEB | Off chain; seen by the nodes on the route |
| Who holds the LTC | You | You on LTCVM; the LTC behind it is locked on Litecoin under the peg signers (2 of 3) | You, in channels |
Litecoin fees rise when blocks are full, and Lightning fees depend on the route and the wallet; the figures are typical.
No fee is destroyed or leaves the peg. Fees paid on LTCVM stay there as ordinary LTC, backed by LTC locked on Litecoin like any other. The bridge's signers aren't paid from fees yet.
Trust and limits
Beta, with real LTC. The bridge is new and hasn't had an external audit. Keep amounts small.
- Custody. The LTC locked on Litecoin and the reserve on LTCVM are held by a 2-of-3 multisig of peg signers. Any two of them could move it. The signers are separate services, but they run on one server, and their keys aren't yet held by independent operators; bringing operators in is the next phase of the roadmap, and the software and setup ceremony for it are built.
- What the signers check. Each signer checks every transaction against its own view of both chains, and signs only what is owed, exactly as it would build it.
- Caps. During the beta, deposits and the total on LTCVM can be capped, so the amount at risk is known in advance.
- Pause. The bridge can be paused in an emergency: nothing is signed or paid, and the site shows why. Deposits and withdrawals made while paused are processed after it resumes.
- Refunds. A deposit that can't be credited, for example one over the beta limit, is held on Litecoin and can be refunded. A deposit from MWEB is refunded to an address you give, since its sender is private.
- Backups. The bridge's keys and settings are backed up daily, encrypted to a key held off the server, and a backup can be restored and checked against the live keys.
Wallets
In the browser. The bridge page is a wallet: your key is made in the browser and never leaves it. Protect it with a passkey, for example one saved in a password manager, and opening the wallet takes the passkey. Passkey protection needs a passkey provider that supports the PRF extension; older security keys don't. Every coin a payment spends is checked against the raw transaction that created it, so the server can't inflate a fee. Before anything is signed, the wallet shows what the payment does (who's paid, the change back to you, a withdrawal's Litecoin address, and the fee), read from the transaction itself, and signs only once you confirm. Amounts can be shown in LTC, litoshis or US dollars; the dollar price comes from litecoinspace.org.
On a Mac. A Mac app is being prepared for its first release: the key encrypted to the Mac's Secure Enclave, Touch ID for every payment, and import from a Litecoin Core wallet.dat, whose keys are read on the Mac and never sent anywhere.
The web wallet is open source, in the LTCVM repository (cmd/ltcvm/web).
Whichever you use, back up your key. It's your wallet on both networks, and without it the LTC can't be recovered.
For developers
The bridge serves a JSON API at this site, used by both wallets:
GET /api/info network, fees, limits and signers
GET /api/status both chains' heights, sync, the peg audit
GET /api/reserves every locked output on Litecoin
GET /api/activity recent deposits and withdrawals
GET /api/address/{address} LTCVM balance, outputs and history
GET /api/tx/{txid} an LTCVM transaction, described
GET /api/block/{height|hash} an LTCVM block
GET /api/deposits/{address} deposits for an LTCVM address
GET /api/pegout/{txid} a withdrawal's status
POST /api/deposit-address {"address": …}: your deposit address
POST /api/tx {"hex": …}: broadcast on LTCVM
GET /api/health checks, for uptime monitors
POST /api/ltc/watch {"address": …}: follow a Litecoin address
GET /api/ltc/address/{address} its Litecoin balance, coins and history
POST /api/ltc/import {"address": …, "txid": …}: add an older payment
GET /api/ltc/rawtx/{txid} a Litecoin transaction's bytes
POST /api/ltc/tx {"hex": …}: broadcast on Litecoin
POST /api/ltc/scan {"addresses": […]}: find coins (a job)
GET /api/ltc/scan/{id} that job's progress and coins found
Amounts are strings in LTC with eight decimal places, or whole litoshis where a field says so, so nothing is rounded. Fee rates are in litoshis per virtual byte.
The source, including the chain, the bridge, the web wallet and the deployment scripts, is on GitHub.
Security
Please report vulnerabilities privately through GitHub's security advisories, not in a public issue.