Разработка решений на Liquid Network (Bitcoin sidechain)
Liquid Network — это federated sidechain поверх Bitcoin, разработанная Blockstream. В отличие от Lightning Network (payment channels), Liquid — это полноценный блокчейн с собственными блоками (~1 минута), нативным ассетом L-BTC и возможностью выпускать кастомные ассеты (токены, stablecoin-ы, security tokens). Confidential Transactions — встроенная privacy: суммы и типы ассетов скрыты от посторонних наблюдателей.
Liquid актуален для: торговых платформ которым нужны быстрые Bitcoin-деноминированные расчёты, выпуска tokenized securities с privacy требованиями, обменников с быстрым bitcoin settlement. Нишевая технология, но в своей нише — без аналогов.
Архитектура Liquid Network
Federation model
Liquid не использует proof-of-work и не имеет публичного mining. Блоки создаются functionaries — federants, которыми являются крупные биржи (Bitfinex, Kraken, OKX и др.) и сервис-провайдеры. Консенсус через threshold multisig: для создания блока нужна подпись 2/3 от functionaries.
Это не trustless как Bitcoin mainnet — вы доверяете федерации. Trade-off: взамен получаете быстрые транзакции, финальность через 2 блока (~2 минуты), низкие комиссии и Confidential Transactions.
Peg-in / Peg-out — механизм обмена BTC ↔ L-BTC:
- Peg-in: отправляете BTC на federated peg address → получаете L-BTC через ~100 Bitcoin блоков (~16 часов) для безопасности
- Peg-out: сжигаете L-BTC через federation → получаете BTC (~2 часа)
Confidential Transactions
Ключевая особенность Liquid, ради которой его и используют финансовые институты. Суммы переводов скрыты через Pedersen Commitments, тип ассета скрыт через asset surjection proofs. Только отправитель и получатель знают реальные числа.
Обычный Bitcoin UTXO: value = 1.5 BTC (видно всем)
Liquid Confidential TX: value = [commitment] (только для участников транзакции)
Верификация корректности (нет создания денег из воздуха) возможна математически без раскрытия сумм — через свойства homomorphic commitment.
Разработка на Liquid: инструментарий
Elements Core и Liquid daemon
Liquid — форк Elements (open-source проект Blockstream). Для разработки нужен elementsd (Elements Core daemon) в regtest режиме — локальная нода без подключения к mainnet.
# Запуск Elements в regtest для разработки
elementsd \
-chain=elementsregtest \
-validatepegin=0 \
-initialfreecoins=2100000000000000 \
-rpcuser=user \
-rpcpassword=password \
-rpcport=18884 \
-daemon
libwally-core: низкоуровневая работа с транзакциями
Blockstream разработал libwally-core — C библиотека для создания Bitcoin и Liquid транзакций. Биндинги доступны для Python, JavaScript, Java.
import wallycore as wally
# Инициализация libwally
wally.init(0)
# Генерация мастер-ключа из seed
seed = bytes.fromhex('your_seed_hex')
master_key = wally.bip32_key_from_seed(seed, wally.BIP32_VER_MAIN_PRIVATE, 0)
# Деривация ключей для Liquid addresses
child_key = wally.bip32_key_from_parent(master_key, 0, wally.BIP32_FLAG_KEY_PRIVATE)
# Confidential address (с blinding key)
pub_key = wally.bip32_key_get_pub_key(child_key)
blinding_key = wally.asset_blinding_key_from_seed(seed)
conf_address = wally.confidential_addr_from_addr_segwit(
wally.bech32_from_bytes('ex', pub_key, 0), # ex = liquid mainnet, ert = regtest
'lq', # confidential address prefix
blinding_key[:32]
)
GDK (Green Development Kit)
Более высокоуровневый SDK от Blockstream, используется в Green wallet. Подходит для кошельковых приложений:
import greenlight from '@blockstream/greenlight-sdk'
// Инициализация GDK сессии для Liquid
const session = greenlight.create_session()
await session.connect({ name: 'liquid' })
// Создание кошелька
const mnemonic = greenlight.generate_mnemonic()
await session.register_user({
mnemonic,
hw_device: {},
})
// Получение адреса для приёма L-BTC
const addressDetails = await session.get_receive_address({
subaccount: 0,
address_type: 'p2wsh', // native segwit
is_internal: false,
})
console.log('Confidential address:', addressDetails.address)
console.log('Blinding key:', addressDetails.blinding_key)
Выпуск Liquid Assets
Liquid позволяет выпускать кастомные ассеты — аналог ERC-20, но с нативной privacy. Каждый ассет идентифицируется 32-байтовым asset ID (hash от issuance transaction).
Issuance через Elements RPC
# Через bitcoind-совместимый RPC интерфейс elementsd
import requests
def rpc_call(method, params):
response = requests.post(
'http://localhost:18884',
json={'method': method, 'params': params},
auth=('user', 'password')
)
return response.json()['result']
# Выпуск нового ассета
# amount: количество в satoshi-эквиваленте (8 знаков после запятой)
# reissuancetoken_amount: сколько reissuance tokens выпустить (для будущего доп. эмиссии)
issuance = rpc_call('issueasset', [
1000000, # 10.00000000 ассетов
1, # 1 reissuance token
False # не blind issuance (для демо)
])
asset_id = issuance['asset']
token_id = issuance['token']
print(f"Asset ID: {asset_id}")
print(f"Reissuance token: {token_id}")
Asset Registry
Для того чтобы другие пользователи видели название и тикер вашего ассета в кошельках — нужна регистрация в Liquid Asset Registry:
curl -X POST https://assets.blockstream.info/ \
-H "Content-Type: application/json" \
-d '{
"asset_id": "YOUR_ASSET_ID",
"contract": {
"name": "My Security Token",
"ticker": "MST",
"precision": 8,
"issuer_pubkey": "YOUR_ISSUER_PUBKEY",
"version": 0,
"entity": {
"domain": "yourcompany.com"
}
}
}'
Domain верификация через TXT-запись DNS — стандартная процедура.
Confidential Assets: privacy для токенов
По умолчанию выпущенные ассеты не confidential — тип ассета виден в транзакции. Для финансовых инструментов нужна полная конфиденциальность: ни тип ассета, ни сумма не должны быть видны посторонним.
Confidential issuance требует blind на этапе выпуска:
# Blind issuance - скрывает тип ассета и сумму
issuance = rpc_call('issueasset', [
1000000, # количество
1, # reissuance tokens
True # blind = True
])
# Теперь тип ассета скрыт в транзакции через asset surjection proof
Для передачи ассетов между confidential адресами — транзакции автоматически blind если оба адреса confidential.
Atomic Swaps на Liquid
Liquid поддерживает atomic swaps между разными ассетами без посредника — через HTLC (Hash Time Locked Contracts) или через Submarine Swaps с LN.
Практический use case: DEX на Liquid для обмена tokenized securities без custody. Обе стороны подписывают транзакцию, которая атомарно меняет ассеты — либо оба получают, либо ни один:
# Построение atomic swap транзакции
# Alice: хочет обменять 100 USDT-Liquid на 0.001 L-BTC
# Bob: хочет обменять 0.001 L-BTC на 100 USDT-Liquid
# 1. Alice создаёт partial PSBT (Partially Signed Bitcoin Transaction)
alice_psbt = rpc_call('walletcreatefundedpsbt', [
[{'txid': alice_utxo_txid, 'vout': alice_utxo_vout}], # inputs (USDT)
[{bob_address: 100_00000000, 'asset': USDT_ASSET_ID}], # outputs (L-BTC к Alice)
0,
{'add_inputs': False}
])
# 2. Bob добавляет свои inputs (L-BTC) и outputs (USDT к Bob)
# 3. Оба подписывают → broadcast
Интеграция с биржей: Liquid как settlement layer
Биржи используют Liquid для ускорения межплатформенных расчётов. L-BTC транзакция оседает за ~2 блока (~2 минуты) против 6 блоков Bitcoin (~60 минут) с comparable security гарантиями.
Схема для trading platform:
- Traders депозитируют L-BTC (или pegged-in BTC)
- Off-chain matching engine
- Settlement через Liquid транзакции — быстро и дёшево
- Withdrawal через peg-out при необходимости
Разработка Liquid интеграции: от 2 недель (базовая выпуск/прием ассетов) до 2-3 месяцев (полноценный DEX с confidential atomic swaps, asset registry, блокчейн-explorer для кастомных ассетов).







