November 1, 2023

Блок эксплореры Blockscout: открытый код, развитие сообществом, интересный функционал

Сайт https://www.blockscout.com/

Что интересного? Единая база данных исходного кода смартконтрактов для всех поддерживаемых сетей, анализ кода непроверенных контрактов на основе уже проверенных, подробная документация по развёртыванию и использованию. А также аккаунт с тегами адресов и транзакций, со списком своих смартконтрактов, уведомлениями о них, каталогом приложений и так далее...

Оглавление

Аудит

Команда

На сайте и в документации информации нет, но я узнал следующее:

Blockscout поддерживается бывшим главой xDai https://twitter.com/barinov

Твиттер его активен:

10 числа репостнул твит blockscout, да и в целом направление соответствует занимаемой должности.

Официальный аккаунт https://twitter.com/blockscoutcom

Тоже активен. В том числе есть свои публикации, последняя из которых была 9 часов назад на момент написания статьи (1 ноября).

Основной чат Дискорд сервера:

В анонсах последний пост сегодня, что здорово:

В блоге активность тоже хорошая:

(последний пост 1 ноября 2023).

По команде итог: не все участники известны, поэтому ставлю оценку "Хорошо".

Коин

Нет и не планируется.

Проект развивается разработчиками разных проектов и основателями, и нужды в ДАО или в иных функциях токена нет.

Доход у основателей идёт с размещения и обслуживания блок-эксплорера у себя, поэтому для продажи актива коин тоже не нужен.

В принципе, это отлично.

Код

Есть Github репозитории:

Нас интересуют 2.

Во-первых, blockscout/blockscout:

Последний коммит (инфа об изменениях) 43 минуты назад с 72 изменениями в двух файлах:

Радует также, что это пулл-реквест: это говорит о вкладе в проект сторонними разработчиками.

Во-вторых, blockscout/frontend:

С обновлением вчера, в котором было изменено 14 файлов с 38 редактированиями и 21 удалениями:

В обоих репозиториях изменения существенные, что тоже плюс.

Проект активно разрабатывается.

Кстати, 1900 форков у основного репозитория... Это впечатляет!
У фронтенда 81 форк: тоже немало.

Итог: проект по этому показателю отличный!

Концепт

Идея блок-эксплорера с открытым кодом - очень важная, актуальная проблема.

  • Дело всё в том, что код Etherscan закрыт, а это противоречит web 3.0.
  • Да и проекты с открытым кодом могут быстрее развиваться благодаря сообществу.
  • + его код можно проверять (в отличие от иных с закрытым кодом).

И по моим наблюдениям, Blockscout становится всё популярнее: во многих блокчейнах, которые становятся популярными, он используется. Например, Zora или Linea.

Итог: отлично!

Работа с документацией

В документации описаны все аспекты работы с проектом!:

На странице функций

Описаны возможности эксплорера. В частности, из интересного - глубокий поиск по транзакциям, адресам, тегам и пр...

А также:

  • Взаимодействие с контрактами : читайте и записывайте контракты непосредственно из пользовательского интерфейса Blockscout.
  • Проверка контрактов:  используйте Hardhat , Sourcify и другие инструменты для быстрой проверки контрактов.
  • Выполнение вызовов API. Делайте запросы к надежному API , используя стандартные и настраиваемые url.
  • Настройка представлений : используйте функции «Моя учетная запись» , чтобы добавлять теги, списки наблюдения и другие функции.

Из особенностей важно упомянуть, что проект поддерживает Ethereum и форки, L-2, Cosmos и Polkadot EVM чейны, множество дополнительных публичных и частных сетей

Blockscout является модульным (состоит из микросервисов на RUST), что позволяет его расширять.

Также производится отслеживание транзакций в реальном времени : Они обновляются в режиме реального времени - перезагрузка страницы не требуется. Также включена бесконечная прокрутка.

Помните я писал о том, что проект поддерживает единую БД для верифицированных смартконтрактов? Так вот: об этом написано на странице "Ethereum Bytecode Database Microservice":

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

Например, если контракт проверен в основной сети Ethereum, к нему невозможно получить доступ в Gnosis Chain, даже если входные данные транзакции создания одинаковы.

Чтобы решить эту проблему, команда проекта внедрила базу данных для проверенной информации о контрактах, которую можно использовать во всех поддерживаемых цепочках. Эта база данных и связанные с ней функции были созданы как микросервис Blockscout под названием « База данных байт-кода Ethereum» (Blockscout EBD).

По умолчанию везде производится поиск следующим образом:
Блокчейн -> адрес смартконтракта -> исходный код.

В Blockscout стало так:
Байт-код -> исходный код.

Микросервису неважно, где развернут контракт (какая цепочка) и даже развернут ли вообще контракт с соответствующим байт-кодом.

Служба проверки позволяет разделить байт-код на две части: основную и метаданные. База данных байт-кодов Ethereum использует это преимущество и ищет похожие байт-коды на основе только основных ( функционально значимых) частей.

Я считаю, что это очень крутая особенность!

Скажу проще для обычных пользователей:

Если у вас есть верифицированный смартконтракт в Polygon с функционалом хода в шахматах, а далее встретите его в Arbitrum, вы увидите вместо байткода и невозможности выполнения транзакций нормально отображаемый понятный смартконтракт.

Кроме того, планируется (или уже есть) индексатор блок-эксплореров и прочих БД, откуда также будут добавляться данные в (Blockscout EBD).

Кроме того, любой может запустить службу с нуля и в конечном итоге получить собственный репозиторий проверенных контрактов, запустив интересующие его парсеры. Те, кто хочет разместить свой собственный экземпляр, могут получить заполненную базу данных, которую также можно будет обновлять из других блокчейнов в экосистеме.

Команда занимается поисками способа предоставления данных третьим сторонам, например, в виде платной услуги.

Это хорошо, т. к. позволяет основателям проекта продолжать его развивать.

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

На странице "Chains & Projects" Using Blockscout вы найдёте громадный список поддерживаемых сетей со ссылками на эксплореры Blockscout в них:

Список удобно рассортирован по экосистемам. Ethereum L-1 экосистема, Polygon экосистема, Optimism экосистема, Дополнительные L2s и Ethereum роллапы, Экосистема Polkadot, Cosmos экосистема, Bitcoin/BCH объединённый майнинг / AuxPOW и пр...

В столбце 2 будет ссылка на эксплорер, а в четвёртом - на сайт блокчейна. В третьем можете прочитать краткое описание.

Так я узнал про сеть с RBTC и EVM смартконтрактами.

В обзоре я буду работать с официальным сайтом blockscout.com.

В Funding можете узнать о поддержке проекта (планируемой, полученной или не полученной):

Я сам помню поддерживал проект в Gitcoin - это самый простой способ.

Был вклад от Ethprize в 2018 году, от astar в 2021, RetroPGF2 от Optimism, Гранты ETC (2023 г.) и грантовая поддержка от Ethereum Foundation (2023).

На следующей странице был описан пропозал для L-2 сетей в поддержку Blockscout, но я показывать не буду (при желании изучите).

В roadmap описаны внедрённые и планируемые изменения:

Завершённые отмечены "check mark button", а также в разделе "Completed".

На странице объявлений и СМИ размещена некоторая инфа о выступлениях и публикациях о проекте:

А в интеграциях порекомендовали использовать CoinGecko для получения цен, Sourcify  для верификации смартконтрактов Presto для развёртывания.

Есть и FAQ:

Часто задаваемые вопросы разделены на 2 раздела. Для пользователей - охватывают вопросы, которые могут возникнуть при поиске транзакций или взаимодействии и проверке смарт-контрактов; для разработчиков - охватывают вопросы, связанные с установкой, настройкой экземпляра и хостингом.

Далее идут обзоры и прочее... Покажу лишь страницу про API:

Здесь даны ссылки на варианты API и другая информация...

Что касается ограничений: 50 запросов в секунду, чего вполне достаточно в большинстве случаев...

Раздел для разработчиков пропущу, т. к. это специфическая информация, не нужная всем. Скажу лишь, что там всё очень подробно описано (читал долго ☺).

Перейдём к разделу для проектов, к хостингу blockscout эксплореров:

Размещенные экземпляры получают поддержку и обновления, недоступные для не размещенных экземпляров.

Хостинг на Blockscout.com : Самостоятельный хостинг может быть трудным, часто требующим от команды разработчиков внесения важных внутренних обновлений и/или настроек. Сеть, размещенная на Blockscout, не только предоставляет проектам доступ к экспертной специализированной технической поддержке, но также значительно повышает видимость проекта и обеспечивает доступ к набору функций премиум-класса.

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

Подробности на странице. Про цены и на этой, и на следующей не сказано (необходимо связываться с командой).

В "Медиа-кит" вы можете скачать логотипы проекта:

В примечаниях к выпуску вы можете посмотреть подробности обновлений:

Они их начали размещать, начиная с версии 5.0.0. В настоящее время помимо неё есть инфа для 5.1.0 и 5.2.0.

Показывать страницы их не буду - прочитаете, если интересно, сами.

Отдельным блоком идут ссылки на вакансии. Покажу на примере страницы "DevOps-инженер":

Дана инфа о проекте, требования и возможности сотрудника и e-mail для связи.

Главная страница

Переходим на сайт https://www.blockscout.com/ и видим инфу о проекте, а также меню со ссылками на блоки с информацией, помощь, документацию и пр...

Нажав по "Explore", откроем список ссылок на эксплореры в разных сетях:

Также список можете найти в нижней части сайта:

В остальном ничего интересного здесь нет...

Практика

на примере блок-эксплорера для Optimism (напоминаю, что весь список на соответствующей странице документации): https://optimism.blockscout.com/

Здесь видим возможность войти (у меня ссылка озвучивается как "auth"), поиск, инфу о количестве блоков и транзакций со ссылками, число кошельков и Gas tracker.

Нажимая по "hint" можете раскрыть подсказки. Например, вот для Газ трекера:

Ещё ниже - инфа о числе транзакций в день, цене ETH, маркеткапе, последние блоки и последние транзакции.

В случае "Transactions" можно выбрать "Deposits (L1→L2 txn)", перейдя на соответствующую вкладку:

В нижней части сайта можно переключить тему на тёмную, посмотреть процент выполнения, а также нажать по кнопке ""Add OP Mainnet" для добавления сети в Metamask или другой кошелёк, что поддерживает эту функцию.

Ещё дальше - ссылки по Optimism и Blockscout.

Вход и регистрация

Нажав по Auth, попадаем на страницу:

Удобно, что можно войти через Github, но в данном случае покажу ручной вариант...

"Sign up":

Пойду на хитрость - использую ethermail. Ввожу e-mail, пароль:

"Continue":

Получаем письмо:

"Confirm my account":

Готово! Жмём "Back to Blockscout Optimism mainnet" и входим:

Вошли:

Нажав по меню профиля, видим список вариантов:

Но об этом отдельно...

Поиск транзакций

После ввода TX id попадаю на страницу:

Как всегда можете нажать по "Hint" для отображения подсказок. Информация подробная, но нажав по "View details" можно ещё больше просмотреть:

Как видите, есть hex и декодированное представление - тоже удобно и более-менее понятно.

В Token transfers пусто:

В "Internal txns" - тоже, а вот на вкладке Logs пишет о необходимости верификации смартконтракта:

В "State" изменение состояния:

В "Raw trace" тоже нет данных.

Клик по "More" позволит добавить приватный тег:

Нажимаю:

Ввожу и сохраняю.

Результат:

Под заголовком появился тег - удобно!

К сожалению поисковая форма по им не ищет, хотя об этом писалось в документации...

Поиск токена

Введу BTC:

Как видите, сразу отображается список вариантов...

Давайте рассмотрим токен и nft.

WBTC:

"Add token to wallet" позволит быстро добавить токен в кошелёк. "Show QR code":

Позволит получить его для распространения или использования на ином устройстве...

"More" откроет варианты:

"Update token info":

Здесь только адрес смартконтракта.

Приватный тег показывал в блоке ранее - теперь "Add public tag":

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

Возвращаемся к странице токена. Здесь вы можете увидеть сайт wbtc, а также нажать по "Show project info":

Есть описание, ссылка на Github и Твиттер - удобно.

Далее показана цена, Полностью размытая рыночная капитализация, Максимальный общий запас и пр...

По умолчанию отображаются переводы токена, но мы можем переключиться на "Holders" через ссылку количества холдеров или во вкладках:

Следующая вкладка - "Contract":

Здесь только байткод - контракт не проверен.

Переходим к NFT:

Почти та же инфа, но есть только Максимальный общий запас число холдеров и число переводов.

Из нового - вкладка "Inventory". Она выбирается по умолчанию.
Например, нажму по последнему на первой странице 15043:

Выберу "Metadata" - их нет.

Поиск блоков

Забыл сказать. Поиск естественно идентичен тому, что если бы вы просто перешли по ссылкам, но думаю это и так ясно...

В общем, ввёл "111661364" в поле поиска и перешёл:

Кто создал, высота блока, размер, время создания (удобно, что по моему локальному времени показывает), количество транзакций, ещё раз кто создал (есть возможность в обоих случаях скопировать адрес), используемый Газ, Gas limit, базовая комиссия, комиссия сжигания и плата за приоритет / чаевые.

Можно также нажать по "View details":

Перейдём на вкладку транзакций:

Как видите, в первом случае тип не показали, но во втором он известен - перевод токенов... Ссылки переведут на адреса (удобно, что получатель во второй TX именован).

адрес пользователя

Покажу на случайном примере из предыдущего раздела "0xe93685f3bBA03016F02bD1828BaDD6195988D950":

Можете скопировать, отредактировать (добавить) уведомления по кошельку на e-mailпоказать QR-код.

Нажмём по "Edit":

Заполняем тег, а далее настраиваем, что хотим получать и жмём "Add address" - всё.

Кликаем по "More":

Также можно добавить приватный и публичный тег.

Далее идёт инфа по ETH балансу (и в долларах), "Token select":

Можете ввести в поисковой форме тикер для фильтрации или посмотреть балансы всех, как я вам показал.

После этого статистика по числу транзакций, переводов, использованному Газу, а также последнему обновлению баланса (блок обновления).

По умолчанию открыта вкладка транзакций.

Можете нажать "Filter" и выбрать From, например:

В таблице данные достаточно подробные, но и ничего лишнего:

hash, тип, метод, блок, от и кому, значение в ETH и комиссия в ETH.

Обратите внимание на "scanning new transactions..." - это говорит об отсутствии необходимости обновления страницы для получения новых данных.

Перед таблицей есть также ссылка "Download CSV":

Выбираем даты, проходим капчу, "Download", ждёте... Когда завершится создание файла, браузер предложит сохранить. Делаете это, затем открываете и используете, как надо:

Вкладка "Token transfers":

Тоже всё понятно по столбцам...

Фильтров больше:

Можно отфильтровать по From, To или All, по типу токена (ERC-20, ERC-721 и пр.)...

Вкладка "Tokens":

Там отображена чистая стоимость, баланс ETH и баланс токенов. Далее идут вкладки ERC-20, ERC-721 и ERC-1155.

Удобно, что в таблице отображён тикер токена, адрес контракта, цена, сумма и стоимость в $.

"ERC-721":

Здесь название с контрактом и количеством.

Нажав по токену можем посмотреть историю перемещений адреса:

"ERC-1155":

Здесь изображения + id и названием.

Переходим к основной вкладке "Internal txns":

Здесь внутренние транзакции смартконтрактов.

Фильтры тоже лишь по From, To и All.

И последняя - "Coin balance history":

Здесь можете посмотреть, как меняется баланс...

Нажав по кнопке-меню, будут варианты:

Открыть во весь экран, сохранить в PNG или CSV.

Адрес смартконтракта

На примере "0x81E792e5a9003CC1C8BF5569A00f34b65d75b017"

Под заголовком видим, что это прокси контракт.

"More" обычный, как и данные до кнопки.

Ниже написан "Contract name", из него узнаём название "OptimizedTransparentUpgradeableProxy".

Узнаём создателя, реализовавшего его, баланс ETH, токены:

И пр...

По умолчанию транзакции. Перевод токенов стандартный (пропущу), "Tokens" и "Coin balance history" показывал в предыдущем разделе, а вот "Logs":

Но самое интересное - "Contract":

Первая вкладка "Code" уже открыта. Здесь видим название контракта и прочие параметры, например, версию компилятора.

Удобно также, что Solidity код размещён в редакторе, где его можно скопировать и просмотреть с форматированием.

Есть и Explorer (вкладка после редактора) со списком файлов. Compiler Settings, Contract ABI (для разработчиков фронтендов), Contract creation code, Deployed ByteCode.

Можете переключиться на субвкладку "Search" для поиска по файлам:

Ввёл запрос:

И сразу вижу нужное мне (удобно).

Переходим к следующей основной вкладке "Read contract":

"Connect wallet" (нужно лишь 1 раз):

Выбираем кошелёк, подключаем - страница немного меняется:

Разворачиваю вариант "Admin":

Здесь есть "Query", но он недоступен с моего адреса, но в любом контракте идентично (разве что могут быть поля).

Вкладка "Read proxy":

Здесь только инфа.

"Write contract":

Развернул последний метод:

Вводите значение (сумму)... Нажав по кнопке под "×1018" можем посмотреть варианты:

Ввожу сумму:

Если мы нажмём "×1018" прибавит нужное число нулей.

"Write" откроет кошелёк, если всё верно. В моём случае была ошибка, т. к. я указал 0.001, а надо в WEI, а это целое число, где 1 с ×1018 = 1 ETH.

Если хочу меньше, надо удалить лишние нули и нажать "Write" с подтверждением в кошельке.
Но лучше делайте это, если знаете результат...

Перейдём к "Write proxy":

Тут тоже просто инфа...

Важно: Read и Write contract будут только если смартконтракт верифицирован.

В случае заполнения данных в read также отображается одно или несколько полей с кнопкой "Query". Там могут запрашиваться адреса, суммы и прочие данные...

Пример:

Главное меню

В верхнем меню можете навести на "Blockchain":

"Transactions":

Можете выбрать вкладку "Pending", но тут ничего нет. "Watch list":

Следующая страница - "Deposits (L1→L2)":

"Withdrawals (L2→L1)":

"Blocks":

Далее - "Txn batches":

Здесь показаны пакеты транзакций, отправляемых в L-1.

Следующая страница - "Output roots":

Как понимаю, пути выхода, но для чего они, не знаю...

Следующая - "Top accounts":

Здесь можете посмотреть топ акков в Optimism.

"Verified contracts":

В "Filter" можете выбрать язык смартконтрактов (по умолчанию все):

Можно и искать. Например, router:

Найдя роутеры дексов и прочих проектов...

Кстати, обратите внимание, что после заголовков на каждой такой странице есть небольшая стата. Например, здесь указано, что всего контрактов 35,291,146, за 24 часа +152 и верифицировано всего 115 смартконтрактов (+4 за сутки).

Все ссылки здесь показывать не буду. Перейду лишь по информационным...

"Charts & stats":

Можете отфильтровать, нажав по "All":

Можете данные сохранить в CSV и PNG, а также открыть в полном окне изображение. Для этого в каждом блоке есть кнопка-меню.

Статистики много (изучайте, если интересно).

В подменю "API":

И сразу я открыл страницу REST API. В общем, тут доки для тех, кому нужно...

В подменю "Other" только "Public RPC":

Она ведёт на внешний сайт со списком Optimism RPC.

Страница "Tokens"

Здесь можете посмотреть токены и найти нужные:

"Filter" позволит выбрать тип токенов:

Можете ввести в поле поиска тикер, например, LINK:

Результатов много, но самый популярный на 1 месте - это плюс.

Можете ввести вместо тикера имя токена (адреса не поддерживаются почему-то). Ввёл Uniswap:

Итог: удобно, функционально.

Страница "Apps": ищем приложения

Нажав по "All" можем отфильтровать:

К сожалению, только одно в бриджах...

Категорий тоже немного...

Выбрал DeFi.

Давайте отфильтрую, введя в поиске stargate:

Кстати, видим описание и возможность открыть подробности. Нажмём "More":

"Mark as favorite" - - добавить в избранное.:

В случае с Stargate как-то неправильно добавлено оно:

А вот в случае Aave всё загрузилось нормально:

Как видите, на странице приложения по ссылке с названием приложения или "Loanch app" в подробной инфе откроет фрейм страницы DApp.

Страницы авторизованного аккаунта

Для пользователей

Нажмём по кнопке-меню "Profile" и перейдём по ссылке "My profile link":

Здесь неизменяемые данные.

"Watch list":

Здесь можете просмотреть список кошельков, о которых получаете уведомления. "Edit" откроет показанную ранее в статье форму редактирования, а вот "Delete":

"Delete" в этом окне, и всё - удалили:

"Add address":

Похожа на форму редактирования, но для добавления.

Следующая страница - "Private tags":

Перейдём к "Transaction":

Также можете отредактировать или удалить...

Добавил свой адрес с тегом:

Как понимаете, в "Public tags" скорее всего у вас не будет ничего, как и у меня нет. Но таблица схожая будет.

Для разработчиков и помогающих им: API, верификация смартконтрактов и пр...

Перейдём к "API keys":

"Add API key":

Название, "Generate API key":

"Edit" откроет возможность изменения названия приложения:

"Delete" - обычное удаление:

К "Custom ABI":

"Add custom ABI"

Заполняете адрес смартконтракта, название проекта и JSON ABI.

ABI нужен для работы с функциями смартконтрактов...

Например, так:

"Create custom ABI":

Переходим на страницу контракта:

И видим "Read custom" и "Write custom" (custom означает, что у смартконтракта нет верификации, но функции отображены).

"Read custom":

Здесь просто инфа - расширять не буду. "Write custom":

Выбрал третью функцию:

В общем, заполняете, "Write" и всё...

Удалил Custom ABI - нет Read и Write:

"Verified addrs link":

"Add address":

Вставляем адрес контракта и "Continue":

"Sign and verify" и подписываем в кошельке.

Контракт появился в списке:

Но это стандартный шаблонный контракт - давайте попробуем другой...

А вот этот не удаётся, т. к. надо верифицировать:

Переходим на страницу контракта на вкладку "Contract":

"Verify & publish":

Выбираю компилятор, после чего появляются другие поля. Заполняю:

"Verify & publish". Ждём минут 5 - готово:

В read - пусто:

Добавляем:

Подтверждаем в кошельке - готово:

Заполнил ещё одну транзакцию. После обновления страницы в read -> getContent:

Как видите, всё работает!

Возвращаюсь на страницу моих верифицированных контрактов и обновляю страницу, пробую - получилось:

Как заменить текущий explorer на Blockscout?

  1. Вы можете зайти в настройки, сети и вставить новый url
  2. Но проще просто удалить сеть со старым и нажать "Add *" (где * - название сети) внизу страниц Blockscout и добавить в кошелёк.

Всё

С вами был незрячий программист и автор обзоров на разные криптовалютные проекты.

Благодарю за изучение обзора. Подписывайтесь на https://t.me/blind_dev - там новости по новым статьям и по моим разработкам.

Также распространяйте обзор - буду рад.