Pages:
Author

Topic: Lightning Network - page 18. (Read 916060 times)

sr. member
Activity: 403
Merit: 275
March 20, 2019, 02:37:56 PM
Попробуйте в вашей формулировке убрать слово "адрес".
Никаких адресов в контрактах нет. Должно быть что-то типа такого:

биткоин заберет тот, кто
ИЛИ
подпишется как Алиса
ИЛИ
подпишется как Алиса И как Боб


Устал к вечеру, почти всё пришлось переписать Smiley
sr. member
Activity: 770
Merit: 305
March 20, 2019, 01:43:17 PM
Попробую изложить свой вариант, не для обычных людей, но для нашего с вами обсуждения:
Попробуйте в вашей формулировке убрать
Ребят, а вы каналы сами открывали-закрывали? У меня складывается впечатление, что нет.
Я-то не скрываю, что я "теоретик". Как говорилось в пошлом анекдоте "я не врач, но посмотреть могу"
И по-моему, достаточно очевидно, что тут без практических навыков и примеров нам с этим не разобраться.
Как оно работает - примерно понятно. А вот как точно - тут пока еще не наблюдается спецов.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
March 20, 2019, 01:31:36 PM
Попробую изложить свой вариант, не для обычных людей, но для нашего с вами обсуждения:


Через пол года 1 BTC-> на исходный адрес Алисы, если предоставлена подпись Алисы
Моментально 1 BTC-> на исходный адрес Алисы, если предоставлена подпись Боба
Моментально 1 BTC-> на любой адрес, если предоставлена подпись и Алисы, и Боба


Попробуйте в вашей формулировке убрать слово "адрес".
Никаких адресов в контрактах нет. Должно быть что-то типа такого:

биткоин заберет тот, кто
ИЛИ
подпишется как Алиса
ИЛИ
подпишется как Алиса И как Боб
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
March 20, 2019, 01:23:55 PM
И всё таки, что то не так с животными в вашем мысленном эксперименте.

Что мешает Алисе после публикации честной транзакции Бобом:

Quote
Хомяка зовут Тэймос, кота зовут Васька, жду полгода и беру из самой первой транзакции  0.1 биткоин.
Сдачу заберет тот, кто
ИЛИ
знает как зовут других животных: другого_кота_Алисы, собаку и другого_хомяка_Боба
ИЛИ
знает как зовут другого_хомяка_Боба И другого_кота_Алисы И прошло полгода
ИЛИ
знает как зовут собаку И прошел год

Послать в сеть:
Quote
Животных зовут Жучка, Васька, Теймос, я забираю все биткоины из самой первой транзакции себе немедленно.

Я думаю, что Боб никуда не публикует имя Теймоса и честную транзакцию. Он запоминает эту транзакцию у себя на ноде и опубликует ее через полгода если других транзакций от Алисы не поступит.
А чтобы Алиса через полгода не смогла ничего сделать, надо в открывающую транзакцию дополнительное условие поставить

Quote
биткоин заберет тот кто:
ИЛИ
знает как зовут всех животных: кота_Алисы, собаку_Алисы и хомяка_Боба И прошло меньше чем полгода
ИЛИ
знает как зовут хомяка_Боба И кота_Алисы И прошло полгода
ИЛИ
знает как зовут собаку_Алисы И прошел год

Транзакция внутри лайтинга от Алисы будет такая:

Quote
кота зовут Васька, 0.1 биткоина из самой первой транзакции заберет тот кто назовет имя хомяка через полгода.
Сдачу заберет тот, кто
ИЛИ
знает как зовут других животных: другого_кота_Алисы, собаку_Алисы и другого_хомяка_Боба И прошло меньше чем полгода
ИЛИ
знает как зовут другого_хомяка_Боба И другого_кота_Алисы И прошло полгода
ИЛИ
знает как зовут собаку_Алисы И прошел год



sr. member
Activity: 403
Merit: 275
March 20, 2019, 01:00:13 PM
Попробую изложить свой вариант, не для обычных людей, но для нашего с вами обсуждения:
Code:
1) Создание канала от Алисы к Бобу.

Алиса создала временный секрет АБ1
+
Переводит 1BTC на кошелёк канала следующей транзакцией:

Контракт 1:
Взять с такого то выхода кошелька Алисы 1 BTC и заблокировать его на адресе Лайтнинг канала.

Разблокировка:

Через пол года 1 BTC-> разблокируется, если предоставлена подпись Алисы
Моментально 1 BTC-> разблокируется, если предоставлена подпись и Алисы, и Боба

или

Моментально 1 BTC-> Бобу, если предоставлена подпись Боба и временный секрет АБ1

Алиса публикует контракт в сеть BTC и дожидается подтверждения
-------------------------------------------------------------------------------------
2) Алиса совершает платёж в сети лайтнинг на сумму 0,3 BTC в сторону Боба, путём создания нового временного секрета АБ2 и нового контракта:

Контракт 2:
Взять с выхода контракта канала 1BTC путём предоставления подписи и Алисы и Боба и заблокировать его на двух выходах Алисы и Боба:

Разблокировка выхода 1:
Через пол года 0,7 BTC-> разблокируется, если предоставлена подпись Алисы и Боба

Разблокировка выхода 2
Через пол года 0,3 BTC->  разблокируется, если предоставлена подпись Алисы и Боба

или

Моментально 1 BTC->  разблокируется, если предоставлен временный секрет АБ2 и подпись Боба

или

Моментально 1 BTC->  разблокируется, если предоставлен временный секрет БА2 и подпись Алисы

Алиса подписывает Контракт 2 и передаёт подпись Контракта 2, сам Контракт 2 и временный секрет АБ1 Бобу.

Боб создаёт временный секрет БА2, подписывает Контракт 2 и возвращает подпись Контракта 2 Алисе, подпись Контракт 2 Алисой сохраняет у себя

И Алиса и Боб не публикуют Контракт 2 в сети и продолжают взаимодействие.
---------------------------------------------------------------------------------------------
3)  Боб совершает платёж в сети лайтнинг на сумму 0,1 BTC в сторону Алисы, путём создания нового временного секрета БА3 и нового контракта:

Контракт 3:
Взять с выхода контракта канала 1BTC путём предоставления подписи и Алисы и Боба и заблокировать его на двух выходах Алисы и Боба:

Разблокировка выхода 1:
Через пол года 0,8 BTC-> разблокируется, если предоставлена подпись Алисы и Боба

Разблокировка выхода 2
Через пол года 0,2 BTC->  разблокируется, если предоставлена подпись Алисы и Боба

или

Моментально 1 BTC->  разблокируется, если предоставлен временный секрет АБ3  и подпись Боба

или

Моментально 1 BTC->  разблокируется, если предоставлен временный секрет БА3 и подпись Алисы

Боб подписывает Контракт 3 и передаёт подпись Контракта 3, сам Контракт 3 и временный секрет БА2 Алисе.

Алиса создаёт временный секрет АБ3, подписывает Контракт 3 и возвращает подпись Контракта 3 Алисе, подписанный Алисой Контракт 3 сохраняет у себя

И Алиса и Боб не публикуют Контракт 3 в сети и продолжают взаимодействие...

Поправил. Осталась не раскрыта тема моментального закрытия канала по согласию сторон. Вроде бы есть такая возможность.
sr. member
Activity: 403
Merit: 275
March 20, 2019, 11:13:40 AM
И всё таки, что то не так с животными в вашем мысленном эксперименте.

Что мешает Алисе после публикации честной транзакции Бобом:

Quote
Хомяка зовут Тэймос, кота зовут Васька, жду полгода и беру из самой первой транзакции  0.1 биткоин.
Сдачу заберет тот, кто
ИЛИ
знает как зовут других животных: другого_кота_Алисы, собаку и другого_хомяка_Боба
ИЛИ
знает как зовут другого_хомяка_Боба И другого_кота_Алисы И прошло полгода
ИЛИ
знает как зовут собаку И прошел год
[/quote]

Послать в сеть:
Quote
Животных зовут Жучка, Васька, Теймос, я забираю все биткоины из самой первой транзакции себе немедленно.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
March 20, 2019, 08:24:15 AM

Внутри LN нужно хранить все транзакции в связке с ключом отмены, на случай, если вторая сторона опубликует ее.


Логично.
Я выделил жирным в контрактах то, что все транзакции тратят выход от самой первой (а не предыдущей как я написал сначала).
sr. member
Activity: 403
Merit: 275
March 20, 2019, 08:10:28 AM
Один скрипт образует один выход.
То, что вы назвали транзакциями 2 и 3 это должна быть одна и та же транзакция 2. Только сначала в скрипте не хватает данных, чтобы его потратить Боб должен туда эти данные подставить.

По поводу длины скрипта вы правы: значит внутри LN должна храниться только одна последняя транзакция 2.
Внутри LN нужно хранить все транзакции в связке с ключом отмены, на случай, если вторая сторона опубликует ее.
Публикуются в сеть биткоина только те, что я описал выше.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
March 20, 2019, 08:06:43 AM
Один скрипт образует один выход.
То, что вы назвали транзакциями 2 и 3 это должна быть одна и та же транзакция 2. Только сначала в скрипте не хватает данных, чтобы его потратить Боб должен туда эти данные подставить.

По поводу длины скрипта вы правы: значит внутри LN должна храниться только одна последняя транзакция 2.

Контракт Боба:
Quote
Хомяка зовут Тэймос, кота зовут Васька, жду полгода и беру из первой транзакции 0.1 биткоин.
Сдачу заберет тот, кто
ИЛИ
знает как зовут других животных: другого_кота_Алисы, собаку и другого_хомяка_Боба
ИЛИ
знает как зовут другого_хомяка_Боба И другого_кота_Алисы И прошло полгода
ИЛИ
знает как зовут собаку И прошел год
sr. member
Activity: 403
Merit: 275
March 20, 2019, 07:39:17 AM
Возможно цепочка транзакций не нужна, а каждая новая просто перезаписывает старую. Но тогда контракты надо видоизменить.
А что значит "перезаписывает старую"?

Получается, какая-то цепочка связанных транзакций:
Транзакция №1 (использует выход с кошелька создателя канала)
Quote
биткоин заберет тот кто:
ИЛИ
знает как зовут всех животных: кота, собаку и хомяка (образует выход 1.1.)
ИЛИ
знает как зовут хомяка И кота И прошло полгода (образует выход 1.2.)
ИЛИ
знает как зовут собаку И прошел год (образует выход 1.3.)

Транзакция 2 (использует выход 1.2.)
Quote
Кота зовут Васька, 0.1 биткоина из предыдущей транзакции может забрать тот, кто знает имя хомяка (образует выход 2.1.)
Сдачу заберет тот, кто
ИЛИ
знает как зовут других животных: другого_кота_Алисы, собаку и другого_хомяка_Боба (образует выход 2.2.)
ИЛИ
знает как зовут другого_хомяка_Боба И другого_кота_Алисы И прошло полгода (образует выход 2.3.)
ИЛИ
знает как зовут собаку И прошел год (образует выход 2.4.)

Транзакция 3 (использует выход 2.1.)
Quote
Хомяка зовут Тэймос, кота зовут Васька, жду полгода и беру из предыдущей транзакции 0.1 биткоин.
Сдачу заберет тот, кто
ИЛИ
знает как зовут других животных: другого_кота_Алисы, собаку и другого_хомяка_Боба
ИЛИ
знает как зовут другого_хомяка_Боба И другого_кота_Алисы И прошло полгода
ИЛИ
знает как зовут собаку И прошел год

И это по вашему всё публикуется при закрытии канала? На сколько я знаю, длина скрипта ограничена и в него все платежи внутри LN не влезут.
Сейчас, по-моему, может публиковаться только три транзакции:
1) транзакция открытия канала,
2) транзакция закрыти канала,
3) транзакция при мошенничестве revoked commitment transaction  (опционно)
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
March 20, 2019, 07:34:20 AM
следует разделить как-то понятия контракт/транзакция, ончейн/офчейн. И написать, по какому принципу появляются другие животные (их имена).

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

... но Алиса уже знает как зовут всех животных. Поэтому Алиса немедленно сделает контракт:
Не написано, когда Алиса узнала имя хомяка Боба. Она его берёт из транзакции, которую опубликовал Боб.

Выделил жирным
sr. member
Activity: 403
Merit: 275
March 20, 2019, 06:51:21 AM
Давайте вместе попробуем сделать описание LN так, чтобы домохозяйкам понятно было?

Давайте, но даже на таких простых примерах простому человеку очень сложно врубиться. Как я только не пытался объяснить своим знакомым в реальной жизни на пальцах, ничего не получалось... Бросил это дело...

И, наверное, в тексте следует разделить как-то понятия контракт/транзакция, ончейн/офчейн. И написать, по какому принципу появляются другие животные (их имена).

... но Алиса уже знает как зовут всех животных. Поэтому Алиса немедленно сделает контракт:
Не написано, когда Алиса узнала имя хомяка Боба. Она его берёт из транзакции, которую опубликовал Боб.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
March 20, 2019, 06:42:54 AM
Давайте вместе попробуем сделать описание LN так, чтобы домохозяйкам понятно было?
Я попробовал тут немного из общих соображений набросать, как это вроде бы выглядит. Если где-то ошибся - поправляйте.

У Алисы есть кот и собака, имена которых знает только она.
У Боба есть хомяк, имя которого знает только Боб

Алиса создает в блокчейне контракт, открытие канала:

Quote
биткоин заберет тот кто:
ИЛИ
знает как зовут всех животных: кота, собаку и хомяка
ИЛИ
знает как зовут хомяка И кота И прошло полгода
ИЛИ
знает как зовут собаку И прошел год


При таком раскладе:
1. пока не пройдет полгода биткоин можно забрать только с согласия Алисы и Боба
2. в интервале между 0.5 года и 1 год, биткоин можно забрать без согласия Алисы, если ранее Алиса сказала один из своих секретов
3. через год Алиса может все забрать себе без всяких согласований. Это случай когда Боб умер и не отдал ключи наследникам.

Чтобы сделать лайтинг транзакцию, Алисе надо создать частично заполненный контракт:

Quote
Кота зовут Васька, 0.1 биткоина из самой первой транзакции может забрать тот, кто знает имя хомяка
Сдачу заберет тот, кто
ИЛИ
знает как зовут других животных: другого_кота_Алисы, собаку и другого_хомяка_Боба
ИЛИ
знает как зовут другого_хомяка_Боба И другого_кота_Алисы И прошло полгода
ИЛИ
знает как зовут собаку И прошел год


Теперь Боб знает имя кота и может забрать хоть 0.1 биткоина, хоть весь биткоин из транзакции открытия канала.
Допустим Боб решил забрать 1 биткоин, он должен написать контракт:

Quote
Хомяка зовут Тэймос, кота зовут Васька, жду полгода и беру из самой первой транзакции 1 биткоин.

В этот момент Алиса видит, что Боб ее решил наебать, но Алиса уже знает как зовут всех животных (имя хомяка Боб написал в мошенническом контракте). Поэтому Алиса немедленно сделает контракт:

Quote
Животных зовут Жучка, Васька, Теймос, я забираю все биткоины из самой первой транзакции себе немедленно.


Как видим, Бобу нет никакого смысла обманывать Алису. Поэтому вместо мошеннической транзакции он вынужден действовать по правилам и написать контракт:

Quote
Хомяка зовут Тэймос, кота зовут Васька, жду полгода и беру из самой первой транзакции  0.1 биткоин.
Сдачу заберет тот, кто
ИЛИ
знает как зовут других животных: другого_кота_Алисы, собаку и другого_хомяка_Боба
ИЛИ
знает как зовут другого_хомяка_Боба И другого_кота_Алисы И прошло полгода
ИЛИ
знает как зовут собаку И прошел год


sr. member
Activity: 403
Merit: 275
March 20, 2019, 05:22:17 AM
Quote
П.С. Когда я писал ранее, что "опубликует более новую транзакцию", это я делал для упрощения. На самом деле, Боб публикует этот специальный ключ который означает следующее: существует более свежая транзакция, а опубликованная является устаревшей.
Если с помощью этого "ключа" можно создать транзакцию и остановить мошенничество - можно считать, что Боб публикует транзакцию. Если нельзя - то что толку, даже если вся сеть будет орать, что Алиса обманывает Боба? Всем пофиг на это. Никого взаиморасчеты Алиса и Боба не касаются.
Я не знаю, как ещё можно предъявить специальный ключ, кроме как сделать транзакцию с использованием этого ключа. Может, можно как-то по другому, нигде явно не видел описания. Можт кто объяснит?
Code:
This output sends funds to either an HTLC-timeout transaction after the HTLC-timeout or to the remote node using the payment preimage or the revocation key. The output is a P2WSH, with a witness script:
# To remote node with revocation key
OP_DUP OP_HASH160 OP_EQUAL
OP_IF
    OP_CHECKSIG
OP_ELSE
    OP_SWAP OP_SIZE 32 OP_EQUAL
    OP_NOTIF
        # To local node via HTLC-timeout transaction (timelocked).
        OP_DROP 2 OP_SWAP 2 OP_CHECKMULTISIG
    OP_ELSE
        # To remote node with preimage.
        OP_HASH160 OP_EQUALVERIFY
        OP_CHECKSIG
    OP_ENDIF
OP_ENDIF
The remote node can redeem the HTLC with the witness:

If a revoked commitment transaction is published, the remote node can spend this output immediately with the following witness:

The sending node can use the HTLC-timeout transaction to timeout the HTLC once the HTLC is expired, as shown below.
sr. member
Activity: 403
Merit: 275
March 20, 2019, 04:51:48 AM
Вот здесь есть интересный диалог про SegWit и Lightning, и про возможность передать третьей стороне права на совершение штрафных транзакций (penalty transaction)
https://lists.linuxfoundation.org/pipermail/lightning-dev/2017-January/000652.html

П.С. следующее сообщение в переписке гиперссылка Next message
member
Activity: 229
Merit: 13
March 20, 2019, 04:47:37 AM
Quote
П.С. Когда я писал ранее, что "опубликует более новую транзакцию", это я делал для упрощения. На самом деле, Боб публикует этот специальный ключ который означает следующее: существует более свежая транзакция, а опубликованная является устаревшей.
Если с помощью этого "ключа" можно создать транзакцию и остановить мошенничество - можно считать, что Боб публикует транзакцию. Если нельзя - то что толку, даже если вся сеть будет орать, что Алиса обманывает Боба? Всем пофиг на это. Никого взаиморасчеты Алиса и Боба не касаются.
sr. member
Activity: 403
Merit: 275
March 20, 2019, 04:39:59 AM
А никто и не знал наверное о такой фиче.
Действительно: зачем инвойс?

Простыми словам: инвойс содержит специальный ключ, который не должны знать промежуточные ноды сети. Хэш от этого ключа путешествует по всей цепочке и служит подтверждением для взаиморасчётов.
sr. member
Activity: 403
Merit: 275
March 20, 2019, 04:35:57 AM
Когда Алиса отправляет Бобу средства, залоченные в канале, Алиса подписывает и передает
транзакцию вида "раньше на моей стороне было 0.1 btc, теперь на моей стороне 0.0 btc"
Кому она передаст это, если Боба нет в онлайне? А если он вообще навсегда умер? Или
не появится месяц? Он так и не узнает, что ему прислали что-то.
Алиса может отправить средства Бобу только тогда, когда Боб онлайн. Если Боб пропал до первого платежа по каналу, Алисе только и остаётся подписать свою транзакцию на возврат 0,1 (которую ей подписал и прислал Боб в момент создания канала) и опубликовать ее в сеть. Т.к. в контракте канала указано, что при получении транзакции  сетью биткоин нужно залочить ее на некоторое время, Алиса получит свои кровные только по прошествии этого некоторого времени.

Если платёж был совершён до смерти Боба, то в результате платежа у Боба есть транзакция, подписанная Алисой и ... специальный ключ revocation key, который Боб может предъявить (в виде публикации специальной транзакции в сеть биткоина revoked commitment transaction). Этот специальный ключ Алиса сгенерировала ещё на этапе предыдущей транзакции (транзакции создания канала) но хранила его у себя до поры до времени и передала с новой подписанной транзакцией (как бы этим аннулировав предыдущую). Суть его в том, что если Алиса опубликует в сеть предыдущую (устаревшую) транзакцию, Боб может его "предъявить" и получить все средства Алисы на свой адрес.

Чем больше Алиса совершала платежей, тем больше накопилось у Боба этих специальных ключей, на все случаи жизни: если Алиса опубликует любую из старых транзакций, Боб может опубликовать для неё специальный ключ, и наказать Алису на всю сумму депозита.

Когда я писал про теорию игр, гадалок и Рен-ТВ, я специально указал, что Алиса не должна знать Боба. Чем меньше у нее знаний о Бобе, тем с меньшей вероятностью она может определить смерть Боба. Конечно, например, если у меня нода LENINGRAD и Питерский IP-шник, и на Петербург была сброшена ядерная бомба, и в это время моя нода стала офлайн, - всё это хороший повод для мошенничества, именно для этого и планируется сделать "институт" сторожевых башен.

И вот сидит такая Алиса, и видит, что Боб, о котором она ничего не знает, офлайн, и думает: то ли Боб умер, то ли специально меня провоцирует, а как увидит мою мошенническую транзакцию  в сети сразу включится и  опубликует к ней специальный ключ?

П.С. Когда я писал ранее, что "опубликует более новую транзакцию", это я делал для упрощения. На самом деле, Боб публикует этот специальный ключ который означает следующее: существует более свежая транзакция, а опубликованная является устаревшей.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
March 20, 2019, 04:34:57 AM
Ещё, кстати, вброшу:
Никто не задумывался, почему если нода онлайн, на неё нельзя просто взять и совершить платёж, а обязательно нужно иметь от неё инвойс?
Мы этот вопрос обошли при обсуждении маршрутизации и прохождения платежа по цепочке нод.

А никто и не знал наверное о такой фиче.
Действительно: зачем инвойс?
sr. member
Activity: 403
Merit: 275
March 20, 2019, 04:34:15 AM
Зачем нужна полная нода при получении?
Полная нода биткоина при получении не нужна, достаточно SPV.
Pages:
Jump to: