Я только что слушал SLP59 с Кристианом Декером . В основном обсуждались канальные фабрики. Хотя построение многопартийных каналов и производных от них систем более высокого порядка (подканалов) кажется ясным и описывается в этой статье, мне интересно, как должен быть адаптирован протокол сплетен , чтобы люди могли объявлять о таких каналах?
Как правило, необходимо указать транзакцию финансирования платежного канала, чтобы предотвратить рассылку спама channel announcment
и аутентифицировать каналы. Однако с фабриками каналов существует только одна крупная транзакция для многопартийного канала. Подканалы отключены.
Как будет выглядеть решение для протокола сплетен?
Почти все останется по-прежнему. Если вы посмотрите на соответствующие сообщения, channel_announcement
и channel_update
у нас есть следующие форматы:
channel_announcement
- тип: 256 (
channel_announcement
)- данные:
- [
64
:node_signature_1
]- [
64
:node_signature_2
]- [
64
:bitcoin_signature_1
]- [
64
:bitcoin_signature_2
]- [
2
:len
]- [
len
:features
]- [
32
:chain_hash
]- [
8
:short_channel_id
]- [
33
:node_id_1
]- [
33
:node_id_2
]- [
33
:bitcoin_key_1
]- [
33
:bitcoin_key_2
]
channel_update
- тип: 258 (
channel_update
)- данные:
- [
64
:signature
]- [
32
:chain_hash
]- [
8
:short_channel_id
]- [
4
:timestamp
]- [
1
:message_flags
]- [
1
:channel_flags
]- [
2
:cltv_expiry_delta
]- [
8
:htlc_minimum_msat
]- [
4
:fee_base_msat
]- [
4
:fee_proportional_millionths
]- [
8
:htlc_maximum_msat
] (option_channel_htlc_max)
Если вы посмотрите на это, вы увидите, что он channel_announcement
включает в себя лексикографически отсортированный список подписей узлов и биткойнов, а также соответствующие им открытые ключи. Это тривиально расширить до произвольного числа участников, сделав этот список переменной длины.
В частности, short_channel_id
все еще относится к единственному выходу, с которым был открыт офчейн-контракт, который также останется прежним.
channel_update
может показаться немного более сложным, поскольку теперь есть n*(n-1)
возможные направления (пары отправитель-получатель), по этому контракту можно пройти, тогда как в простом канале с двумя участниками у нас есть только 2 направления. Однако концепцию направления можно легко расширить, чтобы просто лексикографически ранжировать все пары отправитель-получатель и использовать индекс для идентификации пары.
Вполне вероятно, что некоторые форматы сообщений необходимо изменить (списки открытых ключей и подписей переменной длины), а некоторые поля сделать явными (ранговый индекс для пары отправитель-получатель), но общая концепция останется прежней.
x
если вывод предназначен для x
сатоши, но вы не знаете фактический текущий баланс. С многосторонними каналами вместо разделения совокупного баланса на двоих вы делите его n
на n
участников, все остальное остается прежним :-)
Марк Х
short_channel_id
будет изменить, или что каналы должны быть частными, а этоshort_channel_id
может быть выдуманное значение, переданное в счете BOLT # 11. Связанный вопрос , на который вы ранее дали мне ответ.Марк Х
short_channel_id
транзакция ловушки может быть использована в счете-фактуре BOLT # 11, и получатель платежа может передать ееpayment_hash
партнеру своего канала конфиденциально, так что, когда партнер получает входящийupdate_add_htlc
с крючокshort_channel_id
и тому подобноеpayment_hash
, они знают, для какого члена фабрики каналов он предназначен. Для исходящих платежей участники будут иметьchannel_id
транзакцию, которая не зависит от того, находится ли она в определенном месте в блокчейне.Марк Х
short_channel_id
транзакцию хука, и когда участник фабрики получает сообщениеupdate_add_htlc
, он транслирует его всем членам фабрики. Все члены, кроме одного, должны возвращатьupdate_fail_malformed_htlc
, а один член должен возвращать либо ,update_fulfull_htlc
либоupdate_fail_htlc
. Узел мог собирать эти ответы и выяснять, для кого он предназначен.