Lightning Network для Биткоина. #1 :смогу ли я скомпилировать и запустить узел?
*Андреас Брекен (Andreas Brekken) - является Директором Shitcoin.com. С 2011 года он одержим криптовалютами. Автор был одним из основателей компании Justcoin.com, а затем работал инженером с Kraken.com.
Сегодня я испытаю LN, платежную систему для Биткоина, решение для его масштабирования, второй слой над блокчейном
Lightning Network (LN) – это решение для масштабирования Биткоина.
Каково это быть пользователем Lightning после 3-х лет с выхода его Whitepepper?
- Андреас узнает*.
.
Я впервые установлю себе программу `lnd`, предназначенную для работы в сети LN, и я с нетерпением жду, чтобы испытать на себе эту прорывную технологию.
«Lightning Whitepaper»
... Установка и настройка lnd выполняется быстро и просто. Функция автопилота автоматически установит и предоставит платежные каналы, чтобы сделать маршрутизацию платежей быстрой и дешевой...
дальше « Многа букаф, ниасилил »
«Lightning Whitepaper» была написана Джозефом Пуном и Тадеушом Драйа в январе 2016 года. Существует несколько реализаций стандарта протокола, в том числе «lnd» и «c-lightning».
LN уже адаптирована для криптовалюты Лайткоин. А в 2013 году были задокументированы и стали возможны Кросс- Атомарные Свопы (обмен криптовалют на разных блокчейнах без посредников), но они так и не стали популярны. Свопы работают по протоколу «Tier Nolan»
Для удобства я разделил обзор сети Lightning Network на несколько частей:
- Компиляция и запуск узла (ноды LN)
- Стать платежным ХАБом
- Покупка товаров и Оплата услуг
- Выводы и заключения
Я точно знаю, что для начала мне нужно запустить полную ноду Биткоина.
Чтобы обеспечить безопасность, я буду использовать последнюю стабильную версию Bitcoin Core - это самый популярный и надежный кошельк Биткоин
Я не могу использовать свой ноутбук для запуска полного узла, это потребует много времени на синхронизацию, мой ноутбук не всегда включен, он часто меняет IP-адрес.
Поэтому я запускаю виртуальную машину на Amazon AWS .
Ubuntu 16.04 - популярная версия операционка Linux, к тому же, она совместима с программами разработанными для большинством криптомонет.
Я выбираю экземпляр (instance) с типом c5.large.
В нём 2-х ядерный процессор, 4 гига оперативки и 10-ти гигабитное интернет-подключение.
Мне нужно установить весь блокчейн на жестком диске.
Хранение всей цепочки Биткойа на жестком диске требует больших ресурсов. Особенно, если тебуется индексирование транзакций.
Я возьму 500 ГБ жесткого диска , этого должно хваить с запасом.
Так же я выбираю максимальную производительность диска, для ускорения синхронизации.
Я открываю порты одноранговой сети Bitcoin, для оптимизации подключения.
Я помню, что Lighting Network требует чтобы нода имела статичный IP-адрес. Я его назначаю.
Я подключаюсь к машине через SSH и обновляю Ubuntu.
Пока идет обновление, я изучаю документацию Lightning Network.
Кажется, сеть LN может работать как с графической версией Bitcoin Core, так и с btcd (демоном). У меня больше опыта с Bitcoin Core.
Я подозревал, и видел комментарии о том, что нужно запускать индексацию транзакций txindex=1
. Мне так же потребуется ZeroMQ (zmq). ZeroMQ - это способ уведомления различных программ, запущенных на одном компьютере, о событиях, напимер, таких как новые транзакции и блоки.
Компиляция Bitcoin Core из исходного кода
Я загружаю Bitcoin Core v0.16.1.
$ wget https://github.com/bitcoin/bitcoin/archive/v0.16.1.tar.gz
И извлекаю архив$ tar zxvf v0.16.1.tar.gz ... $ cd bitcoin-0.16.1/
Зависимости Bitcoin Core кажутся довольно прямолинейными.
Я запускаю всё это в командной строке
sudo apt-get install -y build-essential libtool \ autotools-dev automake pkg-config \ libssl-dev libevent-dev bsdmainutils \ python3 libboost-system-dev \ libboost-filesystem-dev libboost-chrono-dev \ libboost-program-options-dev libboost-test-dev \ libboost-thread-dev && \ sudo apt-get install -y software-properties-common && \ sudo add-apt-repository ppa:bitcoin/bitcoin && \ sudo apt-get update && \ sudo apt-get install -y libdb4.8-dev libdb4.8++-dev && \ sudo apt-get install -y libzmq3-dev
Установка зависимостей заняла всего три минуты.
И я компилирую Bitcoin Core.
... make[2]: Leaving directory '/home/ubuntu/bitcoin-0.16.1' make[1]: Leaving directory '/home/ubuntu/bitcoin-0.16.1' ubuntu@ip-172-31-33-128:~/bitcoin-0.16.1$ ... ~/bitcoin-0.16.1$ bitcoind --version Bitcoin Core Daemon version v0.16.1.0-gdac5d68fc6cf Copyright (C) 2009-2018 The Bitcoin Core developers
Я должен отредактирровать нужную мне конфигурацию кошелка
$ vim ~/.bitcoin/bitcoin.conf
В ожидании установки Bitcoin Core, я заглядываю в документацию Lnd . Я добавляю необходимые настройки ZeroMQ.
не волнуйтесь... , я уже изменил пароль.
Я запускаю демон bitcoind
. Синхронизация займет несколько дней. Последний блок 530533
.
На другой вкладке я ввожу команду watch bitcoin-cli getnetworkinfo
, чтобы следить за синхронизацией.
Теперь, мой Bitcoin Core синхронизируется.
Я смотрю документацию для lnd, Daemon Network Lightning
.
Она написана на языке GO
. Программы на GO
, обычно просты в установке.
Я устанавливаю GO
и диспетчер пакетов dep
, в соответствии с документацией.
$ sudo apt-get install -y golang-1.10-go ... $ sudo ln -s /usr/lib/go-1.10/bin/go /usr/local/bin/go ...
$ go version go version go1.10 linux/amd64
$ echo 'export GOPATH=~/gocode' >> ~/.bashrc ...
$ echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc $ source ~/.bashrc $ go get -u github.com/golang/dep/cmd/dep
$ dep version $ dep version dep: version : devel
И затем собираю lnd
.
go get -d github.com/lightningnetwork/lnd && \ cd $GOPATH/src/github.com/lightningnetwork/lnd && \ make && \ make install
Компиляция заняла менее пяти минут.
$ lnd --version lnd version 0.4.2-beta commit=a0b2fadea35fa4642daf4e9f56e6ecfe31d22ce1
Я смотрю в документы lnd
– знакомлюсь с примерами файла конфигурации.
vim ~/.lnd/lnd.conf
Я запускаю lnd.
$ lnd loadConfig: either --bitcoin.mainnet, or bitcoin.testnet, bitcoin.simnet, or bitcoin.regtest must be specified
Возможно, этот образец конфигурации устарел. Я добавляю bitcoin.mainnet=1
в [Bitcoin\]
секции lnd.conf
, и повторяю попытку.
Я удаляю эту опцию и повторяю попытку.
$ lnd loadConfig: debug-htlc mode cannot be used on bitcoin mainnet
Я пробую команду lncli create
.
Возможно, образец конфигурации устарел. Я добавляю sword:
Confirm wallet password:
Do you have an existing cipher seed mnemonic you want to use? (Enter y/n): n
Your cipher seed can optionally be encrypted.
Input your passphrase you wish to encrypt it (or press enter to proceed without a cipher seed passphrase):
Generating fresh cipher seed...
!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!
---------------BEGIN LND CIPHER SEED---------------
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
---------------END LND CIPHER SEED-----------------
!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!
lnd successfully initialized!
ubuntu@ip-172-31-33-128:~$
Программа lnd
заметила созданный кошелёк и начала синхронизироваться с bitcoind
.
Загрузка и синхронизация блоков биткойна займет некоторое время.
Я продолжу завтра
На следующий день, Bitcoind завершила синхронизацию.
Но Daemon Network Lightning у меня слетел.
Терминал также слетел. Я перезагружаю систему и повторяю попытку.
Если машине снова не хватит памяти, то я либо переключусь на Instance с большей ОЗУ, либо попробую добавить файл подкачки.
~ ssh andreas-tries-lightning-network sudo shutdown -r now Connection to 54.203.150.163 closed by remote host.
После перезапуска, lnd
догоняет блок 410,000. Я жду.., думаю это будет быстро.
Я искал решения проблемы с памятью и обнаружил, что другие пользователи тоже её испытывают. Оказалось, что для lnd создается слишком много output-ов.
Я меняю конфигурацию, для отладки. Я также прокомментирую настройку максимального числа каналов, которая мной была скопирована с примера.
[Application Options] #debuglevel=trace #maxpendingchannels=10
Критики Lightning Network, утверждают, что для суммы более 10$ вероятность нахождения маршрутов между двумя случайными узлами очень мала . Я подозреваю, это из-за того, что они выбирают случайные узлы, которые слишком удалены дрг от друга.
Есть несколько настроек для автопилота - функция, которая автоматически открывает каналы.
Я должен испытать эту функцию в первую очередь.
Я добавляю autopilot.active=1
в [Autopilot] раздела lnd.conf
.
Позже для нормальной работы LN мне понадобятся некоторые средства (несколько биткоинов или сатоши).
Я уверен, что фондирование можно настроить при помощи lncli.
newaddress
выглядит так, как мне нужно.
$ lncli newaddress [lncli] invalid address type , support address type are: p2wkh and np2wkh .$ lncli newaddress \[lncli\] недопустимый тип адреса, тип адреса поддержки: p2wkh и np2wkh
Я предполагаю, что p2wkh
это pay-to-witness-key-hash, но я не понимаю, что означает эта "n
" впереди.
$ lncli newaddress --help NAME: lncli newaddress - Generates a new address. USAGE: lncli newaddress address-type CATEGORY: Wallet DESCRIPTION: Generate a wallet new address. Address-types has to be one of: - p2wkh: Pay to witness key hash - np2wkh: Pay to nested witness key hash
Я до сих пор не знаю, какой из них нужно использовать. Я попробую np2wkh.
$ lncli newaddress np2wkh { "address": "3CkeGETi1N85NSTJ9GFn87dAN34tHYZzQn" }
Я посылаю биткоины на свою Lightning ноду, и посмотрю, что произойдет.
Через пару часов я проверю, работает ли автопилот?
Компиляция, установка и запуск Lightning Network Daemon (lnd), осталась позади
Я с нетерпением жду когда смогу использовать платежные каналы, для отправки и получения биткойнов.
Во второй части я постараюсь , чтобы моя LN-нода стала супер - хабом . Может быть, я даже смогу заработать деньги за счет платежей?
to be continued...
Подписывайся, если интересно узнать, чем всё это закончится
____________________________________________________________
Об авторе: Андреас Брекен (Andreas Brekken) является генеральным директором Shitcoin.com.
С 2011 года он одержим криптовалютами. Автор был одним из основателей компании Justcoin.com, а затем работал инженером с Kraken.com.