?

Log in

No account? Create an account
Про блискавку - ιχθυσς — LiveJournal
July 25th, 2018
10:25 am

[Link]

Previous Entry Share Next Entry
Про блискавку
Ті, хто слідкують за новинами з області криптовалют, в курсі, а для решти скажу пару слів про те, що таке Lightning network і з чим його їдять. Якщо скоротити до одного речення, то вийде: lightning network — це мережа другого рівня, що будується на базі мережі blockchain і дозволяє значно збільшити її пропускну здатність та швидкість роботи за рахунок винесення основної маси транзакцій за межі блоків (offchain). На цю технологію покладають дуже великі сподівання, і не на порожньому місці.

Спочатку проілюструю основні ідеї технології на життєвому прикладі. Скажімо, у мене з сусідом Петром є орендована банківська комірка, в ній лежить мільйон баксів. Крім того, ми маємо розписку, в якій написано, що півмільйона належить йому, а півмільйона — мені. Відкрити комірку ми можемо або разом, або поодинці, але в присутності працівників банку, які переконаються, що гроші з комірки будуть забрані в точній відповідності до розписки.

Припустимо, я хочу зустрітися з Трампом, і для цього я повинен перерахувати йому 400 тис. доларів. Я телефоную Петру і кажу: у тебе, пригадується, є кум в Штатах. Мені треба заплатити 400 тисяч Трампу. Давай я перепишу розписку, що 900 тисяч належать тобі, а мені лише 100, а ти ці 400 тисяч через кума перерахуєш, куди слід. Петро каже — окей, — і біжить шукати розписку на ті два мільйона, що лежать у його спільній з кумом комірці.

Тепер опишу технічні деталі. Технологія blockchain, запропоноваша Сатосі Накамото в 2009 році і реалізована ним же в 2010 при створенні криптовалюти Біткоїн, вирішила найбільшу проблему децентралізованої платіжної системи — арбітраж несумісних транзакцій. Іншими словами, він запропонував протокол, що дозволяє зробити консенсусний вибір на користь однієї з кількох транзакцій, що витрачають одні й ті ж самі кошти.

Ця технологія, при своїй революційності, має певні особливості, які на даному етапі розвитку даються взнаки. По-перше, з технічних причин затверджені транзакції об'єднуються в блоки, шо випускаються відносно рідко (в Біткоїні — в середньому раз на 10 хвилин, в сучасніших валютах, як правило, порядку 2-3 хвилин). Оскільки затвержденою остаточно транзакція може вважатися лише після 3-6 блоків, час затвержденя транзакції може бути досить суттєвим. В багатьох випадках це не важливо, але в деяких грає суттєу роль.

По-друге, основу мережї Біткоїн (як і будь-якої мережі на основі blockchain) складають комп'ютери, що зберігають і обробляють копію всієї історії транзакцій від початку роботи мережі. На даний момент об'єм такої бази даних складає близько 180 ГБайт — цілком доступний пересічному користувачу, хоча і суттєвий, об'єм. Щоб уникнути централізацї мережі, цей об'єм і має залишатись широко доступним, що накладає досить суворі обмеження на кількість транзакцій, які може обробити мережа. Цієї зими мережа вперлась в таке обмеження, що призвело до комісії за транзакцію в десятки доларів. На даний момент ситуація заспокоїлась, і комісії знову нормальні, але це лише тимчасово.

Ідея мережі лайтнінг полягає в тому, щоб винести основну масу тразакції за межі блоків, але при цьому зберегти надійність, що забезпечується блокчейном. В найпримітивнішій формі це виглядає так:

Два учасника мають намір часто проводити між собою розрахунки в біткоїнах. Для цього вони готують дві транзакції, цілком коректні з точки зору мережі Біткоїн. Перша транзакція переміщує належні їм кошти на спеціальну адресу, з якої витрачати коти можна тільки за обопільною згодою (т.зв. multisig-адреса). Друга транзакція повертає з цієї адреси кошти власникам. Обидві транзакції підписуються, але публікується лише перша з них. Другу транзакцію обидва учасники просто зберігають кожен у себе. Таким чином утворюється платіжний канал мережі lighting — заблоковані з точки зору мережі біткоїн кошти, в межах яких учасники можуть проводити взаємні розрахунки. Публікація ж другої транзакції та її фіксація в блокчейні закриває канал і повертає належні гроші їх власникам.

Якщо учасники бажають провести платіж, вони просто замінюють другу (незафіксовану в блокчейні) транзакцію новою. Приміром, попередня транзакція розподіляла кошти з каналу так: одному 0.5 BTC, другому 0.5 BTC. Якщо перший учасник бажає перерахувати 0.1 BTC другому, вони замінюють транзакцію на таку, яка перераховує першому 0.4 BTC, а другому 0.6 BTC.

«Замінюють» — легко сказати, а що буде, якщо тось з учасників відправить застарілу транзакцію? На цей випадок передбачене «знищення» застарілих транзакцій. Учасники обмінюються такими ключами, які дозволять протидіяти спробі учасника відправити застарілу транзакцію: якщо він її опублікує, то інший учасник протягом кількох днів з момента публікації матиме можливість перевести всі гроші з канала собі.

Таким чином, платіжний канал дозволяє двом учасникам проводити між собою скільки завгодно операцій в межах зарезервованої суми. А що, якщо потрібно провести платіж між учасниками, що не мають спільного каналу? В такому разі з великою ймовірністю можливо знайти ланцюжок каналів, що сполучає цих двох учасників. Провести платіж по цьому ланцюжку — питання техніки. Єдиним ускладненням буде питання: як досягти того, щоб гроші не застрягли на чийомусь проміжному рахунку? Це робиться таким чином: в кожну операцію з ланцюжка додається умова: платіж дійсний лише в тому разі, якщо отримувач пред'явить розв'язок даної (дуже складної) математичної задачки. Коли ланцюжок умовних платежів сформовано, платник передає розв'язок задачі отримувачу. Він пред'являє його передостанньому учаснику ланцюжка і отримує гроші (уже безумовно). Передостанній учасник може спокійно передати йому гроші, адже він тепер може бути певним, що зможе отримати гроші з третього з кінця учасника — бо знає рішення задачки. Таким чином, всі платежі в ланцюжку по черзі замінюються з умовних на безумовні.

Якщо коротко, то це все. Така конструкція дозволяє:

  • виконувати платежі практично миттєво. Не потрібно більше очікувати фіксації транзакцій в блоках, достатньо отримати підтрверждення від всіх учасників ланцюжка.
  • мати низькі комісії. Транзакції більше не конкурують за дефіцитне місце в блоку, тому ціна операції може прямувати до ціни кількох кілобайт дискового простору, кількох сотень кілобайт трафіку та кількасот мілісекунд процесорного часу. Іншими словами, бути практично безкоштовною.
  • об'єднувати кілька блокчейнів (валют) з автоматичною конвертацією. Всі канали в ланцюжку зовсім не зобов'язані належати одній криптовалюті.
  • покращена приватність: транзакції лайтнінг не доступні публічно.


Мінуси технології:

  • учасник має бути постійно онлайн. Якщо він пропустить проміжок часу, в який він може «відмінити» опубліковану нечесним партнером застарілу транзакцію, він може втратити кошти. На щастя, таке «чергування» можна легко передовірити третій стороні за незначну комісію. Однак це означає, що зберігання грошей в мережі лайтнінг потребує постійних, хоч і незначних, витрат.
  • випливає з попереднього: неможливість (або, принаймні, велика складність) т.зв. offline storage. Так називають технологію, коли транзакція Біткоїн підписується на одному комп'ютері, а публікується з іншого. Це дозволяє уникнути розміщення ключів, що дають доступ до коштів, на комп'ютері, вразливому до мережевого злому. З лайтнінгом так не вийде.
  • обов'язковість регулярного резервного копіювання. Якщо для біткоїн-гаманця резервну копію можна зробити лише один раз, при створенні, і зберігати її хоч би і у паперовому вигляді, у лайтнінг-мережі резервну копію треба виконувати після кожної транзакції. Спроба закрити канал за допомогою застарілого гаманця буде трактуватись мережею як спроба махінації, і ви можете втратити всі кошти.
  • ризик «застрягання» транзакції. Якщо у процессі виконання оплати один з учасників ланцюжка пропаде з ефіру, кошти до вас, звісно, повернуться, але можуть бути заблоковані на кілька годин або навіть діб. Гірше того, заблоковані будуть не тільки ті кошти, що мали бути відправлені, а всі кошти з платіжного каналу, тобто значна частина або навіть усі ваші кошти.
  • потенційна централізація. У зв'язку з попереднім, найімовірніше, більшість платежів будуть проходити через надійні вузли з гарною репутацією. Таких будуть десятки чи сотні, що створює помітні ризики централізації.
  • «дитячі» хвороби мережі. Нещодавно опублікували дослідження, в якому з транзакції понад 5 доларів лише меншість пройшла успішно. Це пов'язано, по-перше, з тим, що в каналах зарезервовано зовсім небагато коштів, оскільки їх зараз створюють більше "на пробу", ніж для використання, і, по-друге, з ненадійністю багатьох вузлів. Втім, мережі лише півроку, так що все попереду.


@DW

Tags: , , ,

(Leave a comment)

Powered by LiveJournal.com