Поскольку в сети появились транзакции, я начал использовать балансировщик каналов "Balance of Satoshis" от автора Alex Bosworth.
Хочу написать небольшой обзор и свои впечатления от использования.
Устанавливается довольно просто (в одну команду) в соответствии с инструкцией
https://github.com/alexbosworth/balanceofsatoshisНо у меня при установке возникли ошибки, пришлось обновлять nodejs до необходимой версии.
Решение имеет вполне неплохую гуйню (пользовательский интерфейс), несмотря на то, что всё рисуется в командной строке.
Для того, чтобы понять какие каналы следует перебалансировать есть команда
bos forwards
┌────────────────────────────────┬────────────┬────────────┬────────────┬────────────┬────────────────────────────────────────────────────────────────────┐
│ Alias │ Earned In │ Earned Out │ Inbound │ Outbound │ Public Key │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ CoinGate │ 0.00000001 │ │ 0.00008211 │ 0.00490984 │ 0242a4ae0c5bef18048fbecf995094b74bfb0f7391418d71ed394784373f41e4f3 │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ node02.fulmo.org │ 0.00000129 │ │ 0.00018547 │ 0.01000844 │ 02b6dabd436275044399002241195b82b7fed517b226d0a109b1d07a39d7b4a91a │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ Leapfrog │ 0.00000004 │ │ 0.01193782 │ 0.01305413 │ 02aa6d04033505013665f96f31c097233947e7cc294558f32036a2f9988567c3e1 │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ lightning-poker.com │ 0.00000003 │ │ 0.00176004 │ 0.00823191 │ 03ad156742a9a9d0e82e0022f264d6857addfd534955d5e97de4a695bf8dd12af0 │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ ln.nicehash.com [Nicehash] │ 0.00000004 │ │ 0.00038047 │ 0.00461148 │ 037659a0ac8eb3b8d0a720114efc861d3a940382dcfa1403746b4f8f6b2e8810ba │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ mainnet.lightningconductor.net │ 0.00000005 │ │ 0.00036024 │ 0.00963134 │ 03c436af41160a355fc1ed230a64f6a64bcbd2ae50f12171d1318f9782602be601 │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ 038e611daccc4f5c5762 │ 0.00000001 │ │ 0.00099261 │ 0.00100011 │ 038e611daccc4f5c576205b732171b0bf445c96b80311da269c2b5a4a5a5daf814 │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ rkfg │ 0.00000039 │ 0.00000005 │ 0.00148598 │ 0.00838910 │ 021c3ec6432d2b9b5abcb01dd64b3a8f2afe3ba7d8c021f63ffd0a994cd3bc9b88 │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ BOLLWERK │ 0.00000005 │ │ 0.00286602 │ 0.00212593 │ 028e953ff239e6801d2d95ba093c6b25a4d1236f86303e9cd8919d25b9ef4b733e │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ southxchange.com │ 0.00000007 │ │ 0.00020894 │ 0.00378301 │ 0260fab633066ed7b1d9b9b8a0fac87e1579d1709e874d28a0d171a1f5c43bb877 │
├────────────────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────┤
│ bfx-lnd1 │ │ 0.00000193 │ 0.03514160 │ 0.00483931 │ 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6 │
└────────────────────────────────┴────────────┴────────────┴────────────┴────────────┴────────────────────────────────────────────────────────────────────┘
Избыточная ликвидность подсвечена зелёным цветом, очень удобно.
Из представленного примера видно, что требует балансировки каналы от ноды node02.fulmo.org к ноде bfx-lnd1.
Сам ребалансировщик запускается командой:
bos rebalance --amount 40000 --in 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6 --out 02b6dabd436275044399002241195b82b7fed517b226d0a109b1d07a39d7b4a91a --max-fee 1 --max-fee-rate 1
При первом запуске рекомендуется установить
--max-fee 1 --max-fee-rate 1
для того, чтобы при нахождении подходящего маршрута перед началом балансировки оценить стоимость транзакции.
После запуска, балансировщик начинает искать подходящие маршруты:
outgoing_peer_to_increase_inbound: node02.fulmo.org 02b6dabd436275044399002241195b82b7fed517b226d0a109b1d07a39d7b4a91a
incoming_peer_to_decrease_inbound: bfx-lnd1 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6
rebalance_target_amount: 0.00500000
circular_rebalance_for: LENINGRAD[LND] 0338f87cb05016c9427de7872192615f9313d622db1a88f6c2594625ffd0b2d270
evaluating:
- 573082x183x1 ★ ★ ★ ☆
- node02.fulmo.org 02b6dabd436275044399002241195b82b7fed517b226d0a109b1d07a39d7b4a91a. Fee rate: 0.00% (0)
- 693879x531x0
- SimpleCoin 03bec0f5799c4ae2d0fa8943f089324bddd6cbbbb6178f7ac2f2588696280e6587. Fee rate: 0.05% (534)
- 694093x2191x7
- okex 0294ac3e099def03c12a37e30fe5364b1223fd60069869142ef96580c8439c2e0a. Fee rate: 0.05% (499)
- 693477x2186x1
- bfx-lnd1 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6. Fee rate: 0.00% (4)
- 695696x533x0
evaluating_amount: 244725
evaluating_amount: 367087
evaluating_amount: 305906
evaluating_amount: 336496
err:
- 400
- RebalanceTotalFeeTooHigh
-
needed_max_fee: 317
Видим, что предлагаемая комиссия (317) найденного маршрута "заградительная", поэтому убираем ноды с высокой комиссией из кандидатов на поиск (параметр --avoid), и продолжаем:
bos rebalance --amount 500000 --in 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6 --out 02b6dabd436275044399002241195b82b7fed517b226d0a109b1d07a39d7b4a91a --max-fee 1 --max-fee-rate 1 --avoid 0294ac3e099def03c12a37e30fe5364b1223fd60069869142ef96580c8439c2e0a --avoid 03bec0f5799c4ae2d0fa8943f089324bddd6cbbbb6178f7ac2f2588696280e6587
и получаем следующую картину:
outgoing_peer_to_increase_inbound: node02.fulmo.org 02b6dabd436275044399002241195b82b7fed517b226d0a109b1d07a39d7b4a91a
incoming_peer_to_decrease_inbound: bfx-lnd1 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6
rebalance_target_amount: 0.00500000
circular_rebalance_for: LENINGRAD[LND] 0338f87cb05016c9427de7872192615f9313d622db1a88f6c2594625ffd0b2d270
evaluating:
- 573082x183x1 ★ ★ ☆ ☆
- node02.fulmo.org 02b6dabd436275044399002241195b82b7fed517b226d0a109b1d07a39d7b4a91a. Fee rate: 0.00% (0)
- 691303x319x1
- bfx-lnd0 033d8656219478701227199cbd6f670335c8d408a92ae88b962c49d4dc0e83e025. Fee rate: 0.01% (99)
- 686735x1188x1
- bfx-lnd1 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6. Fee rate: 0.00% (3)
- 695696x533x0
failure: TemporaryChannelFailure at 691303x319x1 from node02.fulmo.org
evaluating:
- 573082x183x1 ★ ★ ★ ★
- node02.fulmo.org 02b6dabd436275044399002241195b82b7fed517b226d0a109b1d07a39d7b4a91a. Fee rate: 0.01% (99)
- 691162x622x1
- mjolnir 02d4b432058ec31e38f6f35d22a487b7db04c4bf70f201f601b66f7b4358242b03. Fee rate: 0.04% (449)
- 672802x1037x1
- bfx-lnd1 03cde60a6323f7122d5178255766e38114b4722ede08f7c9e0c5df9b912cc201d6. Fee rate: 0.00% (4)
- 695696x533x0
evaluating_amount: 241429
evaluating_amount: 362143
evaluating_amount: 422500
evaluating_amount: 452679
err:
- 400
- RebalanceTotalFeeTooHigh
-
needed_max_fee: 250
Здесь комиссия уже лучше - 250 сатоши. При этом, если на маршруте выдаёт ошибку "failure: TemporaryChannelFailure", это означает, что в указанном канале не достаточно исходящей ёмкости.
И так перебираем до тех пор, пока комиссия нас не устроит, выставляем в параметре запроса
--max-fee
и повторяем последний, устроивший нас запрос запрос.
Дополнительно нужно сообщить, что при запуске балансировщика можно не указывать параметры
--in
или
--out
, тогда будет самостоятельно выбран исходящий и входящий канал.
Есть так же множество дополнительных полезных команд, например:
bos peers
или
bos fees