В среду 4 декабря в Москве прошел Minter Demo Day — ивент, посвященный развитию экосистемы проекта и ее участников. Так, в ходе выступлений члены команды рассказали о последних апдейтах сети до версии Minter 1.1, а проекты-участники экосистемы поделились своим опытом работы с блокчейном. О том, каких успехов добился проект за полгода работы мейннета сети и каковы планы развития Minter — рассказывает DeCenter.
Каким будет грядущее обновление Minter 1.1
Текущая версия блокчейна Minter была запущена 15 мая 2019 года. С момента запуска в сети было обработано порядка 3.5 млн блоков и транзакций и выпущено более 1.3 млрд внутренних монет BIP. За поддержание работоспособности сети отвечают 40 валидаторов, которые обеспечивают 99.46% uptime блокчейна. В Minter 1.1 по факту каждый модуль блокчейна был если и не переработан заново, то оптимизирован и улучшен в несколько раз. Среди ключевых обновлений Даниил Лашин отметил:
Max Supply. Самое ожидаемое обновление — ограничение максимальной эмиссии кастомных монет. Теперь в транзакции создании кастомных монет появилось поле «MaxSupply», которое позволяет ограничить верхнюю планку количества кастомной монеты в системе. При этом эти монеты будут работать так же, как и в текущей версии Minter, но с единственной разницей — транзакции покупки, которые ведут к превышению установленного лимита эмиссии, будут автоматически отклоняться и не попадут в блокчейн. А созданные в Minter 1.0 монеты будут иметь лимит в 1 квадрлн. Важно отметить, что после создания монеты изменить лимит эмиссии будет невозможно, так как по задумке в Minter нет таких понятий, как владелец или управленец монеты.
GasCoin in Checks. Данное обновление появилось в чеках, где добавилось поле GasCoin. В текущей версии Minter чеки можно обналичивать, оплачивая комиссию только в той монете, которая содержится в самом чеке, что было не очень удобно для разработчиков. В новой версии блокчейна транзакция обналичивания чека должна использовать монету газа, указанную в самом чеке в поле GasCoin. Чеки из Minter 1.0 в новой версии поддерживаться не будут, их необходимо будет пересоздать.
Multi-signature wallets. Кошельки с мультиподписями будут использоваться для создания сайдчейнов и трастлесс сервисов. Максимальное количество владельцев таких кошельков — 32 пользователя, а максимальный вес каждого голоса — 1023.
State History. Хранение истории на нодах стало одним из ключевых моментов обновления Minter 1.1. Собрав статистику об использовании блокчейна, команда Minter полностью переработала систему хранения данных. Теперь нода с 500 000 транзакциями и 200 000 блоками и полной историей занимает 5GB на диске. Это позволит разрабатывать приложения быстрее и качественнее. В конфигурации поле keep_state_history заменено на поле keep_last_states, с помощью которого можно указывать количество последних блоков, хранящихся в ноде. Также в значительной степени было оптимизировано хранилище событий, позволяющее разработчиком в сотни и тысячи раз компактнее хранить такие данные как, например, награды.
No More Coin Liquidations. Данное обновление стало, пожалуй, самым обсуждаемым среди пользователей Minter. В новой версии блокчейна будет отсутствовать возможность ликвидации кастомной монеты, поскольку такая операция является ресурсоемкой и потенциально опасной для всей сети. Более того, теоретически такая операция может быть использована в качестве вектора атаки, причем сразу по нескольким параметрам. В связи с чем командой было принято решение отказаться от такого понятия, как удаление кастомной монеты. Вместо этого команда ввела минимальный неснижаемый резерв, зависящий от CRR (Constant Reserve Ratio, отвечает за коэффициент постоянного резервирования монетами BIP). Так, если монета:
10−19% CRR, минимальный неснижаемый резерв — 100 000 BIP
20−29% CRR, минимальный неснижаемый резерв — 90 000 BIP
30−39% CRR, минимальный неснижаемый резерв — 80 000 BIP
40−49% CRR, минимальный неснижаемый резерв — 70 000 BIP
50−59% CRR, минимальный неснижаемый резерв — 60 000 BIP
60−69% CRR, минимальный неснижаемый резерв — 50 000 BIP
70−79% CRR, минимальный неснижаемый резерв — 40 000 BIP
80−89% CRR, минимальный неснижаемый резерв — 30 000 BIP
90−100% CRR, минимальный неснижаемый резерв — 10 000 BIP
Любая транзакция, которая будет приводить к снижению резерва, будет автоматически отклонена. Более того, уже созданные монеты должны будут следовать правилам нового обновления, в противном случае после апдтейта сети Minter они будут недоступны для продажи и ими нельзя будет оплачивать комиссии. Единственная возможная опция в таком случае будет заключаться в том, чтобы докупить монеты до минимального неснижаемого резерва.
No More 720’s. Больше в сети Minter не будет 720-ых блоков, где происходит полная проверка блокчейна, которая занимала достаточно много времени, из-за чего валидаторы могли пропускать блоки, а ноды с полной историей могли проверять эти блоки по несколько минут. Решение этой проблемы команда Minter нашла в создании системы проверки целостности блокчейна, которая запускается каждый блок и проверяет только измененные данные (что делает проверку практически бесплатной). Таким образом также существенно снижается нагрузка на валидаторов и на ноды с полной историей блокчейна.
Rewards Optimizations. В новой версии Minter 1.1 награды будут выплачиваться на каждом 120-ом блоке (приблизительно каждые 10 минут), а не на 12-ом, как это было в предыдущей версии. Со временем этот период будет увеличиваться, а рано или поздно выплаты наград будут происходить «по запросу». В следующих версиях награды автоматически приходить не будут. В рамках оптимизации хранилища данных было также оптимизировано и хранилище наград.
Control. В версии Minter 1.1 будет доступен новый консольный инструмент управления нодой, с помощью которого можно будет без включенного API:
Просматривать статус ноды
Добавлять пиры
Просматривать подключенные пиры
Удалять историю блоков на выбранном диапазоне среди прочих возможностей.
Обновление сети Minter будет проходить в несколько этапов:
Первый этап внедрения обновления сети до версии 1.1 был запущен 4 декабря в ходе Minter Demo Day, когда команда открыла публичный тестнет Minter 1.1 доступный абсолютно всем пользователям.
Когда тестирование будет признано успешным, будет объявлено голосование валидаторов.
Если обновление будет принято большинством голосов (больше ⅔ мощностей валидаторов), то дальше будет выбран блок, на котором произойдет обновление. На этом блоке валидаторы остановят текущие ноды, а сеть перестанет генерировать новые блоки.
Дальше произойдет полная выгрузка данных из блокчейна Minter 1.0, которые дальше вносятся в Genesis-блок новой сети.
После чего произойдет запуск Minter 1.1.
С эксплорером тестнета Minter 1.1 под названием Texas можно ознакомиться по ссылке.
Как внедрять Minter в проекты?
Основатель и разработчик топового эксплорера MinsterScan Сергей Салий поделился рецептом «приготовления» и работы с блокчейном, в частности, с Minter, рассказав о преимуществах внедрения передовой технологии в проекты. По мнению эксперта, в первую очередь каждый проект должен провести SWOT-анализ, выделив преимущества, слабости, возможности и угрозы от внедрения блокчейна в работу. В отношении Minter можно выделить следующие составляющие анализы:
Преимущества: скорость, надежность, прозрачность, а также низкий порог входа
Слабости: неизменяемые данные (в любом блокчейне) и отсутствие смарт-контрактов
Возможности: большое количество внешних API для интеграции
Угрозы: писать в блокчейн может кто угодно и что угодно
Далее проекты должны ознакомиться с ключевыми способами разработки и внедрения блокчейн-сети:
Minter Node API (HTTP) — самый простой способ выгрузить сырые данные из блокчейна. Данная функция доступна в любое время, однако работать с такими данными не всегда удобно, а сами они требуют обработки.
Minter Explorer API (HTTP/ WS) — более доступный способ работы с данными, которые агрегированы в удобном формате. Однако иногда API эксплорера бывает недоступна.
Third-Part API (HTTP/ WS) — кастомные решения от участников сообщества, имеющие больше данных и более низкий аптайм.
Приняв решение использовать данные блокчейна, проект должен определиться с типом используемой ноды:
Публичная нода — бесплатно, однако ненадежно.
Своя нода — дешево, при условии что не требуется полная история блокчейна. Однако требует времени на настройку и поддержание работоспособности.
Провайдер API — обеспечивает гибкость работы, однако цена зависит от провайдера и потребностей команды проекта.
Как работать с данными? В Minter доступны SDK и библиотеки на языках PHP, JavaScript, Go, C++, Python и Kotlin, что делает поиск разработчика достаточно удобным процессом. Благодаря внедрению REST поверх базы данных разработчики могут с легкостью получать подробную информацию из сети. Либо можно использовать стандарт протокола GraphQL для выгрузки данных.
Как перейти? Необходимо выбрать сервер и подключиться к базе данных проекта. Далее нужно провести типизацию — описать схему данных, в завершении требуется определить правила доступа к ресурсам.
Следуя этим шагам команда MinsterScan на личном примере продемонстрировала как внедрить блокчейн в работу проекта, запустив Mscan.dev — все API сети Minter на единой площадке.
Инкорпорация блокчейн-проектов: возможности и риски
Эксперт международного права и юрист команды Minter Ильдар Шакиров поделился инсайтами о том, как зарегистрировать блокчейн-компанию наиболее удобным способом.
Так, при выборе юрисдикции необходимо учитывать целевую аудиторию проекта, стоимость услуг юриста, национальность учредителей, тип компании и ее сроки регистрации. Каждой команде необходимо четко понимать отношение властей выбранной страны к крипто-отрасли, их требования к уставному капиталу, и нынешнюю систему налогообложения. Отдельно необходимо узнать детали открытия расчетного счета в банке.
В ходе презентации и разбора конкретной юрисдикции выбор пал на Эстонию. Среди причин выбора этой страны отмечены:
Выдача лицензии для криптобизнеса
Наличие понятного и прозрачного законодательства
Возможность удаленного управления компанией
Благоприятное налогообложение и электронное правительство
Предоставление доступа к платежным системам
Основные этапы регистрации бизнеса включают в себя следующие шаги:
Получение e-residency
Регистрация компании
Открытие расчетного счета
Получение VAT номера
Получение лицензии
Начало операционной деятельности
Отдельно Ильдар Шакиров рассказал про e-residency — идентификатор в эстонском правительстве, благодаря которому можно подписывать различные официальные документы, в том числе и для открытия компании. Для его получения необходимо заявление, паспорт и оплата госпошлины (€100). Что касается налогообложения в Эстонии, то для блокчейн-проектов оно достаточно благоприятно. Налоги состоят из НДС (при условии, что годовой оборот компании превышает €40 000), корпоративных налогов (если получаемая прибыль не распределяется в виде дивидендов, то корпоративная ставка в 20% не платится) и социальных взносов.
Также отдельно эксперт команды Minter рассказал про регулирование маркетинговой активности в Эстонии. Прежде чем запускать любую маркетинговую кампанию, проект должен быть уверен, что не вводит инвесторов, участников и потенциальных клиентов в заблуждение, «накручивая» их ожидания. Любая подобная деятельность может обернуться штрафом от местных властей.
Запуск Minter Hub
Дизайнер Minter Ариил Давыдов представил участникам Minter Demo Day еще одну интересную инициативу проекта — Minter Hub. Данная платформа послужит единой рабочей средой для сотрудничества, где пользователи смогут вести блоги, проводить хакатоны и раскодировать юзер-кейсы.
В частности, Minter Hub позволит:
Следить за проектами и находить новые
Искать сотрудников
Участвовать в конкурсах и хакатонах
Делиться своими идеями и наработками
Инструменты работы с нодой Minter
Go-разработчик команды Minter и автор Go-SDK Сергей Климов рассказал о последних фичах, которые войдут в релиз ноды 1.1. В частности, он рассказал о новом инструменте управления нодой через консоль.
Проблема. Данный инструмент решает проблему возможности просмотра информации, которая сейчас имеет только два способа — через Web API и логи, оба из которых имеют свои недостатки. Более того, добавление новых переводов возможно только с перезапуском блокчейн-ноды, а разработчикам недоступны способы просмотра и получения статистики.
Задача. В связи с описанной выше проблемой перед командой Minter встала задача разработать инструмент управления и запуска блокчейн-ноды, а также консоли управления ей из одного бинарника. Также нужно было внедрить интерактивный и неинтерактивный режим для удобства работы с нодой. Дальше команда должна была выбрать вариант отображения в удобном для пользователей формате.
Методы. Для реализации поставленных задач команда Minter выделила несколько методов:
Отображение текущего статуса блокчейна
Отображение сетевых данных
Подключение нового пира
Удаление информации о блоках
Получение статистики
Статистика будет помогать владельцам нод ответить на вопрос о том, почему пропускаются блоки и что нужно сделать, чтобы это не происходило.
Что войдет в релиз ноды 1.1? Далее Сергей Климов поделился опытом работы с конкретными возможностями, доступными в новом инструменте управления нодой. В частности, речь шла о:
Методах для мониторинга:
Скорость соединения с пирами
Текущая нагрузка на диск и сеть
Скорость обработки блока
Интерактивных подсказках в консоли:
Автодополнение
История команд
Горячие клавиши
С частью представленных функций уже можно ознакомиться в тестнете Texas.
iOS под SDK и кошелек в Minter
Разработчик Minter Алексей Сидоров выступил с докладом, который был посвящен iOS SDK и кошельку на данной операционной системе.
Инфраструктура Minter включает в себя:
Ноду
Эксплорер
Гейт
Применение iOS SDK на примере кошелька. Типичный функционал любого кошелька включает в себя отправку транзакций, просмотр баланса и истории транзакций, и возможность обмена монет. Чтобы отправить транзакцию, необходимо понимать ее структуру.
Так, транзакции в сети Minter состоят из:
Nonce — уникального идентификатора транзакции для адреса
ChainID — отвечает за выбор сети для проведения транзакции
GasPrice — балансировщик нагрузки на блокчейн
GasCoin — монета, в которой оплачивается комиссия
Type — тип транзакции
Data — информация по транзакции
Payload — поле, где можно передать сообщение
Service Data — зарезервированное поле, которое пока нужно оставлять пустым
Signature Type — тип подписи
Signature Data — поле для хранения данных подписи
Каждая транзакция в сети Minter должна быть подписана, чтобы считаться валидной. Подписи в сети Minter состоят из двух шагов:
Generate Private Key — процесс получения приватного ключа через формирование сид-фразы.
Sign Translation — подпись транзакции происходит при помощи эллиптических кривых (Elliptic Curve Digital Signature Algorithm).
Что касается эксплорера SDK, то туда включаются следующие элементы:
Block Data — информация по блокам
Transaction Data — информация по транзакциям
Address Data; Balanced Delegated — информация по адресам, балансу и делегированным монетам.
Как инструменты могут помочь эффективнее работать с Minter
Фронтенд-разработчик Никита Ейбог поделился опытом работы с инструментами для эффективного взаимодействия с блокчейном Minter, рассказав о процессе формирования и отправки транзакций.
Транзакция. Транзакция в сети Minter представляет собой массив данных, закодированный в RLP. При отправке в блокчейн важную роль играет порядок данных в массиве. Поля здесь представлены лишь для удобства и могут быть использованы в более высокоуровневых реализациях, например в SDK.
Тикер монеты с паддингом. При отправке монеты с тикером ABC (пример) необходимо представить строку в байтах. Тикеры монет в сети Minter всегда должны занимать 10 байт, поэтому в конце массива необходимо добавить паддинг, заполненный нулевыми байтами.
Количество монет в pip. Еще один нюанс — все данные о количестве монет ABC должны храниться в pip (1 pip = 1 ABC * 10 -18).
SDK. В Minter SDK автоматически переведет монеты в pip, паддинг тикеров и конвертацию в байты. То же самое касается API. Чтобы получить целые значения, необходимо воспользоваться Minter Explorer API. А если говорить про отправку транзакций, то здесь должен помочь Gate.
Nonce. В данном случае, если воспользоваться JS SDK, получение nonce происходит автоматически.
GasPrice. При формировании транзакции также необходимо установить GasPrice. В данном случае есть два подхода:
Получить текущий GasPrice блокчейна по API и использовать его при формировании транзакции
По умолчанию использовать GasPrice:1. Если запрос возвращается с ошибкой — взять необходимый GasPrice из сообщения ошибки и переотправить транзакцию.
Подпись транзакции. Для этого необходимо взять хэш транзакции и подписать ее при помощи эллиптических кривых (Elliptic Curve Digital Signature Algorithm). При работе с JS SDK все происходит чуть проще: необходимо просто передать приватный ключ в параметры транзакции. SDK сам подпишет транзакцию перед отправкой.
После того, как транзакция сформирована, можно приступать к ее отправке. Для этого нужно воспользоваться API ноды: надо сделать сетевой запрос на отправку, после чего нода вернет хэш транзакции. Чтобы убедиться, что транзакция попала в блок (а не осталась в мемпуле), необходимо дождаться блока в ноде и проверить наличие транзакции в нем по хэшу. Можно также воспользоваться Gate, сделав запрос на отправку, но здесь уже Gate сам проверяет наличие транзакции в блоке.
Источник: DeCenter