Настройка приёма платежей в Litecoin
Litecoin — форк Bitcoin с меньшим временем блока (~2.5 мин vs 10 мин) и другими параметрами сети. Техническая интеграция практически идентична Bitcoin: те же HD-кошельки (BIP-32/44), те же типы адресов, та же UTXO-модель. Если у вас уже есть Bitcoin-интеграция, добавление Litecoin — это смена network параметров и нескольких констант.
Адреса и параметры сети
Litecoin поддерживает те же типы адресов, что и Bitcoin, но с другими префиксами:
| Тип | Litecoin формат | BIP-44 путь |
|---|---|---|
| P2PKH (Legacy) | L... или M... |
m/44'/2'/0' |
| P2SH-P2WPKH (Wrapped SegWit) | M... |
m/49'/2'/0' |
| P2WPKH (Native SegWit) | ltc1q... |
m/84'/2'/0' |
| P2TR (Taproot) | ltc1p... |
m/86'/2'/0' |
Coin type для Litecoin в BIP-44 — 2 (в отличие от Bitcoin — 0).
Реализация через bitcoinjs-lib
bitcoinjs-lib поддерживает Litecoin через кастомные network параметры — отдельной библиотеки не нужно:
import * as bitcoin from 'bitcoinjs-lib'
import { BIP32Factory } from 'bip32'
import * as ecc from 'tiny-secp256k1'
bitcoin.initEccLib(ecc)
const bip32 = BIP32Factory(ecc)
// Параметры сети Litecoin
const LITECOIN: bitcoin.Network = {
messagePrefix: '\x19Litecoin Signed Message:\n',
bech32: 'ltc', // префикс для Native SegWit адресов
bip32: {
public: 0x019da462, // Ltpv / Ltub
private: 0x019d9cfe,
},
pubKeyHash: 0x30, // адреса начинаются с 'L'
scriptHash: 0x32, // адреса начинаются с 'M'
wif: 0xb0,
}
const LITECOIN_TESTNET: bitcoin.Network = {
messagePrefix: '\x19Litecoin Signed Message:\n',
bech32: 'tltc',
bip32: {
public: 0x0436f6e1,
private: 0x0436ef7d,
},
pubKeyHash: 0x6f,
scriptHash: 0x3a,
wif: 0xef,
}
// Генерация Native SegWit адреса (ltc1q...)
function getLitecoinAddress(xpub: string, index: number): string {
const node = bip32.fromBase58(xpub, LITECOIN)
const child = node.derive(0).derive(index)
const { address } = bitcoin.payments.p2wpkh({
pubkey: Buffer.from(child.publicKey),
network: LITECOIN,
})
if (!address) throw new Error('Address derivation failed')
return address
}
Мониторинг транзакций
Для Litecoin доступны те же инструменты, что и для Bitcoin:
Собственная нода + electrs — предпочтительный вариант. electrs поддерживает Litecoin через флаг --network=litecoin. Litecoin Core скачивается и синхронизируется быстрее Bitcoin (~50 GB vs ~600 GB для полной ноды).
Публичный API — Blockchair поддерживает Litecoin:
async function checkLitecoinPayment(
address: string,
expectedLit: number // в литоинах, не в litoshi
): Promise<'pending' | 'confirmed'> {
const res = await fetch(
`https://api.blockchair.com/litecoin/dashboards/address/${address}`
)
const data = await res.json()
const stats = data.data[address]?.address
const confirmedReceived = stats?.received / 1e8 ?? 0
return confirmedReceived >= expectedLit ? 'confirmed' : 'pending'
}
Blockchair API бесплатен до 1 430 запросов/день. Для production нужна нода.
Количество подтверждений
Из-за более быстрых блоков (~2.5 мин) можно требовать больше подтверждений за то же астрономическое время:
| Эквивалент по времени | Bitcoin блоков | Litecoin блоков |
|---|---|---|
| ~10 минут | 1 | 4 |
| ~30 минут | 3 | 12 |
| ~60 минут | 6 | 24 |
На практике для большинства платежей достаточно 6–12 подтверждений Litecoin.
Конвертация и курсы
При выставлении счёта в LTC нужен актуальный курс. Варианты:
// Через CoinGecko (бесплатно, без ключа)
async function getLtcPriceUsd(): Promise<number> {
const res = await fetch(
'https://api.coingecko.com/api/v3/simple/price?ids=litecoin&vs_currencies=usd'
)
const data = await res.json()
return data.litecoin.usd
}
// Выставление счёта: фиксировать сумму в LTC на момент создания
// и хранить до истечения (~15 минут). Не пересчитывать каждую секунду.
Курс нужно фиксировать в момент генерации адреса оплаты и не пересчитывать в течение жизни платежа. Если пользователь не оплатил до истечения — генерировать новый адрес с актуальным курсом.
Отличия от Bitcoin в production
Litecoin исторически использовался как "тестовая сеть для Bitcoin" в реальных условиях — многие обновления (SegWit, MimbleWimble через MWEB) выходили там раньше. MWEB (MimbleWimble Extension Blocks) добавляет опциональную конфиденциальность транзакций, что влечёт дополнительные сложности при мониторинге: MWEB-транзакции не видны стандартным API. Если клиенты платят через MWEB — нужна собственная нода с поддержкой MWEB.
Комиссии в сети Litecoin исторически ниже Bitcoin в абсолютных значениях. Но это не влияет на получателя — комиссию платит отправитель.







