Какво е Lightning invoice?
Lightning invoice (фактура) е начинът, по който заявявате, че искате да получите плащане чрез LN. Тя частично наподобява биткойн адресите, но има някои ключови разлики, на който трябва да обърнем внимание. Ето и пример:
lnbc8u1p0xjp9spp5v2t48wa7c3cjjs0ldxj8qcswjr04zg43ts62tx232vvqc7pa956sdqqcqzpgxqyz5vqsp5y0x7yrps4v4r4qtj2djyn9np25m9wpzpmgm2pu5wq0hgrklam7aq9qy9qsq633p0dxsncdpaagdqlurrqm33rwkcu3tw32jn96kr0q8fa8mfkyjdfx6ed6yg0gj2wnueae72tkjj9juysu2anyypy487uf9hpkqm6qpzt7s3t
В този си вид изглежда малко стряскащо. Именно затова в повечето случаи ще срещате фактурите под формата на QR код:
Какво информация ни предоставя?
Lightning network фактурата е съставена от две части:
- Първа част, която може да бъде разчетена от всеки
- Втора част, която съдържа поверителни данни
Двете части биват разделени от последната 1-ца, която може да бъде открита в номера на фактурата. В нашия пример първата част е lnbc1u. Тя представлява:
- Мрежата, за която тази фактура е валидна – в този пример „lnbc“ означава – Bitcoin main net.
- Сумата, кодирана във фактурата (num_satoshis). В този пример 1u е сумата. Това означава 1 микро биткойн или 0.000001 биткойна.
В останалата част от фактурата са закодирани допълнителни данни. Част от тях са задължителни, за да бъде фактурата валидна:
- destination: публичният ключ на лицето, което получава плащането.
- payment_hash: Хешът на предварителния образ (preimage), който се използва за заключване на плащането. Едно заключено плащане (locked payment) може да бъде redeem-нато единствено чрез preimage съответстващ на хеша. Това дава възможност за т.нар. routing в Lightning Network без доверени трети страни.
- expiry: Време, когато вашият възел отбелязва фактурата като невалидна. По подразбиране е 1 час или 3600 секунди.
- timestamp: Моментът, когато фактурата е създадена. Измерва се в секунди спрямо 1970г. По този начин може да се провери колко е стара и дали все още е валидна.
Във фактурата могат да бъдат включени и:
- description: бележка към фактурата, която може да съдържа всякаква информация, стига тя да е 639 байта или по-малка.
- description_hash: Използва се, когато бележката е по-голяма от 639 байта. Позволява включването на допълнителна информация към фактурата чрез хеширане.
- fallback_addr: Резервен биткойн адрес. Ако плащането чрез Lightning мрежата не може да се осъществи, можете да направите обикновена биткойн транзакция.
- route_hints: Маршрут за извършване на плащането. Не забравяйте, че Lightning мрежата се различава от блокчейн в смисъл, че трябва да намерите път, по който да извършите плащането, ако нямате отворен канал с получателя. Получателят на плащане (издателят на фактурата) може да предложи маршрут, който да използвате, за да извършите плащането.
Как се разчита един invoice?
Ето как изглежда една фактура, след като е декодирана чрез конзолата на lnd:

Това, което виждате тук, е фактура за 100 сатошита, генерирана от LN нод с публичен ключ 034143d1a45cb9bcb912eab97facf4a971098385c47. Фактурата е създадена 1544319954 секунди след 1970г. (9 декември 2018 г.) и ще изтече след 1 час. Лицето, което е генерирало фактурата, е оставило кратко описание, което гласи: Sample Invoice for 100 Sats.
Защитен механизъм
Lightning фактурите са защитени с дигитални подписи. Това означава, че ако някой опита да промени част от нея, подписът ще бъде анулиран. Това е от решаващо значение, тъй като във фактурата е закодирана чувствителна информация. Ако тя може да бъде променена, би било сравнително лесно да ви ограбят.
Ползи и приложения
Целта на резервния адрес (fallback address) е да се предостави на клиента възможност да заплати фактурата посредством обикновена биткойн транзакция. За целта във фактурата е закодиран биткойн адрес, който може да бъде използван от платеца при неуспешно плащане през LN. Това е чудесен инструмент за бизнеса, който понастоящем приема Lightning плащания. Тъй като LN все още е в бета версия и мрежата тепърва се разраства, могат да възникнат редица причини, поради които плащането да се окаже неуспешно. Възможно е да няма достатъчно голям канал, през който да премине плащането, клиентът може несъзнателно да се опитва да плати, докато каналът все още очаква потвърждение, или може би единственият наличен маршрутизиращ нод (хостван на VPN) временно е офлайн. Вместо сделката да пропадне, клиентът може да извърши плащане към биткойн адреса.
Бележката (description), която може да бъде добавена към Lightning фактурите също може да бъде много полезна. Чрез нея може да бъде отбелязано основанието на плащането по всяка отделна фактура, което значително ще улесни счетоводството на дадената компания. По този начин лесно може да се установи целта на всяко плащане, което сте получили. Например:

Хешираната бележка (description_hash) може да се окаже чудесен инструмент за хранителни магазини. Касиерът може да създадат хеш описание на касовата бележка и да го прикачи към фактурата. Когато извършите плащането чрез сканиране на QR кода, вашият LN портфейл ще съхрани това хеш описание. След това магазинът за хранителни стоки може да качи подробна разписка на вашите покупки на своя уебсайт, която по всяко време ще можете да постъпите посредством хеша.
Индексирането (AddIndex) е функция, която дава възможност за добавяне на пореден номер към всяка фактура, започвайки от номер 1. След това клиентите могат да използват този номер като checkpoint, за да следят неплатените фактури. Този метод за генериране на фактури е подходящ за абонаментни или стрийминг услуги.
Например, да кажем, че клиент се абонира за Netflix с месечни плащания от $10 на месец. Netflix от своя страна ще генерира индексирани фактури всеки месец, които клиентът може да плати автоматично, след като ги получи. Най-хубавото при индексираните фактури е, че ако нодът ви е офлайн, той може автоматично да открие последните фактури и да ги плати, след като се върне онлайн.
Lightning фактурите са изключително гъвкави и полезни. Те предоставят много повече мета информация за плащане, отколкото традиционния биткойн адрес. Това позволява на потребителите в LN da бъдат по-уверени в това кога, къде и как се обработва едно плащане.