Как разрабатывать приложения с использованием Blockscout: основы
Вводные
Ищем блок-эксплорер в нужном блокчейне
Идём на https://blockscout.com/
И выбираете (можно в том числе отфильтровать).
Я выберу Optimism, нажав по "Blockscout explorer":
Смотрим в адресную строку. И после слеша добавляем api-docs. Должно получиться что-то типа https://optimism.blockscout.com/api-docs
Существует и вариант 2: нажимаем на главной официального сайта "Visit the docs" и разворачиваем "API":
Тут даже больше вариантов, например, GraphQL:
Но мы будем работать с REST API:
Работа с REST API Blockscout Optimism
Переходим: https://optimism.blockscout.com/api-docs
И выбираем интересное нам. Например, хотим получать текущий блок в сети...
Тогда открываем "get /blocks":
Можете заполнить поле типа, но я оставлю пустым, и кликну по "Execute":
Есть и вывод в удобном формате:
В "Request URL" можете скопировать Url. У меня это https://optimism.blockscout.com/api/v2/blocks?type=block%20%7C%20uncle%20%7C%20reorg:
Обратите на height внимание - это номер блока...
Допустим, также хочу узнать транзакции по блоку. Жму "get /blocks/{block_number_or_hash}/transactions":
Request URL https://optimism.blockscout.com/api/v2/blocks/118150735/transactions
Пишем код
В папке с проектом как всегда npm init, заполняем данными и
Далее создаём, открываем js файл и заполняем кодом. Я ниже напишу его с комментариями, чтоб было понятно, а пока вот скрин:
const axios = require('axios');
const res = await axios.get('https://optimism.blockscout.com/api/v2/blocks?type=block%20%7C%20uncle%20%7C%20reorg');
// Получаем массив и первый его элемент:
const block = res.data.items[0];
// Если такого элемента нет, завершаем функцию, не возвращая ничего.
if (typeof block === 'undefined') return;
// Выводим на экран номер и хеш блока:
console.log(`Block number: ${block.height}, hash: ${block.hash}`);
// Получаем транзакции по блоку
const page = await axios.get(`https://optimism.blockscout.com/api/v2/blocks/${block.height}/transactions`);
// Переводим в строку и выводим:
setInterval(main, 3000); // вызываем функцию раз в 3 секунды.
Можно было бы делать цикл по блокам с проверками и так далее, но решил вам показать упрощённый вариант, который смогут понять многие, ну или хотя бы который не будет напрягать...
Пример отображения результатов:
Всё
С вами был незрячий программист и автор обзоров.
Подписывайтесь на https://t.me/blind_dev - здесь новости по моим разработкам и новые статьи.
Благодарю за внимание, и прошу распространять обзор.
Также буду рад донатам на следующий кошелёк (благодарю):
0xaeac266a4533cb0b4255ea2922f997353a18b2e8