Получи случайную криптовалюту за регистрацию!

Я броук, минчу щитки когда хочу Совсем недавно вышел проект P | lang.eth

Я броук, минчу щитки когда хочу

Совсем недавно вышел проект PepeFork (PORK), раздали около 130$ на каждый аккаунт, которые торговали PEPE
Я свои кошельки сминтил, на пиццу заработал
НО, не все так просто

Для всех людей, получение токенов еще не началось, на сайте буквально нет кнопки клейма (можете проверить)
Но, если немного посерчить и найти контракт, то видно, что уже как неделю N кошельки получают свои токены. Как?


По холдерам, находим контракт-дистрибьютор
Ищем транзакции на клейм, осознаем, для того, чтобы вызвать эту функцию - обязательно передавать merkle proof

Объясняю для чего он нужен
Есть 3 формата проведения клейма токенов на большую аудиторию: внесение данных в блокчейн / передача сигнатуры / меркль пруф

Да, можно не передавать сложные меркли пруфы или сигнатуры, сделать все ончейн. Однозначно, это будет красиво и стабильно с точки проведения клейма, но очень дорого для самого проекта. Нужно платить за каждый байт данных что вы вносите в блокчейн

Практичный вариант - сигнатуры. Зная адрес подписанта и текст подписи, можно узнать валидная сигнатура в транзакции или нет
Как обычно это происходит: админы берут список из всех элигибл кошельков, создают кошелек, с которого будут генерировать подписи, вносят его адрес в контракт как signer, создают для каждого по сигнатуре и сохраняют к себе в базу данных.
Когда начинается клейм, юзер делает запрос к их серверу, получает для себя сигнатуру для подписи и передает ее в транзакцию


Самое тяжелое для понимания - merkle proof
Он обычно выглядит так: ["hash1", "hash2", "hash3"...]
В контракт заносится merkleRoot, по которому и производится проверка переданного списка хешей на валидность
Например, для он PORK такой: 0xb98ac88a983310170a1fe82ab5f2d3e080ea4cc288831e4514bd82c3a6f90c29

Используя merkleRoot и список хешей, которые мы передаем в транзакцию, можно валидировать клейм. Этот способ проверки считается надежным и безопасным, так как для подделки нужно знать весь набор данных из которых он и генерировался (от начала и до конца)
// Название "дерево меркла" пошло из-за того, что главный хэш (root), создается из "листочков" данных, на схеме это выглядит как семейное древо. Преобразование данных в хэш работает только в одном направлении.
Легко построить дерево из необработанных данных, но восстановить данные из него невозможно


Меркль пруф для такого рода клеймов создается просто из списка всех элигибл кошельков, зная полный список адресов - можно получить все данные для транзакции и заклеймить все что нужно

Что все-таки с PORK произошло?
// Раньше всех заметил этот парень, без него и не получилось бы разобраться, осторожно, очень умный

На сайте клейма подгружался запрос с всеми элигибл кошельками, он и сейчас работает, можете проверить
Массив из адресов у нас есть, осталось только сформировать пруфы для каждого из аккаунтов

Для этого немного изучаем контракт, оттуда узнаем, что меркль формируется не просто из адресов, а из их хешей
Строчка: keccak256(bytes.concat(keccak256(abi.encode(user))));
Переводим все
адреса в их хэши, и получаем полные данные для построения древа меркла

Оставалось только с помочью кода сформировать транзакцию, отправить ее на контракт и заветные токены уже у нас в кармане, можете разгружать их перед толпой

Конечно, так не всегда можно делать. Нужно, чтобы админы оставили список всех данных в доступном месте(или до которого реально дотянуться), + клейм по контракту был включен. Но, как мы видим, такие ситуации бывают, нужно заранее к ним готовиться


Вот такие вот танцы с бубном можно проворачивать в блокчейне, зная основы криптографии, немного кодинга и наблюдательности, думайте