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

Если программист хочет сотрудничать с кодом RSK, но, как и я в начале, не знает о блокчейне, некоторые рекомендации в этом посте. Некоторые из них я уже писал в испанской серии постов 2017 года Learning Ethereum/RSK. Ниже приведены комментарии и личные рекомендации, которые я нашел интересными и важными для изучения.

Хотя базовый проект RSK, его узел (см. https://github.com/rsksmart/rskj) написан на Java, есть несколько проектов для совместной работы, применение с JavaScript на Go, также мы увидим применение Solidity ( язык смарт-контрактов).

Биткойн

Это блокчейн по преимуществу (википедия). Основной продукт RSK — это сайдчейн, связанный с Биткойном: BTC (биткойны) можно перевести из основной сети Биткойн в RSK и наоборот. Ниже я комментирую основную идею сайдчейна RSK.

Хотя не обязательно программировать для RSK (будь то хакатоны, сотрудничество с открытым исходным кодом или работа в компании), важно знать, как работает Биткойн. Для этого могу порекомендовать ресурс Андреаса Антонополуса (личный сайт) (твиттер) (википедия)

Осваиваем биткойн 2-е издание

Я прочитал там:

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

В нем есть такие главы, как: Как работает биткойн, Биткойн-ядро, Ключи и адреса, Кошельки, Транзакции, Расширенные транзакции и сценарии, Блокчейн, Биткойн-сеть, Майнинг и Консенсус, Безопасность биткойнов, Блокчейн-приложения.

Хотя не обязательно понимать большую часть RSK, интересно прочитать о Lightning Network, так называемой биткойн-слое 2 (у RSK также будет свой уровень 2). Вы можете начать с:

Глубокое погружение в LND: обзор и процесс финансирования канала

Это очень интересная тема, смотрите все, что появляется, даже в Ethereum (и вы увидите это в RSK):

Кембрийский взрыв слоя 2, Бен Джонс из Plasma Group

Блокчейн

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

Есть бесчисленное множество руководств, но я могу упомянуть некоторые:

Автостопом по вселенной блокчейна
Лучшие ресурсы для изучения разработки блокчейна в 2019 году
Понимание основ блокчейна, часть 1: византийская отказоустойчивость
Понимание основ блокчейна, часть 2 : Proof of Work и Proof of Stake»
Понимание основ блокчейна, часть 3: делегированное доказательство доли

Эфириум

Это второй по известности блокчейн. Смотри сайт. Начатая программистами, которые сотрудничали с проектом Биткойн, его новинка — поддержка смарт-контрактов. Узел RSK родился как модифицированный форк узла Ethereum, реализованный на Java в проекте EthereumJ (теперь устарел) (есть узлы, реализованные на других языках, таких как Go, Rust, Python и т. д.)

Чтобы понять RSK, тогда да: нужно понимать Ethereum (и потом, отличия от RSK). И снова Антонополус с Гэвином Вудом (одним из создателей Эфириума):

Освоение Эфириума

Тогда прочтите Желтую книгу Эфириума, где объясняется внутреннее функционирование Эфириума.

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

Что такое Ethereum?
Изучите Ethereum
Начало работы с Ethereum в качестве разработчика
Что такое Ethereum? Все, что вам нужно знать!
Путеводитель по газу
Понимание дерева эфириума
Структура данных в Ethereum | Эпизод 1: Кодирование/декодирование рекурсивного префикса длины (RLP)
Структура данных в Ethereum | Эпизод 1+: Компактное (Hex-префикс) кодирование
Структура данных в Ethereum | Эпизод 2: Radix trie и Merkle trie
Структура данных в Ethereum | Episode 3: Patricia trie
Структура данных в Ethereum | Эпизод 4: Погружаемся в примеры
CryptoZombies — это бесплатная интерактивная школа программирования, которая научит вас создавать игры на Ethereum
Список потрясающих ресурсов Ethereum
Виртуальная машина Ethereum Потрясающий список»
Автостопом по смарт-контрактам в Эфириуме
Объяснение Эфириума: деревья Меркла, мировое состояние, транзакции и многое другое
Эфириум под капотом: часть 1 ( ver 0.1)
Эфириум под капотом. Часть 2 (кодирование RLP)
Эфириум под капотом. Часть 3 (декодирование RLP)
Дорожная карта развития EVM
Прохождение Ethereum Yellow Paper: Merkle Trees
Руководство по стандартам ERC Ethereum
Погружение в мировое состояние Ethereum
Освоение основ Ethereum (для разработчиков новых блокчейнов), часть III — Кошельки, ключи и счета

Я бы рекомендовал изучать в основном по ссылкам выше темы:

  • Основные сущности Ethereum: блоки, транзакции, счета
  • Состояние мира, деревья Трие и Меркле
  • Шифрование информации с помощью RLP
  • Подписание транзакций с использованием эллиптических кривых

По теме криптографии эллиптических кривых см. мои отзывы в личном проекте (WIP) об эллиптических кривых.

РСК

Текущий код узла можно изучить на https://github.com/rsksmart/rskj.

Основные варианты использования, охватываемые как узлом Ethereum, так и узлом RSK (хотя они реализованы по-разному):

  • Общайтесь с внешними клиентами через JSON RPC, см. TBD
  • Общайтесь с другими узлами, используя TCP на основе протокола Peer to Peer (P2P).
  • Отправлять сообщения другим узлам, информируя
  • Текущее состояние узла
  • Новые транзакции
  • Новые блоки или уведомления о новых блоках
  • Другие сообщения запроса/ответа для разговора узла с узлом, например, когда узел опаздывает (у него нет всех блоков текущей цепочки блоков), он запрашивает блоки у другого узла.
  • Прием транзакций от внешних клиентов
  • Учитывая транзакцию, полученную от внешнего клиента или другого узла, проверьте ее и передайте другим дружественным узлам.
  • Получив блок, полученный от дружественного узла, проверьте его, посмотрите, принадлежит ли он цепочке, и, если все в порядке, перешлите его дружественным узлам.
  • Первоначально подключитесь к узлам, называемым bootstrap, чтобы получить начальный список узлов для подключения.

Надеюсь в следующем посте написать чуть подробнее об этих реализациях.

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

Другие темы для изучения (и я надеюсь осветить их в будущих постах, я оставлю здесь ссылки по мере их появления): сети RSK testnet и mainnet, проводник, статус, слияние майнинга, двусторонняя привязка, распределенное хранилище, уровень 2 и рейден. , и т.д.

Если у вас есть какие-либо технические вопросы, вы можете написать на https://gitter.im/rsksmart/rskj.

Мой личный опыт

Как вы знаете, мне нравится программировать, чтобы действительно понять тему. Некоторые из моих первых шагов вы можете увидеть в серии постов Building a Blockchain.

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

Также пишу блокчейн с нуля (узел блокчейна) на основе идей Эфириума (а значит, аналог RSK) на Java, см. мой личный проект BlockchainJ (есть еще один, который пока не обновляю, на C# БлокчейнШарп)

Больше ресурсов по блокчейну, программированию, эфириуму и солидности в README моих репозиториев:

https://github.com/ajlopez/aprendiendoblockchain
https://github.com/ajlopez/aprendiendoSolidity
https://github.com/ajlopez/SoliditySamples

Некоторые личные проекты, больше ориентированные на смарт-контракты (ресурсы есть по каждой теме, в README каждого проекта):

Компилятор Solidity
Компилятор виртуальной машины Ethereum (от AST (абстрактного синтаксического дерева) до байт-кодов)
Виртуальная машина Ethereum до кода
Децентрализованная биржа токенов ERC20
Простой мост Ethereum/RSK
Метатранзакции в Ethereum RSK

Ангел Ява Лопес
https://github.com/ajlopez
https://twitter.com/ajlopez