Bitcoin Forum
May 11, 2024, 01:21:09 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Как создать переносной плагин LN  (Read 209 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
FontSeli (OP)
Hero Member
*****
Offline Offline

Activity: 1218
Merit: 858



View Profile
May 30, 2019, 01:11:46 AM
Last edit: May 31, 2019, 08:43:36 AM by FontSeli
Merited by Alex_Sr (7), xandry (6), chimk (5), Symmetrick (3), IeSua (2), klarki (1), diks (1), madnessteat (1), leonello (1), Smart man (1)
 #1

Руководство как создать собственный переносной плагин 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:

Включить маскировку для исходящих соединений:
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.
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:

Code:
$ sudo apt update && sudo apt -y upgrade

Как только это будет завершено, перезагрузите Armory после обновления ядра:
Code:
$ sudo reboot

Теперь начинайте установку инструментов сборки и зависимостей, необходимых для компиляции bitcoin-cli и c-lightning:
Code:
$ 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 на Гитхабе:
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
$ 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 и запустите процесс установки:
Code:
$ cd bitcoin-0.18.0/
$ ./autogen.sh

Во время работы autogen.sh, может произойти поток предупреждающих сообщений о языковых локалях. Это можно исправить, установив языковую локаль:
Code:
$ sudo dpkg-reconfigure locales
# Select something like en_US.UTF-8 and hit Ok

Продолжение процесса установки:
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
$ 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:
Code:
rpcuser= <username>
rpcpassword= <yourpasswordnotthisone>
rpcallowip= <the Armory's IP address>

Сохраните эти изменения, а затем создайте bitcoin.conf на Armory и добавьте следующие элементы:
Code:
$ nano ~/.bitcoin/bitcoin.conf

В bitcoin.conf:
Code:
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:
Code:
$ bitcoin-cli -getinfo

В случае успеха будет возвращен ответ с соответствующей информацией (размер блока, сложность и т. д.)

Потрясающе!

*  *  *

Запуск c-lightning:

Теперь, когда все собрано, настроено и подключено к сети правильно, c-lightning можно запустить.

Запустите сеанс tmux, а затем запустите lightning:
Code:
$ 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. Установите их сейчас:
Code:
$ 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. Чтобы обойти это, выполните следующие действия:
Code:
$ mkdir ~/.npm-global
$ npm config set prefix '~/.npm-global'

Добавьте следующее в ~/.profile:
Code:
$ export PATH=~/.npm-global/bin:$PATH

Наконец:
Code:
$ source ~/.profile

Далее просто используйте npm для установки Lightning Charge и запустите charged:
Code:
$ npm install -g lightning-charge
$ charged --api-token <a secret token>

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://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
1715390469
Hero Member
*
Offline Offline

Posts: 1715390469

View Profile Personal Message (Offline)

Ignore
1715390469
Reply with quote  #2

1715390469
Report to moderator
1715390469
Hero Member
*
Offline Offline

Posts: 1715390469

View Profile Personal Message (Offline)

Ignore
1715390469
Reply with quote  #2

1715390469
Report to moderator
In order to achieve higher forum ranks, you need both activity points and merit points.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715390469
Hero Member
*
Offline Offline

Posts: 1715390469

View Profile Personal Message (Offline)

Ignore
1715390469
Reply with quote  #2

1715390469
Report to moderator
FontSeli (OP)
Hero Member
*****
Offline Offline

Activity: 1218
Merit: 858



View Profile
May 30, 2019, 01:37:17 AM
 #2

Зарезервировано.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!