Title: Как создать переносной плагин LN Post by: FontSeli on May 30, 2019, 01:11:46 AM Руководство как создать собственный переносной плагин Lightning node!
Хочу представить вашему вниманию перевод статьи "How to build your own portable plug-in Lightning node!" (https://hackernoon.com/how-to-build-your-own-portable-plug-in-lightning-node-c4093a4b10fb) автора grubles (https://hackernoon.com/@notgrubles) https://cdn-images-1.medium.com/max/1200/1*o8gv4N5c65BKlIj7q8A-rg.jpeg Фото взято из блога 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! https://cdn-images-1.medium.com/max/1200/1*KOXpu0Y1fZy61d3oRacMnQ.jpeg Armory подключен к Rock64, фото взято из блога https://hackernoon.com/how-to-build-your-own-portable-plug-in-lightning-node-c4093a4b10fb Требования: ⚫ Inverse Path USB Armory (https://inversepath.com/usbarmory) ⚫ карта microSD емкостью 4 ГБ или более с установленным официальным базовым образом Debian (https://github.com/inversepath/usbarmory-debian-base_image/releases) ⚫ Хост-устройство USB (ноутбук, стационарный компьютер или RPi-подобное устройство) ⚫ Bitcoind работает в вашей локальной сети или в другом месте с учетными данными для доступа к RPC * * * Подготовка Armory к установке: Все, что нужно Lightningd для связи с удаленной bitcoind - это bitcoin-cli, что значительно сокращает время, необходимое для сборки Armory. Перекрестное взаимодействие возможно, но это выходит за рамки данного руководства. Чтобы собрать только bitcoin-cli, необходимо извлечь код BTC из его репозитория на Github. Но, прежде чем это можно будет сделать, на главном устройстве должна быть включена пересылка пакетов (устройство, к которому подключен Inverse Path USB Armory). Создание сети: Armory (если вы используете официальный базовый образ Debian), когда он подключен и загружен, создайте виртуальный интерфейс, который эмулирует соединение Ethernet (оригинальная ссылка на англ. (https://en.wikipedia.org/wiki/Ethernet_over_USB),). После настройки, Armory и его USB-хост могут сообщаться друг с другом, как если бы они находились в одной локальной сети (поскольку технически так оно и есть). USB-хост может разрешать пересылку пакетов Armory или запрещать, и если разрешено, то позволяет Armory открывать каналы Lightning Network с другими нодами за пределами локальной сети. Также требуется переадресация пакетов для установки инструментов сборки и зависимостей. Windows: Инструкции по включению переадресации пакетов (совместное использование соединения) для Windows 7, 8 и 10 можно найти здесь (https://github.com/inversepath/usbarmory/wiki/Host-communication#setup--connection-sharing-windows-7-8-10). MacOS: Инструкции для MacOS можно найти здесь (https://github.com/inversepath/usbarmory/wiki/Host-communication#setup--connection-sharing-macos). Linux: Примечание: на Ubuntu 16.04, сетевой менеджер не мешает. Однако на конфигурациях других дистрибутивов может. Инструкции для Linux (https://github.com/inversepath/usbarmory/wiki/Host-communication#setup--connection-sharing-linux): Включить маскировку для исходящих соединений: Code: # iptables -t nat -A POSTROUTING -s 10.0.0.2/32 -o wlan0 -j MASQUERADE Включить переадресацию IP: Code: # echo 1 > /proc/sys/net/ipv4/ip_forward * * * Подключите Armory и обратите внимание на мигающий белый светодиод. Это значит, что Armory запущен. Медленно мигающий светодиод начинает мигать быстрее по мере активности использования Armory. Теперь заходим по ssh на Armory с учетными данными базового образа Debian установленными по умолчанию (логином и паролем являются usbarmory) Code: $ ssh usbarmory@10.0.0.1 Пингуем публичный адрес, чтобы увидеть, маршрутизируется ли ваш Armory правильно: Code: $ ping 8.8.8.8 В случае успеха, вы получите такие отклики: Code: PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. Замечательно! * * * Сборка c-lightning: Code: $ sudo apt update && sudo apt -y upgrade Как только это будет завершено, перезагрузите Armory после обновления ядра: Code: $ sudo reboot Теперь начинайте установку инструментов сборки и зависимостей, необходимых для компиляции bitcoin-cli и c-lightning: Code: $ sudo apt-get install -y \ Сделайте копию с репозитория c-lightning на Гитхабе: Code: $ git clone https://github.com/ElementsProject/lightning.git Перейдите в локальный репозиторий: Code: $ cd lightning Затем начинайте сборку: Code: $ make После этого перейдите в домашний каталог пользователя usbarmory: Code: $ cd ~/ Загрузите архив исходного кода Bitcoin Core 0.18.0 (примечание: на момент написания оригинала статьи последняя версия ядра была 0.16.0, я для вашего удобства внес правки на последнюю версию 0.18.0), SHA256SUMS.asc и импортируйте ключ GPG сборщика Ядра для проверки хэшей. Наконец, распакуйте архив: Code: $ wget https://bitcoincore.org/bin/bitcoin-core-0.18.0/bitcoin-0.18.0.tar.gz Превосходно! Теперь, приступайте к сборке bitcoin-cli. * * * Сборка bitcoin-cli: Перейдите в каталог исходного кода Bitcoin и запустите процесс установки: Code: $ cd bitcoin-0.18.0/ Во время работы autogen.sh, может произойти поток предупреждающих сообщений о языковых локалях. Это можно исправить, установив языковую локаль: Code: $ sudo dpkg-reconfigure locales Продолжение процесса установки: Code: $ CFLAGS="-march=native" ./configure --disable-wallet - march=native сообщает нашему компилятору gcc, чтобы автоматически обнаруживал процессор Armory и включал оптимизацию, специфичную для этого процессора. Это помогает выжать дополнительное увеличение производительности процессора ARM, что важно, потому что этот процессор относительно медленный. bitcoind не устанавливается, поэтому libdb не нужен. Выберите --disable-wallet для установки без поддержки кошелька (с-lightning будет кошельком в этой конфигурации). Теперь, собираем bitcoin-cli: Code: $ make src/bitcoin-cli Наконец, скопируйте недавно собранный бинарный файл bitcoin-cli в /usr/local/bin: Code: $ sudo cp src/bitcoin-cli /usr/local/bin Подключение Armory к bitcoind через RPC: c-lightning использует bitcoin-cli для отправки необработанных транзакций в bitcoind по различным причинам, таким как открытие, принудительное закрытие или обоюдное закрытие каналов. Поскольку c-lightning работает на Armory, он также требует bitcoin-cli. Тем не менее, bitcoin-cli должен иметь возможность сообщаться с bitcoind, поэтому создайте и добавьте соответствующие элементы на Armory и USB-хост, в bitcoin.conf: На USB-хосте или другом устройстве, на котором запущен bitcoind, укажите следующие элементы в bitcoin.conf: Code: rpcuser= <username> Сохраните эти изменения, а затем создайте bitcoin.conf на Armory и добавьте следующие элементы: Code: $ nano ~/.bitcoin/bitcoin.conf В bitcoin.conf: Code: rpcuser= <username from before> Можете заменить IP-адрес 10.0.0.2 для bitcoind, который может находиться под наблюдением 3-х лиц (например на 192.168.0.254) Попытка запросить bitcoind из Armory: Code: $ bitcoin-cli -getinfo В случае успеха будет возвращен ответ с соответствующей информацией (размер блока, сложность и т. д.) Потрясающе! * * * Запуск c-lightning: Теперь, когда все собрано, настроено и подключено к сети правильно, c-lightning можно запустить. Запустите сеанс tmux, а затем запустите lightning: Code: $ tmux Примечание: выберите --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 (https://blockstream.com/2018/03/29/blockstreams-week-of-lapps-ends.html) (Статьи о приложениях LApps на русском: ссылка 1 (https://forklog.com/nedelya-lightning-prilozhenij-ot-blockstream-sem-novyh-lapp-s-za-sem-dnej/), ссылка 2 (https://crypto-fox.ru/faq/lapps-dlya-lightning-network/)) Чтобы запустить эти приложения LApps, Lightning Charge должен быть установлен на Armory. Lightning Charge-это система обработки микроплатежей, написанная на node.js. Она предоставляет функциональность c-lightning через свой REST API, к которому можно получить доступ через библиотеки JavaScript и PHP. Ссылки: оригинальная на англ. (https://blockstream.com/2018/01/16/en-lightning-charge/), не оригинальная на русском (https://coinspot.io/technology/blockstream-zapustil-sistemu-obrabotki-mikroplatezhej-v-bitcoinah/) Lightning Charge требует c-lightning и nodejs. Установите их сейчас: Code: $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - На момент написания статьи Debian стабильно работал с версией node.js 8.x, на момент совершения перевода на гитхабе (https://github.com/nodesource/distributions/tree/master/deb) есть информация, что 12.x версия node.js поддерживается, поэтому можете устанавливать сразу её, прописав 12.x в вышеуказанном коде вместо 8.x. Работоспособность не тестировал, но считаю это сделать правильным, чтобы работали последние версии приложений LApps. Ошибки разрешений могут возникнуть из-за предоставленного nodesource.com комплекта nodejs. Чтобы обойти это, выполните следующие действия: Code: $ mkdir ~/.npm-global Добавьте следующее в ~/.profile: Code: $ export PATH=~/.npm-global/bin:$PATH Наконец: Code: $ source ~/.profile Далее просто используйте npm для установки Lightning Charge и запустите charged: Code: $ npm install -g lightning-charge charged будет работать через порт 9112 используемый по умолчанию! Установка nanopos LApp, чтобы превратить ваш модуль Lightning в микро торговую точку (point-of-sale): nanopos легко устанавливается с npm: Code: $ npm install -g nanopos Отредактируйте файл items.yaml с продуктами для продажи, укажите валюту с помощью --currency, а затем запустите nanopos: Code: $ nanopos -t <charge API token> --items-path items.yaml --currency USD Заголовок отображаемой страницы может быть изменен с помощью --title, и есть ассортимент тем, доступных на bootswatch.com что может быть выбрано с -m. Теперь c-lightning, charged, и nanopos LApp все работает на портативном Armory! https://cdn-images-1.medium.com/max/1200/1*34hCf-Lpupt31scUI7DHQg.png Фото взято из блога 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 (https://hackernoon.com/@notgrubles) Title: Re: Как создать собственный переносной плаг Post by: FontSeli on May 30, 2019, 01:37:17 AM Зарезервировано.
|