Мое возвращение в голос после полугодового «отпуска»
Снова привет!
В общем то моя пропажа связана не с отпуском, а с личными обстоятельствами, которые стали большой преградой для нашего с Вами общения.
Однако не взирая на обстоятельства я продолжил изучение особенной для меня темы - разработку собственной криптовалюты. Не могу сказать что это уже готовый проект, но некоторый каркас, особенно который может пригодиться для новечков в этой области я уже написал.
Сразу скажу, что использовал для этого Core Linux, редактор vim, а также библиотеку OpenSSL. Все ядро написано на С++11 с использованием строк обычного С.
Из каких частей состоит проект
- Сервер и клиент, использующей для «общения» придуманный мною протокол altnet, оба на родных юниксовых сокетах на языке С.
- База данных для хранения блоков и транзакций, использует стандартные файловые функции С++.
- Интерпритатор стэковый, лдя проверки транзакций, точнее скриптов в них использует OpenSSL.
- Консенсус - это такой пакет классов, регламентирующий выбор майнера для создания нового блока.
Собственно в этой последовательности я и буду излагать материал.
Все эти части являются независимыми, например сервер и клиент могут самостоятельно пересылать текстовые команды и обмениваться структурами данных в байтовом формате, поэтому освоение сетевых технологий и будет первой частью курса.
Who is protocol Altnet
Идея достаточно проста. Клиент отправляет серверу команду вида:
ИМЯФУНКЦИИ ПАРАМЕТР1 ПАРАМЕТР2 ПАРАМЕТРN
А сервер присылает ответ, либо также в текстовом формате, либо структурой данных, причем может делать это не только по отношению к клиентам, но и между другими серверами, как это делают ноды.
Заложенные функции рассмотрим вместе с кодом в следующей статье.
Что будет с транзакциями
Изучив особенности работы на С с библиотекой OpenSSL я выяснил, что сдесь все будет сводиться с алгоритмами касательно таких вещей, как BIGNUM (т.е большие числа, напоминающие строки) а также математике на эллиптической кривой (а именно умножению) тут существует несколько способов, в коде я использовал что-то среднее между сложным и развернутом.
Операции цифровой подписи/верефикации позволит создавать скрипт, который клиент записывает в транзакцию, прерд отправкой на сервер, если интерпретатор сможет выполнить этот скрипт, то транзакция считается подлинной.
Что за зверь получится
Сечас задача стоит конкретно научиться, так как в тестнете я все это дело не тестировал, только локально, однако понимание основ, надеюсь заинтересует разработчиков, к работе над проектом.
Кстати название придумал BuLang - так как в конечном счете хочется создать некоторый язык, обединяющий возможности работы с операционными системеми и блокчейном в едином интерфейсе.
Пока буду писать статьи - буду думать как реализовать все задуманное.