Лето этого года выдалось жарким на хардфорки. Ближайшей в этой очереди стоит криптовалюта Zel, которая после обновления получит новый алгоритм майнинга ZelHash и ещё более надёжную защиту от ASIC. Дальше через процедуру хардфорка пройдёт Grin, причём для разработчиков она станет дебютной. Рассказываем, чего стоит ждать от хардфорка.
Хардфорки Grin. Зачем они нужны?
Нынешний хардфорк — не случайное событие. Ещё в августе 2018 года главный разработчик Grin под ником Игно Певерелл опубликовал обновление деталей Proof of Work. Тогда команда договорилась проводить обновления каждые 262 080 блоков, то есть приблизительно раз в шесть месяцев. Поскольку Grin стартовала в мейннете 17 января, середина июля как раз подходит для первого форка.
Цель хардфорка — не дать ASIC-майнерам захватить сеть и сделать их производство бессмысленным. При этом напомним, что второй алгоритм CuckAToo-31 предназначен для ASIC, хотя пока поддерживает видеокарты от 11 ГБ.
Обновление Grin
Тестнет новой версии сети запустили 23 июня на блоке под номером 185 040. Сам дебютный хардфорк Grin состоится на блоке 262 080. Ориентировочно ждать его стоит 17 июля 2019 года в 09:28:28 по Москве. Отсчёт до события в прямом эфире происходит на этой странице.
После проведения апдейта будут работать только версии нод, кошельков и майнеров Grin от 2.0.0 и выше.
Прежде чем переходить к списку нововведений, отметим важный момент. При обновлении сети до Grin v2.0.0 пользователям нужно лишь обновить свои ноды. Ничего дополнительно делать не требуется, так что остерегайтесь возможных скамов с предложениями загрузить сторонние программы или чем-то подобным. Это может закончиться потерей средств.
Что изменит хардфорк Grin
Нововведений будет немало, так что рассмотрим их с двух точек зрения. Первыми идут ноды.
Изменения для нод Grin:
- обновлённый алгоритм Proof-of-Work — разработчики Grin продолжают бороться с производителями ASIC-майнеров, поэтому меняют Cuckaroo29 на Cuckarood29. Подробности о последнем описаны ниже;
- изменения API нод — необходимо поменять конечную точку v1/pool/pushна v1/pool/push_tx. Это обеспечит небольшую несовместимость для кошельков, что предотвратит связь кошельков до версии 2.0.0 с аналогичными нодами.
Изменения для кошелька:
- изменения в схеме “пуленепробиваемой перемотки” (bulletproof rewind) — новая схема сделает кошелёк более гибким и добавит возможность скрывать информацию;
- изменение API до V2 — API-интерфейс V1 REST заменена на V2 JSON-RPC API. Документация доступна по ссылке здесь и тут;
- изменения для Slate V0 — изначально он был создан для Grin версии ниже 1.0.2. Теперь он будет несовместим с новыми версиями.
В чём особенность нового алгоритма Cuckarood29?
Дополнительный алгоритм PoW-майнинга Grin под названием Cuckaroo29 показал себя отлично. С начала запуска мейннета сети в ней не обнаружены следы присутствия ASIC — это подтверждает разработчик под ником tromp. При этом представителям команды известно о запланированном релизе ASIC-майнеров этим летом, поэтому переходу на Cuckarood29 быть.
Начнём с теории. У обычного Cuckaroo есть три отдельных аспекта, которые могут быть изменены разработчиками:
- основная хеш-функция — в данный момент это siphash-2-4;
- вычисление конечных точек целого блока рёбер;
- тип цикла.
Представители команды оставили второй пункты и занялись остальными. В итоге изменённый siphash определяется с помощью шаблонов на одну из величин вращения.
template < int rotE = 21 >
class siphash_state {
...
void sip_round() {
v0 += v1; v2 += v3; v1 = rotl(v1,13);
v3 = rotl(v3,16); v1 ^= v0; v3 ^= v2;
v0 = rotl(v0,32); v2 += v1; v0 += v3;
v1 = rotl(v1,17); v3 = rotl(v3,rotE);
v1 ^= v2; v3 ^= v0; v2 = rotl(v2,32);
}
Новый тип цикла является направленным (directed). Половина рёбер (с чётным индексом) направлена от U к V, в то время как вторая половина (с нечётным индексом) направлена от V к U. Можно также сказать, что цикл должен чередоваться между чётными и нечётными проиндексированными рёбрами. В то же время количество нод в каждой U и V уменьшено вдвое. Поэтому Cuckarood29 будет иметь 2^28 U-нод, а также 2^28 U->V рёбер и 2^28 V->U рёбер. В результате это приводит к удвоению ожидаемого количества циклов.
Разработчики не будут вносить изменения в сложность майнинга. Поэтому если половина нынешних Cuckaroo29-майнеров не сможет обновиться, скорость решений во вторичном PoW останется прежней. Если все обновятся вовремя, средний показатель блоктайма может упасть до 36 секунд. При этом коэффициент ar_scale снизится для компенсации влияния, и ситуация придёт в норму на протяжении нескольких часов.
Насчёт имени. Добавленная буква “d” в Cuckarood29 в основном означает “directed”, то есть “направленный”, хотя по аналогии с SHA256d также может означать “doubling”, то есть “удвоение” (решений).
Как подготовиться к хардфорку?
По традиции укажем необходимые действия для всех участников рынка.
Майнерам
У майнеров Grin на алгоритме C31 всё хорошо — ничего обновлять не нужно. При этом майнерам C29 придётся обновиться до последней версии grin-miner или скачать обновление программного обеспечения, совместимого с Cuckarood29.
Биржам
Владельцам бирж нужно проделать следующее:
- обновить Grin до версии v2.0.0 или выше;
- обновить Grin-wallet до версии v2.0.0 или выше, причём транзакции получится создавать только после хардфорка;
- обновить инфраструктуру биржи под wallet API V2.
Пулам
- обновить Grin до версии v2.0.0 или выше;
- обновить Grin-wallet до версии v2.0.0 или выше. Транзакции также получится создавать только после хардфорка;
- обновить инфраструктуру пула под wallet API V2.
Наш канал в телеграм. Присоединяйтесь!