Установка и настройка ноды bitcoin, ethereum, dash, litecoin, cardano

Мне периодически приходится устанавливать и настраивать ноды различных криптовалют. Делать это не сложно, но везде есть небольшие нюансы, на которые надо обращать внимание и вспомнать, как действовать. Сегодня я расскажу, как установить и запустить ноды популярных криптовалют — bitcoin, ethereum, dash, litecoin, cardano.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом
«Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужно пройти .

Введение

В целом свое отношение к криптовалютам я описал в отдельной статье. Привожу просто для справки тем, кому будет любопытно. Сегодня мы будем рассматривать исключительно техническую сторону процесса.

Сама по себе установка ноды криптовалюты не представляет большой сложности. Нужно выполнить несколько простых команд в консоли сервера. Я поделюсь некоторыми своими мыслями на этот счет, так как много занимался этой темой и накоплен определенный опыт.

Самая большая проблема в этом вопросе — подходящее железо. Совсем бюджетные виртуалки ноды криптовалют не тянут. А такие валюты как эфир или биткоин еще и очень большой объем диска требуют — 300-600 гб. Нужен выделенный сервер нижнего или среднего ценового сегмента. Лучше всего брать в Европе, там дешевле. По моей ссылке будут сервера с русскоязычным саппортом. Если он вам не нужен, можете напрямую в hetzner брать или где-то еще, будет дешевле. Рейд контроллер там не обязателен, так как никакой уникальной информации нода хранить не будет. В случае выхода из строя она без проблем поднимается на новом железе.

Общие принципы работы платежного шлюза

Вариант 1

Предположим, у нас есть уникальный счет (invoice, order), представленый к оплате клиенту, и платить клиент будет в биткоинах. Начнем с того, что надо сконвертировать валюту оригинального счета (USD например) в BTC. Задача это тривиальная и рассматривать мы ее не будем. Далее. Стандартом де факто является генерация нового уникального адреса биткоин под каждый заказ (он же счет, он же invoice, он же ордер). Ожидается, что средства на этот счет переведет только наш клиент, только 1 раз, и только строго указанную сумму (можно больше, никто не обидится, но никак не меньше). Т.о. при поступлении средств на указанный биткоин адрес в нужном количестве, заказ считается оплаченным.
Вкратце, цепочка такая:

  • ордер в системе ->
  • генерируем соответствующий ордеру уникальный адрес биткоин ->
  • показываем клиенту ->
  • ждем оплату на адрес ->
  • ордер закрыт (отмена по истечению срока годности или же поступление BTC и засчитываем факт оплаты)

При поступлении биткоинов на адрес у вас есть варианты засчитать неподтвержденный или подтвержденный баланс. Есть небольшой шанс что транзакция откатится, причем это может быть как по вине плательщика (который на самом деле злоумышленник), так и по независящим от него обстоятельствам.

Если вы имеете возможность “отобрать” предоставленный товар или услугу у клиента в случае выявленного факта отмены транзакции, я рекомендую засчитывать неподтвержденный баланс. Это будет означать почти мгновенный процесс оплаты для клиента (в противовес часа ожидания, например). А если какие то транзакции выявятся откаченными в итоге, запросить клиента о повторном платеже, угрожая отобрать услугу/товар.

Не ожидайте что подобный фрод вас тут же массово настигнет, откат транзакций это очень большая редкость, а “вручную” стимулировать подобный откат (на который кстати у злоумышленника нет никаких гарантий успеха) технически неподкованным клиентам нереально (в противовес чарджбекам по кредитным картам).

Еще один пример когда можно засчитывать неподтвержденный баланс — если на подготовку заказа клиента уходит больше одного часа (например обрабатывается корзина покупателя, готовится к отправке курьерской службой). Тут куча времени перепроверить баланс перед самой отправкой товаров.

Для остальных случаев можно ввести некий порог, выше которого обязательно ожидать подтвержденного баланса (например 0.25 BTC). Для максимальной надежности сделать его нулевым.

После закрытия ордера вы можете оставить биткоины на этом адресе до востребования, или для удобства перевести на единый “агрегационный” кошелек мерчанта. Будьте осторожны, в последнем случае вы можете скомпрометировать такой коммерческий показатель как “оборот”, т.к. транзакцию оплаты может отследить каждый платящий клиент. Для переводов вам понадобится создавать, подписывать и транслировать транзакции, используя приватные ключи от адресов.

Пару слов о времени жизни ордера.

Если ваш товар или услуга жестко привязаны к эквиваленту в фиатной валюте (например USD), то типичный срок жизни ордера составляет 7-15 минут из-за волатильности курса.

Вариант 2

Подходит когда вы не выставляете счета на оплату, а аккаунт юзера содержит некий единый баланс, который он пополняет и с которого тратит. Тут понадобится сгенерить биткоин адрес на пользователя, и показывать ему, с просьбой пополнить на любую сумму. В данном случае надо мониторить адрес на входящие транзакции, пополнять юзеру внутренний баланс при наличии оных. В данном случае я рекомендую засчитывать только подтвержденные транзакции (от 3х блоков и выше).

  • генерация адреса пользователю ->
  • мониторинг транзакций на адрес ->
  • пополнение внутреннего счета при наличии входящих транзакций

Системные требования для ноды криптовалюты

Размер блокчейна

Обращаю сразу внимание на самое основное. Внимательно следите за размером блокчейна валюты, ноду которой вы будете настраивать. Покупайте сервер с большим запасом, так как блокчейн некоторых криптовалют может стремительно расти. Из недавнего примера — эфир. До нового года, если не ошибаюсь, ее блокчейн был менее 100 гб, а сейчас что-то в районе 500 гб. У меня все ноды посыпались из-за этого, пришлось срочно решать вопрос со свободным местом.

Производительность дисков

Далее нужно обращать внимание на производительность дисков. Нода криптовалюты — это огромное количество мелких, зачастую очень мелких файлов, счет которых может идти на миллионы. Далее я подробно на этом остановлюсь, когда будем cardano устанавливать. Сейчас дам универсальный совет. Если у вас обычные SATA диски, то один диск нормально тянет одну ноду. Если ставить 2-3 ноды криптовалюты, то будет плохо, со временем сервер может зависать из-за огромного iowait.

Это очень условные примеры, потому что разные ноды по разному нагружают систему. Эфир больше всех, биткоин поменьше, остальные примерно одинаково.

Процессор и память

Я поднимаю ноды в виртуальных машинах. Обычно придерживаюсь таких параметров. Для ноды Etherium выделяю 4 ядра процессора, 8 гигабайт памяти. Для bitcoin 2 ядра, 8 памяти. Для всех остальных 2 ядра, 4 гб памяти. Если память есть свободная, то лучше всем по 8 давать.

Операционная система

Я буду устанавливать криптовалютные ноды на Ubuntu 16. Хоть я и не очень люблю эту систему, но так проще всего. Обычно разработчики нод объявляют поддержку именно этой системы. Под нее всегда есть готовые сборки и скрипты установки. С другой версией линукс придется тратить больше времени.

Самый простой вариант — использовать готовые образы docker. Я не знаю, легко ли они находятся под все криптовалюты и насколько актуальны. Сам я не использую докер в данном случае, потому что установка очень простая и лишняя прослойка в виде докера не нужна. Если вам реально нужны контейнеры докер для нод криптовалют, сможете собрать их сами, если умеете работать с docker.

Установка ноды Ethereum

Обращаю внимание, что я все делаю под пользователем root. Лучше ноды запускать под отдельным пользователем, но мне не хочется перегружать статью информацией о том, как создавать пользователя, запускать от его имени приложение и т.д. Статья в любом случае не для новичков. Я даю общую информацию со ссылками. При необходимости, вы сами сможете все аккуратно настроить в боевом режиме.

Добавляем репозиторий ethereum

# add-apt-repository -y ppa:ethereum/ethereum

Обновляем список репозиториев

# apt update

Устанавливаем непосредственно ноду эфира.

# apt install ethereum

Дальше вы можете любо подключить ноду к реальной сети, либо запустить на тестовой для каких-то своих целей — тестирование, разработка и т.д.

Запуск рабочей ноды ethereum:

# geth console

Запуск тестовой ноды:

# geth —testnet console

В домашней директории пользователя, от которого вы запускаете ноду, будет создана папка .ethereum, в которой будет храниться вся информация по ноде, в том числе сам блокчейн. Имеет смысл создавать отдельного пользователя для этих целей.

Ноду можно запускать с параметрами, передавая их в виде ключей командной строки. Например так:

# geth —cache=4096 —rpc —rpcaddr 0.0.0.0 —rpcport 8545 —rpccorsdomain «*» —rpcapi «web3,personal,admin,debug,db,net,eth,miner,rpc,txpool»

Описание ключей смотрите в официальной документации go-ethereum на гитхабе. Там же, кстати, и ссылка на оригинальное руководство по установке есть.

По-умолчанию, стандартная нода эфира работает прямо в консоли. Надо запускать ее как процесс в фоне. Можно написать service в systemd, но я не большой специалист в этом. Я пошел по самому простому и очевидному пути — запускать ноду в screen. Для того, чтобы она поднималась после загрузки сервера, добавляем в /etc/rc.local перед exit 0:

screen -dmS geth /usr/bin/geth —verbosity 3

Не забудьте указать нужные вам ключи запуска. Теперь проверим, как у нас работает нода, можно ли ей управлять через json rpc запросы. Допустим, мы запустили ноду со следующими параметрами:

# geth —cache=4096 —rpc —rpcaddr 0.0.0.0 —rpcport 8545 —rpccorsdomain «*» —rpcapi «web3,personal,admin,debug,db,net,eth,miner,rpc,txpool»

В соседней консоли проверяем, все ли нормально поднялось:

# netstat -tulnp | grep geth tcp6 0 0 :::30303 :::* LISTEN 1177/geth tcp6 0 0 :::8545 :::* LISTEN 1177/geth udp6 0 0 :::30303 :::* 1177/geth

Все в порядке. Отправляем тестовый запрос:

# curl -X POST -H «Content-Type: application/json» —data ‘{«jsonrpc»:»2.0″,»method»:»web3_clientVersion»,»params»:[],»id»:67}’ localhost:8545

В ответ должны получить что-то вроде этого:

{«jsonrpc»:»2.0″,»id»:67,»result»:»Geth/v1.8.8-stable-2688dab4/linux-amd64/go1.10″}

Все работает. Что с этим делать дальше разбирайтесь сами или отдавайте сервер разработчикам. Они будут пилить очередное приложение или биржу для криптовалюты.

Что такое Wrapped Bitcoin (WBTC) и для чего он нужен?

Содержание статьи:

  • Что такое завернутый биткоин и как он работает?
  • Завернутый биткоин — мост, соединяющий Ethereum и BTC
  • В чем преимущества WBTC?
  • Насколько безопасны WBTC?
  • Что такое токен-экономика WBTC?
  • Как купить WBTC?
  • Динамика цен
  • Вывод

WBTC — инновационное дополнение к популярной криптовалюте. Завернутый биткоин — это метод переноса ВТС на блокчейн Ethereum.
Wrapped Bitcoin (завернутый биткоин) — это ERC-20 токен. Его цель проста и понятна — обеспечить ликвидность первой криптовалюты в экосистеме Ethereum, а значит и DeFi.

Что такое завернутый биткоин и как он работает?

Для любого пользователя, который начать использовать BTC в децентрализованных финансовых приложениях, наиболее важным недостатком является отсутствие моста, соединяющего BTC с Ethereum. Токены WBTC решают эту проблему, обеспечивая ликвидность BTC для других протоколов DeFi .

Завернутый биткоин подразумевает хранение криптовалюты в резерве через траст BitGo. Объем находящихся в обращении WBTC публично раскрывается для обеспечения максимальной прозрачности.

Завернутый биткоин — мост, соединяющий Ethereum и BTC

Преимущество BTC в том, что он имеет гораздо более высокую рыночную капитализацию и ликвидность, чем любая другая криптовалюта на рынке.

Несмотря на то, что DeFi пулы принимают множество альткоинов в качестве залога, использование высоко ликвидных токенов гарантирует, что торговые операции будут быстрыми и менее уязвимыми для эффектов волатильности.

В чем преимущества WBTC?

Самым большим преимуществом Wrapped Bitcoins является то, что он объединяет сильные стороны Биткоина и Ethereum. В то время как биткоин имеет огромную базу пользователей и огромный пул ликвидности, Ethereum предоставляет мощную технологическую платформу. Самая важная служебная функция Ethereum — это смарт- контракты, которые облегчают проведение сложных операций.

Подключение BTC к экосистеме Ethereum также упрощает работу бирж, кошельков и платежных сервисов. Как правило, эти службы должны запускать две отдельных ноды: одну для BTC и одну для ETH. Работая с WBTC, можно выполнить работу только с помощью ноды Ethereum.

Благодаря наличию блокчейна Ethereum в качестве основы, транзакции по WBTC также могут осуществляться намного быстрее.

Насколько безопасны WBTC?

Основным блокчейном WBTC является Ethereum, который также обеспечивает безопасность WBTC. Он защищен механизмом доказательства работы Ethash.

Что такое токен-экономика WBTC?

Объявленный 26 октября 2022 года, Wrapped Bitcoin был официально запущен 31 января 2022 года. WBTC не следует заранее установленному графику выпуска. Каждый раз, когда пользователь покупает или продает свои токены за биткоины, используя систему торговцев и хранителей, токены WBTC чеканятся или сжигаются автоматически.

Один завернутый биткоин всегда подкреплен одним биткоином. Поэтому количество WBTC в обращении всегда равно количеству биткойнов в резерве BITGO Trust. По последним доступным данным, количество WBTC составляет более 94000 токенов. Общая стоимость этих токенов превышает 1 миллиард долларов США.

Как купить WBTC?

Многие официальные продавцы поддерживают торги с Wrapped Bitcoin. Некоторые из этих продавцов заставляют покупателя проходить проверки KYC. Если вы хотите приобрести WBTC анонимно, вы можете использовать децентрализованные биржи.

Чтобы купить WBTC, необходимо сначала пополнить свой кошелек с помощью BTC. Во время покупки биткоины списываются с кошелька BTC, а WBTC зачисляются на кошелек WBTC. В транзакции участвуют два разных кошелька.

Создание взаимосвязи между основными криптопротоколами — необходимость для процветания всей экономики DeFi. В этом смысле WBTC приносит большую пользу, связывая два крупнейших блокчейна Биткойн и Эфириум.

Динамика цен

WBTC или Wrapped Bitcoin был доступен по цене более 3476 долларов США 5 февраля 2022 года. К 16 мая 2022 года он поднялся до цены 8238 долларов США, а к концу июня достиг 12 954 доллара США. В конце 2022 года он упал до 7429 долларов. До августа 2022 года он оставался ниже 10 тысяч долларов.

К 9 августа 2022 года каждый токен WBTC был доступен по цене 11 752 доллара. Его цены начали быстро расти в ноябре 2022 года с ростом цены BTC. На данный момент каждый WBTC доступен по цене более 19 360 долларов.

Вывод

WBTC готов стать одной из самых успешных криптовалют в экосистеме Ethereum. Сочетание ликвидности Биткоина и технологического преимущества Ethereum поможет укрепить позицию Wrapped Bitcoin как одной из ведущих имен в мире криптовалют. Кроме того, WBTC будет продвигатся вперед с ростом как Ethereum, так и Bitcoin.

Установка ноды bitcoin

Продолжим устанавливать ноды криптовалют. Переходим к настройке ноды биткоин. Выполним немного подготовительных действий, чтобы потом сразу запустить ноду с нужными параметрами. Создаем в домашней директории папку для ноды:

# mkdir ~/.bitcoin

Рисуем примерно такой конфиг для нее:

# mcedit ~/.bitcoin/bitcoin.conf printtoconsole=1 testnet=1 txindex=1 rpcuser=btcuser rpcpassword=btcpass rpcport=8332 rpcbind=0.0.0.0 rpcallowip=0.0.0.0/0 datadir=/mnt/bitcoin

Приступаем к установке ноды. Подключаем репозиторий и обновляем список:

# apt-add-repository ppa:bitcoin/bitcoin # apt update

Устанавливаем службу bitcoin ноды:

# apt install bitcoind

Запускаем ноду с указанным ранее конфигом в режиме службы:

# bitcoind -daemon

Здесь ничего костылить не надо для автоматического запуска ноды, как это было с ethereum. Биткоин нода из коробки умеет работать как служба. Проверим, запустилась ли она.

# netstat -tulnp | grep bitcoind tcp 0 0 0.0.0.0:18333 0.0.0.0:* LISTEN 5405/bitcoind tcp 0 0 127.0.0.1:8332 0.0.0.0:* LISTEN 5405/bitcoind tcp6 0 0 :::18333 :::* LISTEN 5405/bitcoind tcp6 0 0 ::1:8332 :::* LISTEN 5405/bitcoind

Порт 18333 слушает блокчейн. Это дефолтный параметр. 8332 — rpc порт для взаимодействия с нодой. Все то же самое, что и с эфиром.

Если вам надо остановить ноду, выполните в консоли:

# bitcoin-cli stop

Команда сработает только, если у вас настроен rpc. Если нет, то выключить можно только так:

# pkill -9 -f bitcoind

Проверить работу bitcoin ноды можно, к примеру, следующей командой:

# bitcoin-cli getblockchaininfo

Добавим теперь ноду в автозагрузку. Для этого создадим запись в crontab.

# crontab -e

Добавляем строку:

@reboot bitcoind -daemon

На этом все. Биткоин нода готова к работе. Переходим к следующей криптовалюте.

BTC-кошелёк и пул.

Перед тем как приступить к настройке асика для майнинга (мы постараемся показать всё на примере Antminer S9), нужно подготовиться. У вас, конечно, должен быть компьютер или ноутбук, с которого вы будете осуществлять все манипуляции, он должен быть подключен к одной сети вместе с асиком. Заранее позаботиться о кошельке, куда будут приходить добытые монеты, и выбрать пул. Думаю, не стоит уже говорить об известных всем вещах, BTC кошелёк создаётся на самой крупной бирже Binance, там же есть очень удобный и мощный пул для майнинга с ежедневными выплатами с минимальной комиссией.

Кошелёк для Биткоинов генерируется в разделе Фиат и спот.

В списке находим BTC и кликаем на Ввод.

Откроется окно с адресом кошелька, не забудьте выбрать верную сеть, как указано на скриншоте ниже.

Далее переходим в раздел Пула на бирже Бинанс.

На главной странице пула, мы можем увидеть всю важную информацию для настройки и подключения Асика на алгоритме SHA-256.

Создайте аккаунт для пула и выберите нужный алгоритм.

  • Pool1: stratum+tcp://sha256.poolbinance.com:443 поддерживает BTC/BCH и Smart Pool
  • Pool2: stratum+tcp://bs.poolbinance.com:3333 поддерживает только BTC
  • Pool3 stratum+tcp://sha256.poolbinance.com:8888 поддерживает BTC/BCH и Smart Pool

Присвоение имени «воркера»: майнинг-аккаунт + точка + майнер ID.

Монеты будут приходить на кошелёк пула, вы собственноручно можете переводить их на внутренний BTC-кошелёк биржи (удобнее всего делать это с мобильного приложения), и с помощью спотовой торговли обменивать Биткоины на другие криптовалюты, чтобы была диверсификация, в ожидании пампа курсов. С помощью P2P-торговли осуществлять вывод средств себе на карту. Подробнее читайте тут.

Установка ноды DASH

Установим ноду криптовалюты DASH. Сначала ставим необходимые зависимости:

# apt install dirmngr

Скачиваем последнюю версию ноды. Для этого идем по адресу https://github.com/dashpay/dash/releases/ и смотрим номер последнего релиза. После этого копируем последний релиз к себе. На момент написания статьи последней версией ноды была v0.12.2.3.

# wget https://github.com/dashpay/dash/releases/download/v0.12.2.3/dashcore-0.12.2.3-linux64.tar.gz —no-check-certificate

Распаковываем и копируем бинарники в системные папки.

# tar -zvxf dashcore-* # mv *-[0-9].[0-9][0-9].*/bin/* /usr/bin

Создаем директорию для файлов ноды и рисуем для нее конфиг. Запускать будем с параметром testnet.

# mkdir ~/.dashcore # cd ~/.dashcore && mcedit dash.conf printtoconsole=1 rpcallowip=::/0 txindex=1 testnet=1 rpcuser=dashuser rpcpassword=dashpassword rpcport=8999

Запускаем ноду dash.

# dashd

Нода работает в консоли, как служба по-умолчанию не работает. Чтобы запускать ее в фоне, необходимо воспользоваться утилитой screen. Делать все нужно по аналогии с руководством ноды эфира, что описана в самом начале. Запускаем так:

# screen -dmS dash /usr/bin/dashd

Проверить состояние ноды можно командой:

# dash-cli mnsync status

На этом все, нода криптовалюты dash установлена и работает.

Установка ноды litecoin

Установка ноды для криптовалюты litecoin очень похожа на dash. Почти все шаги такие же, только версия ПО будет своя. Устанавливаем необходимые пакеты:

# apt install dirmngr

Дальше идем на сайт https://litecoin.org. В разделе DOWNLOAD копируем ссылку на Litecoin Core for Linux. Скачиваем исходники на сервер.

# wget https://download.litecoin.org/litecoin-0.16.0/linux/litecoin-0.16.0-x86_64-linux-gnu.tar.gz —no-check-certificate

Распаковываем архив и копируем бинарники в системные папки.

# tar -zvxf litecoin-* # mv litecoin-0.16.0/bin/* /usr/bin

Создаем директорию для файлов ноды и рисуем для нее конфиг. Запускать будем с параметром testnet.

# mkdir ~/.litecoin # cd ~/.litecoin && mcedit litecoin.conf printtoconsole=1 rpcallowip=::/0 txindex=1 testnet=1 rpcuser=ltcuser rpcpassword=ltcpassword rpcport=2339

Запускаем ноду litecoin:

# litecoind

Проверяем, что там запустилось:

# netstat -tulnp | grep litecoind tcp 0 0 0.0.0.0:19335 0.0.0.0:* LISTEN 2973/litecoind tcp6 0 0 :::2339 :::* LISTEN 2973/litecoind tcp6 0 0 :::19335 :::* LISTEN 2973/litecoind

Проверим статус самой ноды litecoin

# litecoin-cli getblockchaininfo

Нода работает в консоли, как служба по-умолчанию не работает. Чтобы запускать ее в фоне, необходимо воспользоваться утилитой screen. Делать все нужно по аналогии с руководством ноды эфира, что описана в самом начале. Запускаем так:

# screen -dmS litecoin /usr/bin/litecoind

Нода litecoin установлена и настроена. Переходим к следующей.

Установка ноды Cardano

Займемся теперь настройкой ноды молодой криптовалюты Cardano. Не знаю, что в ней интересного, но запросы на ее настройку у меня были. Помучался я с ней прилично, так как руководство не очень понятное, по нему без плясок не ставится. Но в итоге я научился ее готовить. Официальное руководство по установке есть ни гитхабе. Я буду настраивать по нему, но с некоторыми изменениями. Команда на сборку будет другая, если делать по руководству, то не соберется.

Сборка будет идти через некий пакетный менеджер Nix, который лично я видел впервые. Его необходимо установить, причем под непривилегированным пользователем. От root установщик nix не работает. Будет ошибка. Добавим сначала пользователя cardano.

# useradd -d /home/cardano -s /bin/bash cardano # passwd cardano # adduser cardano sudo # mkdir /home/cardano && chown cardano. /home/cardano

Заходим под новым пользователем и запускаем установщик nix.

# su cardano # cd ~ # curl https://nixos.org/nix/install | sh

Выполняем согласно указанию инсталлятора в консоли команду.

# . /home/cardano/.nix-profile/etc/profile.d/nix.sh

Создадим конфиг для nix и запишем туда пару параметров.

# sudo mkdir -p /etc/nix # sudo mcedit /etc/nix/nix.conf

Добавляем следующие строки:

binary-caches = https://cache.nixos.org https://hydra.iohk.io binary-cache-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=

Начинаем установку ноды Cardano. Клонируем себе репозиторий и переходим в него.

# git clone https://github.com/input-output-hk/cardano-sl.git # cd cardano-sl

Переключаемся на master ветку.

# git checkout master

Запускаем сборку cardano node из исходников.

# nix-build -A cardano-sl —cores 0 —max-jobs 2 —no-build-output —out-link master

Генерируем скрипт для запуска ноды:

# nix-build -A connectScripts.mainnet.wallet -o connect-to-mainnet

Нода собрана и установлена. Запускаем:

# ./connect-to-mainnet

Для автоматического запуска cardano node после загрузки системы, добавьте команду в /etc/rc.local перед командой exit.

screen -d -m -S cardano sudo -u cardano /home/cardano/cardano-sl/connect-to-mainnet

Проверить работы ноду можно, выполнив локально команду:

# curl https://127.0.0.1:8090/api/v1/node-info —cacert /home/cardano/cardano-sl/state-wallet-mainnet/tls/server/ca.crt —cert /home/cardano/cardano-sl/state-wallet-mainnet/tls/client/client.pem {«data»:{«syncProgress»:{«quantity»:3,»unit»:»percent»},»blockchainHeight»:{«quantity»:1147025,»unit»:»blocks»},»localBlockchainHeight»:{«quantity»:35183,»unit»:»blocks»},»localTimeInformation»:{«differenceFromNtpServer»:{«quantity»:-25400,»unit»:»microseconds»}}},»status»:»success»,»meta»:{«pagination»:{«totalPages»:1,»page»:1,»perPage»:1,»totalEntries»:1}}}

На этом настройка ноды окончена. Полную документацию по Cardano Wallet API читайте по ссылке.

В момент моей последней установки ноды cardano я столкнулся с тем, что через несколько дней работы нода скушала все свободные inodes и перестала работать. Дефолтного значения файловой системы ext4 в 1 000 000 ей показалось мало. Пришлось добавлять отдельный диск и в момент создания файловой системы указать на создание 10 000 000 inodes. Через пару месяцев работы нода использует 2 300 000 inodes. Имейте ввиду этот момент, если будете работать с нодой.

Трансляция транзакций

Результатом создания и подписи транзакций являются двоичные данные (hex), готовые к пушу в сеть. Пока сеть не увидит транзакцию, считайте, нет никакой транзакции. Когда сеть увидела транзакцию, она считается неподтвержденной. Транзакцию достаточно передать одному узлу биткоин, после чего за считаные секунды транзакцию увидит большая часть Биткоин сети. Транслировать транзакции умеют некоторые клиентские либы из раздела “Работа с адресами” (через какието свои захардкодженые ендпоинты), или любой полный узел. Транслировать транзакцию можно даже руками, зайдя на специальную страничку Биткоин API провайдера и вбив транзакцию в специальную форму. Канонично, подтвержденной транзакцией является транзакция, включенная в 6 и больше последовательных блоков (или в 1-3. Неканонично, но быстрее). Транзакции с нулевой (или недостаточной) комиссией могут оставаться неподтвержденными долгое время (до месяца, в моей практике). Такие транзакции желательно периодически ретранслировать.

Установка NEO ноды

Для работы Neo Node нужен .NET Core, который к моему удивлению есть под linux. Ставим его:

# wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb # sudo dpkg -i packages-microsoft-prod.deb # apt install apt-transport-https # apt update # apt install dotnet-sdk-2.1

Для других версий ссылку на deb пакет можно посмотреть на отдельной странице. В дополнение ставим несколько пакетов зависимостей ноды:

# apt install libleveldb-dev sqlite3 libsqlite3-dev libunwind8-dev

Качаем со страницы https://github.com/neo-project/neo-cli/releases последнюю версию под свою систему и распаковываем.

# cd ~ # wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip # unzip neo-cli-linux-x64.zip

Запускаем Neo node:

# dotnet /root/neo-cli/neo-cli.dll /rpc

Откроется cli интерфейс. Можно ввести команду help и посмотреть актуальные команды. Как сервис из коробки эта нода работать не умеет, поэтому запускаем в screen и добавляем в /etc/rc.local для автозагрузки:

screen -d -m -S neo dotnet /root/neo-cli/neo-cli.dll /rpc

В своей работе neo node использует следующие порты:

Мониторинг работы нод

Сразу скажу, что все ноды у меня работали стабильно и не падали, кроме Cardano. Из-за нее пришлось озаботиться отдельным мониторингом нод. На помощь пришел zabbix. Для мониторинга я использовал стандартную проверку доступности сервиса по tcp порту. Заббикс просто обращается на указанный адрес и порт и проверяет, что служба принимает подключения.

Покажу на примере ноды Cardano. На Zabbix server я добавил элемент данных:

Создал на основе этого элемента триггер:

Просто узнать, что нода упала мало. Нужно ее еще обратно поднять. Для этого на самой ноде я сделал простой скрипт перезапуска.

#!/bin/bash sc=`pidof SCREEN` kill $sc screen -d -m -S cardano sudo -u cardano /home/cardano/cardano-sl/connect-to-mainnet

Скрипт находит pid сессии screen, в которой запущена нода и закрывает ее. После этого запускает ноду заново. Далее я создал отдельное действие в заббиксе, которое выполняло указанный скрипт на сервере в случае, если срабатывал триггер.

Конкретно с Cardano этот способ успешно работал и падения ноды перестали замечать. Она успешно перезапускалась.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:

  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.

Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Получение информации из биткоин сети

Самый “тяжеловесный” пункт. Классическим решением является поднятие собственного эталонного полного узла Биткоин, он же — каноничный bitcoind. Это позволит нам общаться с ним по JSON-RPC. С ним мы сможем как получать информацию из сети, так и пушить транзакции. На что стоит обратить внимание:

  • После установки, синхронизация узла может занять длительное время. Только после синхронизации узел можно использовать.
  • Займет немало места. Уже 40+ гигабайт.
  • Мне лично неизвестно какую нагрузку по запросам сможет выдержать.
  • Любые проблемы с падением/обновлением лягут на ваши плечи.

Альтернатива — имплементация полного узла на Ruby+PostgreSQL, Toshi. Неканоничная, но стремящаяся к полной совместимости реализация. Обратите внимание, из-за дополнительных индексов, база данных займет 220+ гигабайт места. Опять таки, требуется синхронизация с сетью. Возможно, есть другие имплементации полного узла (мне неизвестны). Еще одна альтернатива
— использование публичного API провайдера. На его плечи ляжет получение информации из сети и трансляция транзакций.

Сейчас есть:

  • chain.com
  • blockchain.info/ru/api (не рекомендую)
  • www.blockcypher.com
  • chain.so/api
  • coinalytics.co
  • www.blocktrail.com
  • coinkite.com/developers
  • другие

Лично я рекомендую подключить несколько решений с фейловером.

Рейтинг
( 2 оценки, среднее 4.5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]