March 31

Как разрабатывать приложения с использованием Blockscout: основы

Вводные

  • Язык - Javascript (node.js)
  • На примере Optimism.

Ищем блок-эксплорер в нужном блокчейне

Идём на https://blockscout.com/

"Use the Explorer":

"View all":

И выбираете (можно в том числе отфильтровать).

Я выберу Optimism, нажав по "Blockscout explorer":

Смотрим в адресную строку. И после слеша добавляем api-docs. Должно получиться что-то типа https://optimism.blockscout.com/api-docs

Существует и вариант 2: нажимаем на главной официального сайта "Visit the docs" и разворачиваем "API":

Тут даже больше вариантов, например, GraphQL:

Но мы будем работать с REST API:

Тут дан пример Ethereum...

Работа с REST API Blockscout Optimism

Переходим: https://optimism.blockscout.com/api-docs

И выбираем интересное нам. Например, хотим получать текущий блок в сети...

Тогда открываем "get ​/blocks":

"Try it out":

Можете заполнить поле типа, но я оставлю пустым, и кликну по "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":

Вставляю и "Execute":

Содержимое:

Request URL https://optimism.blockscout.com/api/v2/blocks/118150735/transactions

Пишем код

В папке с проектом как всегда npm init, заполняем данными и

npm i axios

Далее создаём, открываем js файл и заполняем кодом. Я ниже напишу его с комментариями, чтоб было понятно, а пока вот скрин:

Код:

// Подключаем axios

const axios = require('axios');

// Основная функция: main

async function main() {

// вызываем url с блоком:

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`);

// Получаем список транзакций

const txs = page.data.items;

// Переводим в строку и выводим:

console.log(txs);

} // закрываем код функции.

setInterval(main, 3000); // вызываем функцию раз в 3 секунды.

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

Пример отображения результатов:

Всё

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

Подписывайтесь на https://t.me/blind_dev - здесь новости по моим разработкам и новые статьи.

Благодарю за внимание, и прошу распространять обзор.

Также буду рад донатам на следующий кошелёк (благодарю):

0xaeac266a4533cb0b4255ea2922f997353a18b2e8