В этом гайде вы узнаете:1. Как разработать Go проект на своем компьютере без опыта работы с Golang.2. Как создать и распределить блокчейн токены.3. Как разработать базу данных CLI на языке Golang с нуля.4. Как сделать свою базу данных неизменной при помощи криптографической хеш функции.5. Как мало прав есть у пользователей самых популярных приложений.Начнем с истории разработки распределенного реестра. Нашего главного героя зовут Андрей. Днем он владелец бара, а ночью – разработчик ПО. Он живет в небольшом городе на востоке Словакии под названием Ба́рдеёв.Андрей устал:1. Программировать старомодные PHP/Java/Javascript приложения.2. Забывать сколько клиенты должны за неоплаченные шоты.3. Тратить время на пересчет монет, купюр и выдачу сдачи.4. Выдавать пластиковые монетки, по которым посетители могут играть в настольный футбол и прочие игры.Андрей хотел бы:1. Иметь понятную и прозрачную финансовую историю активности бара и продаж, благодаря которой он бы мог легко соблюдать все регулирующие нормы.2. Превратить свой бар в автономную, децентрализованную и безопасную среду, которая бы приносила прибыль и ему и его клиентам.Его цель – написать простую программу, которая бы следила за балансами его клиентов в виртуальной форме. Андрей пишет:Он продолжает:Теперь, когда мы знаем цель Андрея, можем приступать к разбору.Для полного понимания рекомендуется 2+ года опыта программирования на Java/PHP/Javascript или на другом языке, похожем на Golang. Посоветуем также пройти официальный курс A Tour Of Go, чтобы ознакомиться с синтаксисом языка и основными концепциями (это займет около 20 минут).Андрей занимался базами данных SQL в 90х. Он знает как сделать и оптимизировать продвинутое решение. Для создания базы он выбрал простой но надежный файл JSON. Разберем процесс создания блокчейна пошагово.Андрей генерирует 1 миллион токенов. У каждого блокчейна есть генезис-блок, который распределяет первые токены ранним участникам. Начинается все просто – с обыкновенного genesis.json.Андрей создает файл ./database/genesis.json, в котором определяет что на его блокчейне будет 1 миллион токенов и все они будут принадлежать ему. Дальше он занимается ценообразованием – присуждает каждому токену стоимость в евро, долларах или другой валюте.
Он также решает, что должен получать 100 токенов в день за поддержание базы данных.Наш герой готов принимать токены в своем баре. К сожалению, никто к нему не заходит, поэтому он заказывает три рюмки водки для себя и записывает эту сделку в бумажную базу данных:
Для того, чтобы постоянно не пересчитывать балансы клиентов, андрей создаёт файл ./database/state.json.База данных выглядит следующим образом:Чтобы привлечь новых клиентов Андрей объявляет об акции – он предоставит 100% бонус на покупку токенов TBB в следующие 24 часа. Маркетинговый ход сработал. Его первый клиент под ником BabaYaga купил TBB на €1000 и, чтобы отметить событие, потратил один токен на рюмку водки.Транзакция, записанная на бумаге:
База данных выглядит следующим образом:Андрей решил немного отдохнуть, поиграть в видеоигры и почистить свой жесткий диск от старых фотографий. К несчастью, он случайно нажал Enter когда вводил команду удаления в терминале sudo rm -rf /Все его файлы, в том числе Genesis.json и State.json его бара исчезли. Поскольку наш герой имеет опыт в разработке, он не растерялся. Хотя у него не было бэкапа, у него было кое-что получше – листик бумаги, на котором записаны все транзакции в его базе данных. Теперь ему нужно только заново провести все транзакции и база данных восстановится.Он решает улучшить свою базу данных MVP архитектурой, построенной на событиях. (Event-based architecture). Каждое действие а баре, вроде единичной покупки напитка, должно быть записано в базу данных блокчейна.Каждый клиент будет представлен в базе данных при помощи структуры Account.Каждая транзакция будет иметь четыре характеристики: откуда, куда, размер и данные. Генезисная база данных останется файлом JSON:Все транзакции, ранее записанные на куске бумаги, будут хранится в локальной текстовой базе данных tx.db:Ключевым компонентом базы данных, отвечающим за бизнес-логику будет структура State:Структура State будет знать балансы всех пользователей, а также адресата, отправителя, и сумму транзакций. State считывает начальные балансы пользователей с файла genesis.json.После этого изначальные балансы обновляются, заново проигрывая все события из базы данных tx.db.Компонент State отвечает за:Добавление транзакций в мемпул:Подтверждение транзакций:
Сохранение транзакций на диск:
Продолжение следует. В следующих частях мы рассмотрим процесс создания интерфейса командной строки, основные свойства хэш функции и как работает неизменность блокчейна на практике.Подписывайтесь на ForkNews в Telegram, чтобы быть в курсе новостей из мира криптовалют По материалам www.freecodecamp.org
С ростом цен все больше россиян интересуются биткоином. Но всемирное увлечение этим криптоактивом также привело…
В наше время криптовалюты стали неотъемлемой частью мировой экономики и финансов. Они предоставляют уникальные возможности…
Виталий Бутерин, основатель Ethereum, имеет тесные связи с Wanxiang Group, китайской компанией, зависящей от правительства…
Обмен юсдт (Tether TRC20 USDT) на российские рубли (RUB) на карты РФ - это процесс…
Каждый посетитель интернет-казино жаждет получить крупный выигрыш с наименьшими рисками. Для такой игры лучше всего…
Появление криптовалюты произвело революцию в цифровых активах, позволив частным лицам безопасно и легко обмениваться ценностями…
Bitcoin и другая криптовалюта всегда вызывала противоречивые мнения у разных участников финансового сектора. Не исключением…
Рынок финансовых услуг России стабильно развивается. Каждый день компании предлагают новые программы финансирования для потенциальных…
Кэш-память является одним из ключевых компонентов процессора, который играет важную роль в оптимизации производительности ноутбука…
Для того чтобы стать успешным и востребованным риэлтором, нужно хорошо разбираться в объектах недвижимости и…
По данным Организации Объединенных Наций, пандемия и связанная с ней нестабильная экономика приводят к росту…
В последнее время банки активно предлагают различные программы финансирования граждан. Одним из удобных и технологичных…
Доверенный торговый счет – это соглашение между трейдером и инвестором, в результате которого трейдер торгует…
Рейтинг лучших ботов для торговли криптовалютой на бирже может меняться со временем и зависит от…
Криптовалюты уже давно стали отличным вариантом заработка. Волатильность рынка позволяет получать хороший доход. Поэтому трейдеры…
В наше время деньги нужны всем и всегда. Но иногда бывают ситуации, когда они нужны…
Aptos - это блокчейн L1, который стремится стать самым безопасным и масштабируемым блокчейном в истории.…
Ethereum является одной из самых перспективных криптовалют и в ближайшем будущем может отнять трон у…
Дефи криптовалюта - это новый вид валюты, которая появилась на рынке в последние годы. Она…
Ноутбуки 2-в-1, также известные как конвертируемые ноутбуки — эти устройства давно стали отдельным сегментом в…
Найбільша криптовалютна біржа Європи з українським корінням — WhiteBIT — створила спеціальні умови для залучення…