Я работаю разработчиком программного обеспечения в РСК уже почти четыре года. Я поступил, не особо разбираясь в программировании на блокчейне, но за эти годы, благодаря этому опыту, я смог изучить много интересных тем.
Если программист хочет сотрудничать с кодом RSK, но, как и я в начале, не знает о блокчейне, некоторые рекомендации в этом посте. Некоторые из них я уже писал в испанской серии постов 2017 года Learning Ethereum/RSK. Ниже приведены комментарии и личные рекомендации, которые я нашел интересными и важными для изучения.
Хотя базовый проект RSK, его узел (см. https://github.com/rsksmart/rskj) написан на Java, есть несколько проектов для совместной работы, применение с JavaScript на Go, также мы увидим применение Solidity ( язык смарт-контрактов).
Биткойн
Это блокчейн по преимуществу (википедия). Основной продукт RSK — это сайдчейн, связанный с Биткойном: BTC (биткойны) можно перевести из основной сети Биткойн в RSK и наоборот. Ниже я комментирую основную идею сайдчейна RSK.
Хотя не обязательно программировать для RSK (будь то хакатоны, сотрудничество с открытым исходным кодом или работа в компании), важно знать, как работает Биткойн. Для этого могу порекомендовать ресурс Андреаса Антонополуса (личный сайт) (твиттер) (википедия)
Я прочитал там:
Эта книга в основном предназначена для программистов. Если вы можете использовать язык программирования, эта книга научит вас, как работают криптографические валюты, как их использовать и как разрабатывать программное обеспечение, которое с ними работает. Первые несколько глав также подходят в качестве углубленного введения в биткойн для непрограммистов — тех, кто пытается понять внутреннюю работу биткойна и криптовалют.
В нем есть такие главы, как: Как работает биткойн, Биткойн-ядро, Ключи и адреса, Кошельки, Транзакции, Расширенные транзакции и сценарии, Блокчейн, Биткойн-сеть, Майнинг и Консенсус, Безопасность биткойнов, Блокчейн-приложения.
Хотя не обязательно понимать большую часть 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