Этот пост можно считать анонсом к циклу статей о том, как запустить свои шлюзы на блокчейне Golos. Будет построен в виде вопросов и ответов :)
Вопрос - Для кого это ты собрался писать?
Ответ - Во-первых для самого себя. Я собрался переделать все то, что существует на данный момент. Нет, оно работает и вроде даже без особых косяков, но как говорится нет предела совершенству :) Тем более, каждый последущий шлюз, который я писал для Голоса я немного изменял на основе уже того полученного опыта, который я получил в предыдущих шлюзах.
Вопрос - Но ведь все переделки можно делать и без постов?
Ответ - Да, можно. Но описывая то, как и что я буду переделывать я дам возможность увидеть всю внутренню кухню другим, которые может быть тоже запустят свои шлюзы или на их базе, поняв как это работает, сделают торговых ботов или еще что-нибудь подобное и интересное. Таким образом я, вынося это все "в паблик", сам для себя увижу на правильном ли я пути и точно ли я понял все то, что я захотел переделать. Ну и "отдам долг" Интеренету, в котором также получал какую-то информацию ранее, и которую также писали другие "для всех".
Вопрос - Что будет в статьях? Только код шлюзов?
Ответ - Нет, не только. В статьях будет все от того как выбрать и собрать железо, на котором все это должно работать. Как настроить его, как установить ноды, создать базы данных, в которых будет хранится информация о работе шлюзов, как создать резервное архивирование, чтобы не потерять всю информацию. И наконец как написать шлюз.
Вопрос - И что, любой человек прочитав может создать и запустить шлюз на Голосе? И что для этого он должен знать заранее?
Ответ - Да, в принципе любой человек в силах это сделать. Если отбросить "самосборку" серверов (их ведь можно заказать в любом дата-центре), то от человека точно понадобятся следущие навыки. Во-первых, это умение работать с командной строкой в Unix. Я использую Debian Linux. Во-вторых знание языка программирования JavaScript, тк. все шлюзы написаны именно на нем. Почему так, я расскажу когда уже подойдем непосредственно к первому шлюзу. Знание языка SQL для работы с базами данных. Там в принципе совсем не много и не так сложно, но понимать как это все работает и в случае чего получать для себя отчеты о том, где возник какой затык и почему, и посмотреть какие транзакции в какой истории какого шлюза обработались и какие нет, а также неаполнение данными служебных таблиц. Вот для всего этого и нужен SQL. Хотя, как вариант, все это можно делать и через какое-нибудь стороннее приложение для работы с базами данных, но все равно представлять как оно работает, я думаю надо.
Вопрос - Это наверное большой объем информации? Ты действительно решил все это расписать "от А до Я" или так, пробежать "галопом по европам", типа кто понял молодец, кто не понял - я не виноват.
Ответ - Да, я действительно решил это все расписать вот именно так, от А до Я. По крайней мере у меня теперь есть все для этого.
Вопрос - Что именно? Ты сам только сейчас об этом узнал? :)
Ответ - Нет :) Я узнал про это все немного раньше. Но почему я не писал об этом раньше или не стал писать об этом позже? Ну во-первых, как я уже писал выше, каждый последущий шлюз я немного изменял на основе того опыта, который получил на предыдущем. Те. я пишу первый шлюз, инфы, честно скажу не много :), наступаю на грабли, торможу, вроде разруливаю, пишу дальше. Ок, шлюз готов, делаю тесты и запускаю в работу. По ходу дела всплывают косяки, которые не предусмотрел на этапе проектирования. Поправляю все, переписываю. вроде все работает. Далее пишу второй и снова грабли, но уже немного другие. Причем первые грабли уже во втором шлюзе учтены. Но иногда переписывать приходится не только код шлюза, но и писать свои библиотеки, тк. библиотеки от разработчиков не устраивают либо по причине избыточности ее для шлюза, либо просто не нравится как она работает. В итоге когда все уже работает, смотришь что можно переделать все по другому. Но ползти в рабочий код и что-то там менять, когда вот оно все уже крутится как-то "не айс". Тем более случай такой уже был. Вообщем как в админском дзене - "если все работает - не трогай!" :) А теперь вот я взял себе еще один тестовый сервер, на днях его соберу и начну параллельно на нем делать то, что хотел исправить. И вот еще что, хотя я и представлял, что я хочу поменять и как поменять, но "в коде" я еще этого не придумывал. И в последние пару-тройку месяцев ходил и вынашивал эту идею. Короче говоря все совпало - приехал сервер и наконец-то сложился весь пазл что я хочу и как это нужно делать.
Вопрос - А ты не боишься, что открыв код шлюзов возможно покажешь какие-то уязвимости, которыми могут воспользоваться злоумышленники? Ведь пока твои шлюзы выглядят как "черный ящик" со стороны не понятно хорошо или плохо они написаны. А так посмотрят люди и скажут - ну и говно, либо вообще "уведут все деньги"
Ответ - Вот для этого я и собрался расписать как все есть на самом деле. Ну не для того конечно, чтобы "взломали и похитили", а чтобы я сам, зная что вот это все на виду и, еще раз, выставляя это все на всеобщее обозрение когда буду переписывать все, сам 100500 раз смотрел и проверял себя - а все ли я учел. Потому как если писать "хуяк, хуяк и в продакшн" зная что видеть будут только фасад здания, как раз и можно будет пропустить что-то "этакое". Те. еще раз - это все в первую очередь для себя, ну и потом уже для тех, кто придет следом. Так что и все последущие статьи я буду писать следущим образом. Вначале я буду "обозначать проблему" которую надо решить, затем обоснование почему я ее решил решить (о как :) ) именно таким способом, и уж потом непосредственно само решение по шагам и с красивыми картинками. Ну с красивыми картинками, я наверное погорячился, но скриншоты для более подробного понимания точно будут. Тем более время у меня есть, мне не нужно "успеть за 30 секунд", все что написано уже работает. Я просто спокойно буду приводить это все в порядок, по тем представлениям "о прекрасном", какие у меня сложились на данный момент. Хотя не факт, что описывая какую-то задачу мне не придет в голову еще более "прекрасное решение". Вот и опять же для чего я и собрался писать эти статьи :)
Вопрос - К какому времени собираешься это все закончить?
Ответ - Даже не знаю, хотелось бы к концу лета, но может быть быстрее, может что-то задержит. Вот тут загадывать не буду.
Вопрос - С чего начнешь?
Ответ - С железа :) Расскажу как у меня это все сделано и почему именно так. Так что на следущий пост можно приходить с отверткой, будем собирать сервер ;)
@ecurrex-ru, а почему nsfw? Из-за слова "хуяк"?
И другой вопрос: во всём этом многообразии шлюзов, нод, майнеров и прочих валидаторов есть ли хоть один, который может окупить аренду сервера или хотя бы электричество, будучи запущен на имеющемся дома оборудовании без дополнительных затрат?
У меня в стародавние времена крутилась на голосе ботоферма во главе с @privet по схеме task scheduler раз в час запускает набор консольных прилад с параметрами, а они уже с публичной нодой, даже без собственной БД, что-то там делают. Всё это добро на древнем лаптопе, который я специально глубоко чистил от всякого bloatware и лишних сервисов, иначе он не ворочался.
На момент окончания киберфонда и кураторских этот зоопарк "заработал" что-то вроде 15 тысяч рублей без каких-либо материальных вложений, регистраций и смс, но дальнейшая деятельность была нецелесообразна. Когда я случайно обнаружил, что кураторские вернули обратно, то даже запустил юнит-тесты своего кода и оказалось, что треть из них до сих пор работают, но поглядев на местную экономику, решил, что не стоит тратить времени на восстановление работоспособности.
@shuler, да вот честное слово случайно видимо мышой кликнул. а тк. для "автора" оно не затеняется, так и не придал этому значения. увидел уже после, когда с телефона "анонимно" зашел.
по поводу окупаемости, на данный момент нет. по крайней мере у меня. шлюзы для меня это просто хобби, поковыряться с кодом и "вспомнить детство", по настройке-установке серверов и тд. и тп. ( в прошлой жизни это были коммерческие UNIX - SCO и UnixWare, СУБД Oracle, маршрутизаторы CISCO. на всем этом я работал, местами даже был сертифицирован. но это было о-оочень давно, в 90-х и начале 00-х). сейчас же все собрано "из говна и палок", но мои потребности закрывает на все 100%). вот в следущем посте я как раз и распишу какое железо "по минимуму" можно собрать, чтобы запустить "мамкин дата-центр")
Так снять же можно, наверняка.
Понятно, спасибо!