Настройка рекламы ликвидности в c-lightning

В версии v0.10.0 c-lightning появился протокол двойного финансирования,который позволяет любому из одноранговых узлов канала вкладывать средства в транзакцию финансирования канала. Это отличное дополнение к протоколу Lightning, поскольку оно сокращает количество транзакций в цепочке, необходимых для размещения капитала в контрактах Lightning.

Однако двойное финансирование создает проблему координации. Это связано с тем, что невозможно узнать, будет ли пир вкладывать средства в канал с вами, если вы не спросите их. Вы можете явно сигнализировать, что ваш узел настроен на автоматическое двойное финансирование канала, как в этом твите, который я опубликовал. Но это требует, чтобы операторы узлов согласились использовать ту же централизованную сеть связи.

Решение проблемы координации двойного финансирования

Реклама ликвидности решает проблему координации, позволяя вашему узлу рекламировать свою готовность вносить средства в открытый запрос канала от однорангового узла непосредственно через сеть сплетен Lightning. Это означает, что каждый узел в Lightning Network может транслировать свое намерение внести средства в канал, а также видеть все узлы, которые в настоящее время предлагают ликвидность напрямую, без каких-либо дополнительных услуг или программного обеспечения.

С помощью c-lightning вы можете увидеть эти рекламные объявления через информацию об узле, возвращенную в .listnodes

Вот список узлов для моего узла, который в настоящее время рекламирует, что он будет сдавать вам в аренду средства.02cca6c5966fcf61d121e3a70e03a1cd9eeeea024b2626ea666ce974d43b242e636

$ lightning-cli listnodes 02cca6c5c966fcf61d121e3a70e03a1cd9eeeea024b26ea666ce974d43b242e636
{
"nodes": [
{
"nodeid": "02cca6c5c966fcf61d121e3a70e03a1cd9eeeea024b26ea666ce974d43b242e636",
"alias": "the_holy_cheese_grater",
"color": "cc0099",
"last_timestamp": 1628537935,
"features": "80000028226aa2",
"addresses": [
{
"type": "ipv4",
"address": "104.131.77.55",
"port": 6666
},
{
"type": "torv3",
"address": "oen54qzoyk47zs5alrkii5zjblyyubgjbkpx56ida24gk3mm5pabxuqd.onion",
"port": 6767
}
],
"option_will_fund": {
"lease_fee_base_msat": "1000000msat",
"lease_fee_basis": 10,
"funding_weight": 666,
"channel_fee_max_base_msat": "5000000msat",
"channel_fee_max_proportional_thousandths": 100,
"compact_lease": "029a000a0064000003e84c4b40"
}
}
]
}

Примечание: Вы можете фильтровать узлы, которые являются просто рекламной ликвидностью со следующим дополнением:grep

lightning-cli listnodes | grep -B20 -A7 option_will_fund

Давайте рассмотрим информацию, которую отображает это объявление ликвидности, покажем, как настроить свой узел (под управлением c-lightning v0.10.1 или более поздней версии) для рекламы этой информации и, наконец, рассмотрим аренду некоторой ликвидности у однорангового узла, который ее рекламирует.

Анализ рекламы ликвидности

Запись узла для объявления о ликвидности показывает шесть полей.

"option_will_fund": {
"lease_fee_base_msat": "1000000msat",
"lease_fee_basis": 10,
"funding_weight": 666,
"channel_fee_max_base_msat": "5000000msat",
"channel_fee_max_proportional_thousandths": 100,
"compact_lease": "029a000a0064000003e84c4b40"
}
  • lease_fee_base_msat : Это базовая плата, которую мой узел будет взимать за аренду ликвидности; в этом примере установлено значение 1k sats.
  • lease_fee_basis : Это базисные пункты, которые мой узел будет взимать за аренду ликвидности. Он рассчитывается как «sats, который вы хотели бы арендовать» * «lease_fee_basis» * 1 / 10 000. Например, если вы хотите арендовать 1M sats, я собираюсь взимать с вас 1M * 10 / 10k или 1k sats. Это плюс общая сумма, которую вы получите компенсацию за средства аренды.lease_base_fee_msat
  • funding_weight : Это вес, за который я ожидаю, что ваш узел заплатит при открытии транзакции. Открывалка выбирает комиссионную ставку, которую использует транзакция финансирования, поэтому общая плата за сатоши для этого будет рассчитываться с использованием курса, выбранного открывателем. Например, если открыватель использует скорость 50 спутников / vbyte, то им нужно будет заплатить моему узлу 666 / 4 * 50 или 8 325 спутников, чтобы покрыть мои расходы на внесение входных данных в транзакцию финансирования. В c-lightning это значение по умолчанию равно ожидаемому весу 2 входов P2WPKH и выходу P2WPKH.funding_weight
  • channel_fee_max_base_msat + chanel_fee_max_proportional_thousandths : Это обещания. В частности, лизинговый узел обещает не взимать с пользователей тарифы, превышающие эти значения, при маршрутизации платежей через арендованный канал. По сути, эти поля являются ограничением на маршрутные сборы, которые лизинговый узел будет взимать с арендованных средств. Обратите внимание, что «тысячные доли» довольно велики — это в 1000 раз больше, чем типичное число «ppm», в котором выражены ставки сборов. В этом примере мой узел в настоящее время рекламирует, что максимум, который он будет взимать, составляет 100 000. Это действительно высокий (10%)! (Значение для равно ).fee_per_millionth1channel_fee_max_proportional_thousandths1,000ppm
  • compact_lease : Это компактное представление вышеуказанных пяти полей. Он используется для сигнализации ставок, которые вы ожидаете, когда звоните, чтобы воспользоваться арендой, поэтому обратите на это внимание.fundchannel

Учитывая текущие настройки, аренда канала из 1 млн спутников, открытых по платной ставке 50 спутников / vbyte, обойдется открывающему пиру в общей сложности в 10 325 спутников. (1 тыс. сатов за базовую плату, 1 тыс. сатов за базовую плату и 8 325 за внутрицепочную плату за транзакцию финансирования).

Настройка узла c-lightning для рекламы ликвидности

В выпуске v0.10.1 представлен новый плагин, . дает вам некоторые ручки для настройки политики для управления входящими запросами каналов, а также способ установки ставок, которые вы хотите взимать за ликвидность. Это означает, что вы должны вносить средства в v2 открытия без рекламной ликвидности, а также взимать плату за ликвидность, которую вы предоставляете.c-lightningfunderFunder

По умолчанию он выдает ликвидность только для открытия этого предложения для оплаты аренды.

Кроме того, обратите внимание, что вам нужно будет включить возможность фактически финансировать любую рекламу, которую вы предлагаете.--experimental-dual-fund

Вы можете увидеть текущие настройки использования команды. Вот на что настроен мой узел в данный момент.funderfunderupdate

$ lightning-cli funderupdate
{
"summary": "match (100%)",
"policy": "match",
"policy_mod": 100,
"leases_only": true,
"min_their_funding_msat": "50000000msat",
"max_their_funding_msat": "4294967295000msat",
"per_channel_min_msat": "10000000msat",
"per_channel_max_msat": "10000000000msat",
"reserve_tank_msat": "0msat",
"fuzz_percent": 0,
"fund_probability": 100,
"lease_fee_base_msat": "1000000msat",
"lease_fee_basis": 10,
"funding_weight": 666,
"channel_fee_max_base_msat": "5000000msat",
"channel_fee_max_proportional_thousandths": 100,
"compact_lease": "029a000a0064000003e84c4b40"
}

Обратите внимание, что вы не увидите параметры, пока не зададите хотя бы один из них.lease

Политика спонсора

Для предложений ликвидности финансирования вы, скорее всего, захотите установить свою политику и сопутствующую . Это обеспечит такую же ликвидность, как и одноранговые запросы, не больше и не меньше. Вы также захотите отключить фаззинг, так как клиенты, которые запрашивают ликвидность в настоящее время, не могут открыть, если узел, предлагающий ликвидность, не соответствует или не превышает запрошенную сумму финансирования.modifiermatch (100%)c-lightning

Вот как вы устанавливаете эти параметры с помощью команды.funderupdate

$ lightning-cli funderupdate -k policy=match policy_mod=100
{
"summary": "match (100%)",
"policy": "match",
"policy_mod": 100,
"leases_only": true,
"min_their_funding_msat": "10000000msat",
"max_their_funding_msat": "4294967295000msat",
"per_channel_min_msat": "10000000msat",
"per_channel_max_msat": "4294967295000msat",
"reserve_tank_msat": "0msat",
"fuzz_percent": 0,
"fund_probability": 100
}

Настройка объявления о ликвидности

Хорошо, наша политика установлена на . Давайте продолжим и добавим рекламу ликвидности, которая будет транслироваться в сеть.match (100%)

Я собираюсь установить плату за аренду, остальные параметры будут по умолчанию.

$ lightning-cli funderupdate -k lease_fee_base_msat=500sat lease_fee_basis=50
{
"summary": "match (100%)",
"policy": "match",
"policy_mod": 100,
"leases_only": true,
"min_their_funding_msat": "10000000msat",
"max_their_funding_msat": "4294967295000msat",
"per_channel_min_msat": "10000000msat",
"per_channel_max_msat": "4294967295000msat",
"reserve_tank_msat": "0msat",
"fuzz_percent": 0,
"fund_probability": 100,
"lease_fee_base_msat": "500000msat",
"lease_fee_basis": 50,
"funding_weight": 666,
"channel_fee_max_base_msat": "5000000msat",
"channel_fee_max_proportional_thousandths": 100,
"compact_lease": "029a00320064000001f44c4b40"
}

Эти параметры channel_fee кажутся мне немного высокими (база 5000 спутников, 100 000 ppm), поэтому я отрегулирую их вниз до 100sat base и 2000ppm.

$ lightning-cli funderupdate -k channel_fee_max_base_msat=100sat channel_fee_max_proportional_thousandths=2
{
"summary": "match (100%)",
"policy": "match",
"policy_mod": 100,
"leases_only": true,
"min_their_funding_msat": "10000000msat",
"max_their_funding_msat": "4294967295000msat",
"per_channel_min_msat": "10000000msat",
"per_channel_max_msat": "4294967295000msat",
"reserve_tank_msat": "0msat",
"fuzz_percent": 0,
"fund_probability": 100,
"lease_fee_base_msat": "500000msat",
"lease_fee_basis": 50,
"funding_weight": 666,
"channel_fee_max_base_msat": "100000msat",
"channel_fee_max_proportional_thousandths": 2,
"compact_lease": "029a00320002000001f40186a0"
}

Если вы хотите проверить, что вы в настоящее время рекламируете, запустите . Для отражения любых недавних изменений здесь может потребоваться несколько минут, поскольку мы ограничиваем частоту обновления node_announcements. (Поскольку я обновлял его два раза подряд, потребовалось некоторое время, чтобы появился второй набор изменений.)listnodes <your_node_id>

Конфигурации

Чтобы эти параметры сохранялись при перезагрузке, необходимо задать их в конфигурациях Lightning. Это можно сделать, добавив следующие строки в конфигурационный файл.

experimental-dual-fund
funder-policy=match
funder-policy-mod=100
lease-fee-base-msat=500sat
lease-fee-basis=50
channel-fee-max-base-msat=100sat
channel-fee-max-proportional-thousandths=2

Лизинговые фонды

Теперь, когда у вас есть настройка аренды канала, нужно подождать, пока коллега примет вас по предложению. Вы можете проверить, что ваш баланс средств в цепочке достаточно велик, чтобы принимать любые входящие запросы, с помощью . Средства будут использоваться для финансирования запросов.listfundsoutputs

Давайте попробуем быть другой стороной торговли сейчас и попросим арендовать средства у узла, который рекламирует ликвидность.

Вот как вы запросите канал спутниковой связи 1M от моего узла в основной сети. Обратите внимание, что мы также вводим 1M спутников, что означает, что этот канал будет сбалансирован для запуска (при условии, что открытие произойдет без проблем).

$ lightning-cli fundchannel -k id=02cca6c5c966fcf61d121e3a70e03a1cd9eeeea024b26ea666ce974d43b242e636 amount=0.01btc request_amt=0.01btc compact_lease=029a000a0002000003e80186a0

Обратите внимание, что вам нужно будет подключиться к моему узлу, прежде чем вы сможете открыть канал, что вы можете сделать с помощью следующего:

$ lightning-cli connect 02cca6c5c966fcf61d121e3a70e03a1cd9eeeea024b26ea666ce974d43b242e636@104.131.77.55:6666

И так и должно быть!

Несколько предостережений. Если условия аренды изменились, открытие должно завершиться неудачей. Вам нужно будет получить последнюю версию, прежде чем повторить попытку. Если одноранговый узел не имеет достаточного доступного капитала или если ваш запрос не передает параметры, заданные для одноранговых узлов (см. другие параметры, доступные на ), то ваш открытый запрос завершится ошибкой.compact_leaselistnodesfunderupdate

Обратите внимание, что, как и в случае со всеми функциями », аренда должна рассматриваться как .experimental#reckless

Источник