Имитация HTLC в regtest c-lightning

У меня есть три узла в среде regtest l1, l2 и l3.

l1 создать канал с l2

l2 создать канал с l3

l3 создать счет для l1. l1 может заплатить, потому что используется маршрут l1- l2 -l3

Я предполагаю, что здесь c-lightning использует HTLC для достижения этой цели.

Где я могу отладить скрипт? Я хотел бы увидеть что-то вроде этого

IF
  # Payment if you have the secret R
  HASH160 <H> EQUALVERIFY
ELSE
# Refund after timeout.
<locktime> CHECKLOCKTIMEVERIFY DROP <Payee Pubic Key> CHECKSIG
ENDIF

Ответы (1)

Чтобы вы могли видеть эти скрипты, вам нужно принудительно включить канал в цепочке вместе с HTLC. Только после этого HTLC будет проверен с помощью скрипта, в противном случае вы увидите вывод P2WSH только для добавленного HTLC, а затем удалите его, если платеж прошел успешно или не удалось.

Поэтому при нормальной работе вы не увидите HTLC. Однако при тестировании c-lightning мы форсируем этот случай, чтобы убедиться, что он обрабатывается правильно. Есть два способа принудительного расчета по цепочке:

  • Напишите небольшой плагин, который просто удерживает входящий HTLC либо l2в l3зависимости от того, на каком канале вы хотите наблюдать за скриптом.
  • Если вы скомпилировали его, DEVELOPER=1вы также можете предоставить файл с инструкциями по отключению при появлении определенных сообщений. Это немного сложнее, но вот тест , который показывает, как это работает. Он предписывает l1отключиться, как только получит WIRE_REVOKE_AND_ACKсообщение о завершении добавления HTLC.

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

Спасибо за ответ. Я уже установил на свой Mac, я попробовал еще раз, ./configure --enable-developerа затем make DEVELOPER=1, но я получаю сообщение об ошибке: tools/mockup.sh: line 12: syntax error near unexpected token ;;'` Я пытался даже просто, makeно получаю ту же ошибку
Это очень похоже на то, что bash на Mac не совсем совместим со сценарием. Может быть, вы зарегистрируете проблему, и мы посмотрим, как мы можем ее исправить.