Осознание технической стороны Биткойна для начинающих

Почти все люди стопроцентно согласны с тем, что владеть техническими способностями в области программирования критически принципиально – как для Биткойна, так для грядущего в целом. При всем этом, они желают получить грамотные советы относительно исследования технической стороны Биткойна. Ведь некие из их, к примеру, могут быть отлично знакомы с постулатами австрийской экономики и анархо-капитализма, но, полностью не иметь значимого опыта работы с компами и, а именно, с программированием. Что задумываются по этому поводу и советуют созодать такие спецы, как Пьер Рочард?

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

Но, самое основное: вы никогда не можете изучить всю информацию касательно компов! Никогда.

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

Тем не наименее, для вас доступно знать непосредственно то, что дозволит достигнуть поставленных целей – будь то защита закрытых ключей, отправка либо получение платежей средством Биткойна/Lightning Network, также создание настоящего приложения для Биткойна/Lightning Network.

Компьютерная грамотность

Для начала, стоит ознакомиться с обзором разных аппаратных компонент компа и иных физических гаджетов, с которыми потенциально придётся работать:

https://www.explainingcomputers.com/hardware.html [eng]

Аппаратное обеспечение либо компьютерные комплектующие

«Аппаратное обеспечение, аппаратные средства, компьютерные комплектующие, «железо», (англ. hardware) — электрические и механические части вычислительного устройства, входящие в состав системы либо сети, исключая программное обеспечение и данные (информацию, которую вычислительная система хранит и обрабатывает). Аппаратное обеспечение включает: компы и логические устройства, наружные устройства и диагностическую аппаратуру, энергетическое оборудование, батареи и батареи. К аппаратному обеспечению относятся устройства, образующие конфигурацию компа».

________________________________________

Прочитайте книжку Чарльза Петцольда «Код. Потаенный язык информатики», которую рекомендовала спец по Lightning Network – Лиза Нейгут. Прочитайте её, если ещё не сделали этого – отзывы достаточно перспективные.

 «Код» – это детально иллюстрированная и очень понятная книжка, дающая настоящий контекст для осознания современного мира ПК, цифровых медиа и Веба. Ваш уровень технической подготовки не имеет значения: «Код» захватит вас с первых страничек и, может быть, даже растормошит вашего внутреннего технофила».

________________________________________

Научитесь стремительно печатать: https://www.typing.com/

Обзор клавиатурных тренажёров для обучения способу слепой печати

«Клавиатурные тренажёры – тип программного обеспечения и веб-сервисов, созданных для обучения набору текста на клавиатуре компа. С помощью их можно прирастить скорость, уменьшить число опечаток, повысить выносливость во время набора текста, также постигнуть способ высокоскоростного набора текста, при котором употребляются все 10 пальцев рук, без необходимости глядеть на клавиатуру («слепая» печать). Клавиатурные тренажёры, обычно, содержат обучающие аннотации, как верно набирать текст – положение тела за столом компа, размещение пальцев на клавиатуре и т.п., также практические занятия».

________________________________________

Чтоб получить общий обзор операционных систем исходя из убеждений юзера – прочтите хоть какой животрепещущий мануал для начинающих, зависимо от того, какой системой пользуетесь: Linux, macOS либо Windows.

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

Командная строчка

В принципе, для обычного юзера хватит, но, если для вас нужна подробная техно информация, то придётся акклиматизироваться с командной строчкой – текстовым интерфейсом, где мышь (практически) никчемна. Да, интерфейс командной строчки (CLI) противоположен тому, с чем вы, возможно, привыкли вести взаимодействие – графическому интерфейсу (GUI).

Базисных познаний командного интерфейса, часто, полностью довольно, но, есть люди, которые в этом истинные мастера. Стоит учесть, что командная строчка в Windows различается от её аналога в Linux и macOS. Потому, в Linux рекомендуется  установить подсистему WSL (Windows Subsystem). Схожий метод исследования командной строчки, обычно, доступен, как для Linux, так и для macOS.

В Сети расположено довольно руководств и документации по командной строке. К примеру, Кристофер Аллен написал учебник, направленный на macOS:

https://github.com/ChristopherA/intro-mac-command-line [eng]

Macintosh Terminal. Карманный справочник

«Terminal — одна из более массивных программ для управления Маc. В неком смысле ее можно именовать аналогом командной строчки DOS в Microsoft Windows (но Terminal имеет существенно наиболее широкие способности). В книжке рассматриваются более принципиальные и полезные способности Terminal, которые дозволят для вас работать еще эффективнее.

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

________________________________________

Книжка «Командная строчка Linux. Полное управление»

«Эта книжка познакомит вас с основами навигации по файловой системе, опции среды, последовательностями установок, поиском по шаблону и т.д.

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

Преодолев исходный ужас перед оболочкой Linux, вы поймете, что командная строчка – это естественный, логичный и обычный метод общения с компом».

________________________________________

В свою очередь, у Codecademy тоже есть схожий онлайн-курс:

https://www.codecademy.com/learn/learn-the-command-line [eng]

Базы командной строчки. Бесплатный практический курс

Git

Git – это распределённая система контроля версий, которая обширно употребляется при разработке программного обеспечения. Исследование Git принципиально, поэтому что он употребляется таковыми проектами, как Bitcoin и Lightning, с которыми вы столкнётесь сначала. Git нередко употребляется при работе с технической документацией и, что здорово, дозволяет для вас заносить правки, улучшения и дополнения при совместной работе с документами.

Как употреблять GIT при документировании. Хабр

GitHub.com – это веб-сервис, сделанный поверх Git с GUI, но, обычно с Git  ведут взаимодействие локально на компе/ноутбуке средством командной строчки.

Вот ресурсы и управления для начала работы с Git: https://try.github.io/ [eng]

Пошаговая аннотация по работе с Git и Github

Знакомство с Git и GitHub: управление для начинающих

Командная строчка + Биткойн + Lightning

Для начала, пристально прочтите книжку «Осваиваем биткойн. Программирование блокчейна» (Mastering Bitcoin. Andreas M. Antonopoulos). Скачать можно тут (ну либо тут).

«Эта книжка предназначена в главном для программистов-кодеров. Если вы сможете писать программки на каком-либо языке программирования, то из данной нам книжки вы узнаете, как работают криптографические валюты, как их употреблять и как разрабатывать программное обеспечение (ПО) для работы с ними. Не считая того, несколько первых глав можно разглядывать как подробное введение в технологию биткойна для тех, кто не занимается программированием, но пробует осознать внутреннее устройство и функционирование биткойна и криптографических валют».

________________________________________

Bitcoin Core, Lightning и программирование от Кристофера Аллена:

https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line/blob/master/README.md [eng]

Эта книжка разбита на последующие разделы:

  • Часть 1-ая: Подготовка – осознание основ Bitcoin и настройка сервера для использования.
  • Часть 2-ая: Внедрение Bitcoin-CLI для сотворения транзакций.
  • Часть 3-я: Bitcoin-скрипты
  • Часть 4-ая: Увеличение сохранности вашего узла при помощи Tor
  • Часть 5-ая: Внедрение Lightning-CLI для сотворения транзакций
  • Часть шестая: Программирование при помощи RPC

________________________________________

Bitcoin Improvement Proposals (BIP) – это полная мешанина, потому просто сосредоточьтесь на тех качествах, с которыми для вас приходится сталкиваться почаще всего. Наверняка, не стоит читать всё от начала до конца. Но, во всяком случае, вот все они:

https://github.com/bitcoin/bips/blob/master/README.mediawiki [eng]

________________________________________

Меж иным, в книжке Mastering Bitcoin есть отдельный раздел о Lightning Network. Также, о Lightning Network можно прочесть в техническом учебнике от Джо Кендзики:

https://blog.usejournal.com/the-bitcoin-lightning-network-a-technical-primer-d8e073f2a82f [eng]

________________________________________

Пара принципиальных статей на российском:

Lightning Network: все технические детали

«Не»-простой гайд по настройке и использованию полного узла Lightning Network

________________________________________

Текущие спецификации Lightning Network (LN) находятся тут:

https://github.com/lightningnetwork/lightning-rfc [eng]

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

Также, прочтите обзор от Lighting Labs: https://dev.lightning.community/overview/ [eng], также изучите их управление по интерфейсу командной строчки: https://dev.lightning.community/tutorial/ [eng].

________________________________________

Ещё больше ссылок касательно Биткойна/Lighting и блокчейна можно найти в руководстве от Одеда Лейбы:

https://github.com/oleiba/blockchain-getting-started [eng]

________________________________________

Даже если вы остановитесь лишь на исследовании перечисленного выше– у вас всё равно будет приличный опыт работы, базисное осознание технической стороны Биткойна и Lightning Network, также выход на результаты тестов остальных людей с программным обеспечением.

Но, может быть, вы пожелаете писать собственное программное обеспечение!

Программирование

Стоит представить, что вы будете несколько обескуражены, когда возьмётесь за исследование языков программирования, впрямую связанных с более пользующейся популярностью реализацией – Bitcoin Core, которую ещё именуют bitcoind. Как понятно – не существует обычного пути для исследования C++.

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

На тему программирования написано большущее количество материалов. Вы сможете начать с исследования Python на Codecademy:

https://www.codecademy.com/learn/learn-python [eng]

Топ 15 наилучших онлайн-курсов по Python

________________________________________

Но, в принципе, вы сможете начать с учебника по Ruby on Rails (фреймворк, написанный на языке программирования Ruby), написанного Майклом Хартом, у которого есть огромное количество хороших бесплатных и платных учебных ресурсов:

https://www.learnenough.com/

________________________________________

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

На ранешней стадии, когда сталкиваетесь с ошибками – интенсивно используйте Гугл. Если вы решили делему при помощи Гугл – сначала, задумайтесь, как вы могли избежать данной нам ошибки либо как найти причину и поправить ошибку без Гугл. Это дозволит для вас убыстрить отладку кода. В конечном итоге, вы напишите большенный объём кода, в каком не будет много «обычных» тривиальных ошибок – просто в коде будут вправду сложные и опасные ошибки!)

Нередко встроенная среда разработки (IDE) может автоматом указывать для вас на препядствия, потому в вашем распоряжении есть 10-ки лет опыта разработки, который, непременно, поможет. К примеру, неким нравится воспользоваться средой разработки JetBrains. Для языка Python у их есть PyCharm (версия для коммьюнити – бесплатна, а версия PRO бесплатна для студентов).

Добавочно, вы сможете воссоздать рабочую среду Jupyter IPython, как на Codecademy, которая является веб-ориентированной и весьма интерактивной: https://ipython.org/. Данный вариант очень рекомендуется для разных тестов.

Если опосля всего этого вы пристраститесь к программированию на Python – стоит посетить этот ресурс: https://docs.python-guide.org/ [eng].

В свою очередь, базы веб-разработки можно изучить, следуя последующему учебнику от Мигеля Гринберга: https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world [eng].

Возможно, для вас не составит труда подобрать ту же комбинацию в виде интерактивного учебника + обычного пособия по веб-фреймворкам для хоть какого языка программирования. Тут более пользующимся популярностью языком является JavaScript, так как его можно употреблять как в веб-браузере юзера, так и на сервере, на котором располагается веб-контент.

«Полнофункциональная» веб-разработка дозволит выяснить для вас о реляционных и документных базах данных, хранилищах ключей/значений, очередях сообщений, параллелизме, работе в сети и т.д. И всё это отчасти либо стопроцентно применимо к программированию для Биткойна либо Lightning Network. Это даст для вас даже больше нежели просто несвязанный процесс веб-разработки.

Когда наберёте довольно опыта в «сценариях для любителей» – начните кидать для себя вызов. Какой бы современный язык вы не употребляли – есть книжки для «среднего» и «продвинутого» уровня по таковым темам, как объектно-ориентированное и функциональное программирование.

Также, есть весьма достойные внимания книжки, в каких рассказывается о архитектуре программного обеспечения, качестве кода, методологии разработки, тестировании и т.д. Потому, вы постоянно сможете сделать лучше свои способности программирования, изучая новейшие языки, читая код, который считается качественным и запрашивая обзор кода на StackExchange: https://codereview.stackexchange.com/.

Программирование + Биткойн

Статья «Learn Blockchains by Building One» от Даниэля Ван Флюмена:

https://hackernoon.com/learn-blockchains-by-building-one-117428612f46 [eng]

Создаем Blockchain с нуля на Python

________________________________________

Поэкспериментируйте с «карманным» блокчейном от Джеймса О`Берни:

https://github.com/jamesob/tinychain [eng]

Tinychain – это мини-реализация Биткойна. Его цель – быть малогабаритным, понятным, работающим воплощением метода необычного консенсуса. Сначала, он написан для того, чтоб послужить отправной точкой для программистов, которые интересуются Биткойном либо иными криптовалютами, но, не имеют с ними близкого знакомства.

________________________________________

Если же вы не так давно начали учить JavaScript, то для вас подфартило! Стефан Рош написал весьма пространное управление по BitcoinJS:

https://github.com/bitcoin-studio/Programming-Bitcoin-with-BitcoinJS [eng]

________________________________________

Но, если вы на этом шаге и правда решили как надо разобраться в Bitcoin Core, то для вас придётся изучить C++! Кандидатурой является btcd, который написан на Go и обычно считается наиболее лёгким для чтения либо  bcoin, который написан на JavaScript.

Хотя, перед тем, как начинать исследование C++ – задумайтесь о том, чтоб сделать обходной путь, начав с Rust, так как он может упростить процесс обучения.

Может быть, стоит начать обучение с этих ссылок:

Базы C++. Программирование для начинающих

Базы программирования на C++. Самоучитель

______________________________________

При всем этом, сможете испытать писать код с внедрением xeus-cling: https://github.com/QuantStack/xeus-cling [eng], что является этим же IPython, но, для C++. Работа может пойти еще быстрей нежели в классической среде C++, в особенности, с учётом необходимости в неизменном перекомпилировании.

________________________________________

Также, прочтите работу Contributing to Bitcoin Core от Джона Ньюбери: https://bitcointechtalk.com/contributing-to-bitcoin-core-a-personal-account-35f3a594340b [eng]

О правилах содействия можно прочесть тут:

https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md [eng]

Прочтите заметки о крайних встречах, чтоб выяснить, над чем работают остальные: https://bitcoincore.org/en/meetings/ [eng]

________________________________________

К слову, существует веб-сайт для просмотра всех запросов на включение кода в Bitcoin Core, которые могут отдать для вас представление о том, что находится в стадии разработки и сколько ещё ожидать проверки: https://bitcoinacks.com/ [eng]

Программирование + Bitcoin Bootcamps

Любой буткэмп имеет разную направленность, посетите их сайты, чтоб выяснить темы, даты и цены (прим. Буткэмп – центр интенсивного обучения программированию, т.н. «тренировочный лагерь для программистов»):

  • Джимми Сонг → https://programmingblockchain.com/ [eng]
  • Джастин Мун → https://buidlbootcamp.com/ [eng]
  • Vortex → https://programmingwithbitcoin.com/ [eng]

Программирование + Lightning

Для Lightning Network есть несколько всеполноценных реализаций:

  • c-lightning написано на C: https://github.com/ElementsProject/lightning [eng]. А вот тут есть пример  того, как программировать для c-lightning на Python: https://github.com/ElementsProject/lightning/blob/master/contrib/pylightning/lightning/lightning.py [eng]
  • Eclair, написанный на Scala (разновидность многофункционального программирования Java): https://github.com/ACINQ/eclair [eng]
  • LND, написанный на Go: https://github.com/lightningnetwork/lnd [eng]

И, в итоге – непременно прочтите подробное управление от Андре Невеса, которое поможет для вас начать и улучшить рабочий процесс разработки приложений Lightning.

Создатель: Pierre Rochard

Переработано и дополнено: Ne-Standart @ БитНовости

Author: Anonim