Обмен электронных валют по самому выгодному курсу!
 


Kurbetsoft
Доступно в Google PlayАльфа-релиз Lightning Network Daemon (LND)

Альфа-релиз Lightning Network Daemon (LND)

10 января 2017 был выпущен альфа-релиз Lightning Network Daemon версии 1.0 (lnd). Этот релиз знаменует собой важную веху развития Lightning Network, а также Биткойна в целом. В этой версии управляющая программа lnd представляет функционально полную реализацию Lightning Network, которая готова для открытого тестирования разработчиками.

Альфа-версия 1.0 Lightning Network Daemon (LND)

Подписанный релиз доступен в репозитории на GitHub. lnd является полноценным релизом Lightning Network, который позволяет открывать и закрывать каналы между пользователями, осуществлять обработку состояния каналов, полностью сохранять проверку подлинности графиков каналов, выполняя поиск внутри сети, осуществлять пассивную переадресацию входящих платежей и отправку исходящих зашифрованных «луковичных» сообщений.

В этой статье мы вкратце ознакомимся с высокоуровневой архитектурой lnd, представлением API для разработчиков, использованием будущего обновления Биткойна SegWit в lnd и сетевыми возможностями lnd.

Страна Go

hacking-bitcoin-with-go

Вся база исходного кода lnd создана с нуля с использованием Go, нового системного языка программирования, упрощающего создание удобного, надёжного и эффективного программного обеспечения. Мы выбрали именно Go, так как этот язык предоставляет превосходную поддержку параллелизма, обширные стандартные библиотеки, обеспечивает защиту памяти и отличается невероятной простотой.

Последнее немаловажно, так как при разработке базы кода lnd мы стремились в первую очередь обеспечить удобочитаемость кода.
Мы стремимся максимально упростить продукт, чтобы пользователи могли подробнее изучить протокол Lightning Network или размещать запросы на включение изменений в код проекта. Имеется обширная внутренняя документация по базе кода в форме грамотного программирования, а также инфраструктура для тестирования, так как мы в первую очередь оптимизируем время разработчика, а не компьютера.

Любая важная кодовая база Биткойн-кода требует надёжных, простых в использовании, проверенных базовых библиотек для взаимодействия с сетью и выполнения регулярных задач, таких как создание и подписание транзакций, создание скриптов, поиск важных транзакций в цепочке и т. д. Мы выбрали Биткойн-библиотеку btcsuite, тот самый набор библиотек, на базе которого работает btcd, реализация полного узла Биткойна на языке Go.

Для полного управления каналами и реагирования на соответствующие события в канале, первому релизу lnd требуется btcd в качестве прямого источника данных блокчейна. Сейчас ведётся работа над новым Биткойн-узлом облегчённого клиента, совместимым с Lightning, который позволит отказаться от зависимости на btcd в будущих релизах. Вдобавок к использованию библиотек btcsuite, некоторые разработчики, такие как roasbeef, также вносят свои изменения в проект, так как это крайне важная часть Биткойн-инфраструктуры.

API для разработчиков

GRPC

lnd представляет высокопроизводительный, эффективный и гибкий слой RPC на базе gRPC, кроссплатформенного опенсорсного фрэймворка RPC на базе HTTP/2 и protobufs. gRPC может создавать клиентские библиотеки для определённого языка, благодаря чему разработчики приложений могут без проблем писать под lnd на комфортном для них языке программирования. Эти клиентские библиотеки делают взаимодействие с lnd таким же простым, как и манипуляции с объектами в произвольно выбранном языке. На момент релиза поддерживаются такие языки, как C++, Java, Python, Go, Ruby, G#, Node.js, Objective-C и PHP.

Вдобавок к предоставлению встроенного слоя для клиентской доступности с использованием собственного языка, lnd также позволяет воспользоваться интерфейсом HTTP-REST, возможности которого те же самые, как и у интерфейса gRPC, за исключением RPC-вызовов для двунаправленной потоковой передачи, предоставляемых gRPC.

Каналы Lightning – внутри SegWit

СегВит SegWitМы смогли создать Lightning Network благодаря отдельным платёжным каналам в форме соединённых между собой ссылок. В архитектурном дизайне lnd рассчитано на грядущее обновление Биткойна – SegWit. Несмотря на присутствие альтернативных, хотя и не столь идеальных способов построения платёжных каналов, именно благодаря SegWit мы можем развернуть наиболее эффективную, гибкую и безопасную структуру каналов. Кроме того, возможности обновления скрипта Биткойна, которые предоставляет SegWit, позволяют обновить всю Биткойн-сеть, а также повысить конфиденциальность и эффективность Lightning Network. К примерам таких улучшений можно отнести подписи Шнорра на основе эллиптических кривых и создание новых оп-кодов, обеспечивающих более высокий уровень конфиденциальности платежей через Lightning, путём рандомизации хэшэй ну пути прохождения платежа.

Три самых важных фичи Lightning на базе SegWit — отказоустойчивый мониторинг внешних каналов, бесконечное время жизни канала и двухфазная схема HTLC, предложенная Мэтсом Джеррачем (Mats Jerratsch) (позже изменённая Таджем Драйджа (Tadge Dryja)). Без SegWit, полностью автоматизированный аутсорсинг каналов, включающий трансляцию транзакции, в которой аутсорсер подтверждает все средства в конкурентном канале, невозможен. Это оттого, что без решения проблемы пластичности транзакций, невозможно заранее узнать ID транзакции, закрывающей канал на блокчейне Биткойна. Аналогичным образом, двухфазная схема HTLC значительно улучшает использование Lightning, обеспечивая возможность длительную задержку отклика при краткой задержке осуществления платежа, что было бы небезопасно без SegWit.

Внутренний кошелёк lnd полностью поддерживает SegWit. Он может использовать вложенные P2SH-адреса SegWit, которые выглядят как обычные P2SH-адреса, а также родные адреса SegWit, которые более эффективны и позволяют увеличить масштабируемость. lnd внедряет BIP 142, определяющий формат внутренних адресов SegWit. Эти адреса можно использовать для пересылки денежных средств между экземплярами lnd или в программном обеспечении, поддерживающем этот BIP, таким как bcoin. В тестовой сети, P2WSH-адрес с поддержкой BIP 142 выглядит следующим образом:

QWyzAWWPYUgdc6j6HxQpgvqKtyBo4xYjBkwr

Микроплатежи с «луковичной» маршрутизацией

Lightning Network позволяет осуществлять мгновенные сквозные защищённые микроплатежи с использованием метода HTLC (Hash-Time-Locked-Contract). В lnd все исходящие платежи отправляются с применением изменённой версии Sphinx, позволяющей отправлять запросы, полностью зашифрованные от отправителя и до получателя. Маршрутизация платежей в виде незашифрованного текста не поддерживается. Это означает, что обеспечение конфиденциальности предполагается по умолчанию, как и должно быть.

Процедура осуществления платежа в Lighting очень похожа на аналогичную процедуру в традиционных финансовых структурах, таких как PayPal или Stripe. Получатель платежа создаёт счёт и отправляет его плательщику, который осуществляет платёж, отправляя средства по сети. lnd предоставляет схему предварительного шифрования запроса на оплату, которая упрощает пользователям согласование условий осуществления платежа. Полностью закодированный запрос на оплату содержит публичный ключ получателя, хэш платежа и сумму перевода. Пример зашифрованного запроса на оплату выглядит следующим образом:

ycyr8brdjic6oak3bemztc5nupo56y3itq4z5q4qxwb35orf7fmj5phw8bx148zzipg3rh6t1btadpnxf7z1mnfd76hsw1eaoca3ot4uyyyyyyyyydbibt79jo1o

Одноранговая сеть

Все операции между узлами lnd шифруются по умолчанию с использованием современного протокола обмена криптографическими сообщениями транспортного уровня, взятого с платформы Noise Protocol Framework. В результате, между узлами lnd вообще не передаются сведения в виде обычного текста, даже первоначальная версия согласования. После соединения, узлы начинают обмениваться данными об узлах и каналах, прошедшими проверку подлинности, эти данные время от времени распространяются по сети. Все заявленные каналы содержат доказательство проверки подлинности канала, которое подтверждает, что канал закреплён в непотраченном выходе, а также имеет ассоциированные, заверенные мультиподписью ключи, привязанные на блокчейне Биткойна к сущностям публичных ключей пиров слоя Lightning Network.

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

Спецификацию аутентификационной сети распространения информации, внедрённой в lnd, можно почитать здесь в, рамках спецификации Lighting Network.

Спецификации Lightning Network

Набор документации, описывающий Lighting Network, называется BOLTs – Базовая (документация) О Технологиях Lightning. В lnd пока что реализованы не все возможности, описанные в спецификациях. Актуальную информацию о текущей стадии разработки можно почерпнуть в README. В будущем релизе мы предварительно планируем реализовать в коде полное соответствие базовой документации. Позже будет обеспечена поддержка совместимости с другими реализациями Lightning.

Участники проекта

Над этим выпуском lnd совместно работали разработчики со всего мира, включая специалистов Lightning Labs, Bitfury, Blockchain Lab, Chaincode Labs и MIT DCI. Ниже представлен полный список разработчиков в алфавитном порядке (по именам):

  • Алексей Островский (Aleksei Ostrovskiy);
  • Алекс Аксельрод (Alex Akselrod);
  • Эндрю Самохвалов (Andrew Samokhvalov) (andrew.shvv);
  • Брайан Бишоп (Bryan Bishop) (kanzure);
  • Брайан Ву (Bryan Vu);
  • Джон Ньюбери (John Newbery);
  • Джозеф Пун (Joseph Poon);
  • Евгений Щербина (Evgeniy Scherbina);
  • Кристофер Йемтхеген (Christopher Jämthagen);
  • Микола Сахно (Mykola Sakhno);
  • Олаолува Осунтокун (Olaoluwa Osuntokun) (roasbeef);
  • Пол Кэйпстэни (Paul Capestany);
  • Рикардо Касатта (Riccardo Casatta);
  • Слава Жигулин (Slava Zhigulin);
  • Тадж Драйджа (Tadge Dryja).

Ищем разработчиков!

Мы ищем сотрудничества с разработчиками, желающими почуствовать возможности новой технологии, заинтересованными в экспериментах с lnd с целью создания новейших приложений второго уровня на базе Lightning Network. Для общения на тему разработки и поддержки lnd мы создали канал #lnd на freenode.

 

Источник




[vkontakte] [facebook] [twitter] [odnoklassniki] [mail.ru] [livejournal]

Каталог сайтов