Руководство как создать собственный переносной плагин Lightning node!Хочу представить вашему вниманию перевод статьи
"How to build your own portable plug-in Lightning node!" автора
grublesФото взято из блога https://hackernoon.com/how-to-build-your-own-portable-plug-in-lightning-node-c4093a4b10fbРазделы:⚫ Введение / требования
⚫ Организация отправки пакетов
⚫ Сборка
c-lightning и
bitcoin-cli⚫ Установка Lightning Charge
⚫ Установка
nanopos для создания торговой точки (point-of-sale)
* * *
Inverse Path USB Armory (в дальнейшем сокращенно, Armory) - это уникальное устройство среди популярной в настоящее время категории аппаратного обеспечения с поддержкой SoC, в которую входят Raspberry Pi и Rock64. Как и другие системы, она относительно слаба с точки зрения вычислительных возможностей. Однако его уникальность проистекает из его компактного размера и его компонентов. The Armory не требует отдельного питания или сетевой розетки; для работы ему нужен только USB-порт. Inverse Path USB Armory получает питание через USB-порт, а также таким же образом связывается со своим хост-устройством - через эмулируемое соединение Ethernet. Armory использует процессор NXP i.MX53 ARM® Cortex™ -A8, работающий на частоте 800 МГц. Он также включает в себя 512 МБ оперативной памяти DDR3 и слот для карт памяти microSD.
Плата USB Armory была создана Inverse Path с целью помощи в разработке различных приложений безопасности.
Возможность эмуляции произвольных USB-устройств в сочетании со скоростью SoC i.MX53, функциями безопасности, гибкой и полностью настраиваемой операционной средой делает USB-хранилище идеальной платформой для всех видов персональных приложений безопасности.
Открытость и минимальный дизайн для оборудования Inverse Path USB Armory облегчает проверку и значительно ограничивает потенциальные возможности и масштаб атак по цепочке поставок. Инфо от: https://inversepath.com/usbarmory* * *
Хороший вариант использования, который пользуется преимуществами форм-фактора, питания через USB и эмулируемого Ethernet-через-USB, представляет собой портативный кошелек Bitcoin Lightning. С этой конфигурацией пользователи могут настроить устройство, которое запускает
c-lightning и хранит свои закрытые ключи на портативной платформе, которая легко подключается к существующему оборудованию, такому как Raspberry Pis, которое запускает
bitcoind. Также, есть другой вариант, если у пользователя есть ноутбук, на котором работает полноценная
BTC нода. Armory можно просто подключить к ноутбуку, а затем пользователь может осуществлять транзакции через сеть Lightning и запускать приложения на основе Lightning (LApps).
Другой вариант использования для устройства - это добавления вычислительной мощности на устройства с низкими вычислительными характеристиками, такими как старый ноутбук или Raspberry Pi. Таким образом, Armory действует как своего рода сопроцессор для Lightning!
Armory подключен к Rock64,
фото взято из блога https://hackernoon.com/how-to-build-your-own-portable-plug-in-lightning-node-c4093a4b10fbТребования:⚫ Inverse Path USB Armory⚫ карта microSD емкостью 4 ГБ или более с установленным
официальным базовым образом Debian⚫ Хост-устройство USB (ноутбук, стационарный компьютер или RPi-подобное устройство)
⚫ Bitcoind работает в вашей локальной сети или в другом месте с учетными данными для доступа к RPC
* * *
Подготовка Armory к установке: Все, что нужно
Lightningd для связи с удаленной
bitcoind - это
bitcoin-cli, что значительно сокращает время, необходимое для сборки Armory. Перекрестное взаимодействие возможно, но это выходит за рамки данного руководства. Чтобы собрать только
bitcoin-cli, необходимо извлечь код
BTC из его репозитория на Github. Но, прежде чем это можно будет сделать, на главном устройстве должна быть включена пересылка пакетов (устройство, к которому подключен Inverse Path USB Armory).
Создание сети: Armory (если вы используете официальный базовый образ Debian), когда он подключен и загружен, создайте виртуальный интерфейс, который эмулирует соединение Ethernet (
оригинальная ссылка на англ.,). После настройки, Armory и его USB-хост могут сообщаться друг с другом, как если бы они находились в одной локальной сети (поскольку технически так оно и есть). USB-хост может разрешать пересылку пакетов Armory или запрещать, и если разрешено, то позволяет Armory открывать каналы Lightning Network с другими нодами за пределами локальной сети. Также требуется переадресация пакетов для установки инструментов сборки и зависимостей.
Windows: Инструкции по включению переадресации пакетов (совместное использование соединения) для Windows 7, 8 и 10 можно найти
здесь.
MacOS: Инструкции для MacOS можно найти
здесь.
Linux: Примечание: на Ubuntu 16.04, сетевой менеджер не мешает. Однако на конфигурациях других дистрибутивов может.Инструкции для Linux:
Включить маскировку для исходящих соединений:
# iptables -t nat -A POSTROUTING -s 10.0.0.2/32 -o wlan0 -j MASQUERADE
Включить переадресацию IP:
# echo 1 > /proc/sys/net/ipv4/ip_forward
* * *
Подключите Armory и обратите внимание на мигающий белый светодиод. Это значит, что Armory запущен. Медленно мигающий светодиод начинает мигать быстрее по мере активности использования Armory.
Теперь заходим по
ssh на Armory с учетными данными базового образа Debian установленными по умолчанию (логином и паролем являются
usbarmory)
Пингуем публичный адрес, чтобы увидеть, маршрутизируется ли ваш Armory правильно:
В случае успеха, вы получите такие отклики:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=60 time=46.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=60 time=48.0 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=60 time=48.1 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=60 time=71.5 ms
Замечательно!
* * *
Сборка c-lightning: $ sudo apt update && sudo apt -y upgrade
Как только это будет завершено, перезагрузите Armory после обновления ядра:
Теперь начинайте установку инструментов сборки и зависимостей, необходимых для компиляции
bitcoin-cli и
c-lightning:
$ sudo apt-get install -y \
autoconf automake build-essential git libtool libgmp-dev \
libsqlite3-dev python python3 net-tools libsodium-dev \
pkg-config libssl-dev libevent-dev \
libboost-system-dev libboost-filesystem-dev \
libboost-chrono-dev libboost-program-options-dev \
libboost-test-dev libboost-thread-dev tmux curl
Сделайте копию с репозитория
c-lightning на Гитхабе:
$ git clone https://github.com/ElementsProject/lightning.git
Перейдите в локальный репозиторий:
Затем начинайте сборку:
После этого перейдите в домашний каталог пользователя
usbarmory:
Загрузите архив исходного кода Bitcoin Core 0.18.0
(примечание: на момент написания оригинала статьи последняя версия ядра была 0.16.0, я для вашего удобства внес правки на последнюю версию 0.18.0), SHA256SUMS.asc и импортируйте ключ GPG сборщика Ядра для проверки хэшей. Наконец, распакуйте архив:
$ wget https://bitcoincore.org/bin/bitcoin-core-0.18.0/bitcoin-0.18.0.tar.gz
$ wget https://bitcoincore.org/bin/bitcoin-core-0.18.0/SHA256SUMS.asc
$ gpg --recv-key 90C8019E36C2E964
$ gpg --verify SHA256SUMS.asc
$ sha256sum -c --ignore-missing SHA256SUMS.asc
# should output an "OK"
$ tar zxvf bitcoin-0.18.0.tar.gz
Превосходно!
Теперь, приступайте к сборке
bitcoin-cli.
* * *
Сборка bitcoin-cli: Перейдите в каталог исходного кода Bitcoin и запустите процесс установки:
$ cd bitcoin-0.18.0/
$ ./autogen.sh
Во время работы
autogen.sh, может произойти поток предупреждающих сообщений о языковых локалях. Это можно исправить, установив языковую локаль:
$ sudo dpkg-reconfigure locales
# Select something like en_US.UTF-8 and hit Ok
Продолжение процесса установки:
$ CFLAGS="-march=native" ./configure --disable-wallet
- march=native сообщает нашему компилятору
gcc, чтобы автоматически обнаруживал процессор Armory и включал оптимизацию, специфичную для этого процессора. Это помогает выжать дополнительное увеличение производительности процессора ARM, что важно, потому что этот процессор относительно медленный.
bitcoind не устанавливается, поэтому
libdb не нужен. Выберите
--disable-wallet для установки без поддержки кошелька (
с-lightning будет кошельком в этой конфигурации).
Теперь, собираем
bitcoin-cli:
Наконец, скопируйте недавно собранный бинарный файл
bitcoin-cli в
/usr/local/bin:
$ sudo cp src/bitcoin-cli /usr/local/bin
$ whereis bitcoin-cli
# Should return "/usr/local/bin/bitcoin-cli"
Подключение Armory к bitcoind через RPC: c-lightning использует
bitcoin-cli для отправки необработанных транзакций в
bitcoind по различным причинам, таким как открытие, принудительное закрытие или обоюдное закрытие каналов. Поскольку
c-lightning работает на Armory, он также требует
bitcoin-cli. Тем не менее,
bitcoin-cli должен иметь возможность сообщаться с
bitcoind, поэтому создайте и добавьте соответствующие элементы на Armory и USB-хост, в
bitcoin.conf:
На USB-хосте или другом устройстве, на котором запущен
bitcoind, укажите следующие элементы в
bitcoin.conf:
rpcuser= <username>
rpcpassword= <yourpasswordnotthisone>
rpcallowip= <the Armory's IP address>
Сохраните эти изменения, а затем создайте
bitcoin.conf на Armory и добавьте следующие элементы:
$ nano ~/.bitcoin/bitcoin.conf
В
bitcoin.conf:
rpcuser= <username from before>
rpcpassword= <password from before>
rpcconnect= <USB hosts's IP (10.0.0.2)>
Можете заменить IP-адрес
10.0.0.2 для
bitcoind, который может находиться под наблюдением 3-х лиц (например на
192.168.0.254)
Попытка запросить
bitcoind из Armory:
В случае успеха будет возвращен ответ с соответствующей информацией (размер блока, сложность и т. д.)
Потрясающе!
* * *
Запуск c-lightning:Теперь, когда все собрано, настроено и подключено к сети правильно,
c-lightning можно запустить.
Запустите сеанс
tmux, а затем запустите
lightning:
$ tmux
$ ./lightning/lightningd/lightningd --network testnet --log-level debug
$ ./lightning/cli/lightning-cli getinfo
Примечание: выберите --network bitcoin вместо --network testnet, если вы #безрассудны. (В этом случае вы будете совершать платежи не в тестнете, а в сети Биткоина)Если
lightning начинает выводить
Adding block <block number>, а
lightning-cli возвращает текущий размер блока (среди другой информации), значит Armory успешно настроен!
lightning-cli теперь может использоваться для генерации новых адресов для ввода/вывода Биткойнов, а также для открытия/закрытия каналов Lightning Network!
Lightning charge:LApps-это приложения созданные в Lightning, которые задействуют мгновенные платежи, проводимые Lightning network. Недавно выпущенные LApps включают те, которые перечислены здесь в блоге Blockstream:
https://blockstream.com/2018/03/29/blockstreams-week-of-lapps-ends.html (Статьи о приложениях LApps на русском:
ссылка 1,
ссылка 2)
Чтобы запустить эти приложения LApps, Lightning Charge должен быть установлен на Armory.
Lightning Charge-это система обработки микроплатежей, написанная на node.js. Она предоставляет функциональность c-lightning через свой REST API, к которому можно получить доступ через библиотеки JavaScript и PHP. Ссылки: оригинальная на англ., не оригинальная на русскомLightning Charge требует
c-lightning и
nodejs. Установите их сейчас:
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
На момент написания статьи Debian стабильно работал с версией node.js 8.x, на момент совершения перевода на гитхабе есть информация, что 12.x версия node.js поддерживается, поэтому можете устанавливать сразу её, прописав 12.x в вышеуказанном коде вместо 8.x. Работоспособность не тестировал, но считаю это сделать правильным, чтобы работали последние версии приложений LApps.Ошибки разрешений могут возникнуть из-за предоставленного nodesource.com комплекта
nodejs. Чтобы обойти это, выполните следующие действия:
$ mkdir ~/.npm-global
$ npm config set prefix '~/.npm-global'
Добавьте следующее в
~/.profile:
$ export PATH=~/.npm-global/bin:$PATH
Наконец:
Далее просто используйте
npm для установки Lightning Charge и запустите
charged:
$ npm install -g lightning-charge
$ charged --api-token <a secret token>
charged будет работать через порт 9112 используемый по умолчанию!
Установка nanopos LApp, чтобы превратить ваш модуль Lightning в микро торговую точку (point-of-sale):nanopos легко устанавливается с
npm:
Отредактируйте файл
items.yaml с продуктами для продажи, укажите валюту с помощью
--currency, а затем запустите
nanopos:
$ nanopos -t <charge API token> --items-path items.yaml --currency USD
Заголовок отображаемой страницы может быть изменен с помощью
--title, и есть ассортимент тем, доступных на bootswatch.com что может быть выбрано с
-m.
Теперь
c-lightning,
charged, и
nanopos LApp все работает на портативном Armory!
Фото взято из блога https://hackernoon.com/how-to-build-your-own-portable-plug-in-lightning-node-c4093a4b10fbПосле совершения транзакции просто выключите Armory и отключите его, чтобы подготовить его для транспортировки. Когда вам снова понадобится совершить транзакцию, подключите его обратно,
ssh и снова запустите
c-lightning. Устройство также может быть настроено на использование
bitcoind, работающего на VPS или аналогичном общедоступном хостинге, для дальнейшего повышения портативности (в этом случае требуется только Armory без необходимости использовать рабочую станцию/ноутбук/другой хост с
bitcoind).
Armory также может работать в "автономном режиме", который не требует USB-хоста для связи с сетью и/или питания (да, он по-прежнему питается через USB). Это позволяет использовать Armory в варианте гораздо более портативной конфигурации с питанием от батареи и связью с сетью через WiFi!
Спасибо за чтение!
автор оригинальной статьи:
-grubles