Skip to content

Instantly share code, notes, and snippets.

@dapi
Created April 9, 2025 15:31
Show Gist options
  • Save dapi/6e7a00bfb67e9b45f21ff15aff648358 to your computer and use it in GitHub Desktop.
Save dapi/6e7a00bfb67e9b45f21ff15aff648358 to your computer and use it in GitHub Desktop.
struct Query {
/// Блок, с которого начинается запрос
/// Если не указан, запрос выполняется с самого начала доступных данных
from_block: Optional<u64>,
/// Блок, на котором заканчивается запрос (не включительно)
/// Если не указан, запрос выполняется до конца доступных данных
to_block: Optional<u64>,
/// Критерии выбора логов (отношение ИЛИ между выборками)
logs: Array<LogSelection>,
/// Критерии выбора транзакций (отношение ИЛИ между выборками)
transactions: Array<TransactionSelection>,
/// Получать данные в обратном порядке
reverse bool
///// Выборка данных /////
/// Поля для включения в ответ
field_selection: FieldSelection,
/// Какие данные добавить дополнительно (например все логи транзакции где был найден лог)
/// 0 - добавить все логи из найденной транзакции
Append Array<u8>
}
struct FieldSelection {
block: Array<String>,
transaction: Array<String>,
log: Array<String>,
}
struct LogSelection {
/// Адреса контрактов для сопоставления (пусто = совпадение со всеми)
address: Array<Address>,
/// Топики для сопоставления по позиции (пусто = совпадение со всеми)
/// Каждый элемент массива соответствует позиции топика (0-3)
/// В пределах каждой позиции любое совпадающее значение удовлетворит условию
topics: Array<Array<Topic>>,
}
struct TransactionSelection {
/// Адреса отправителей (пусто = совпадение со всеми)
/// Имеет отношение И с полем 'to'
from: Array<Address>,
/// Адреса получателей (пусто = совпадение со всеми)
/// Имеет отношение И с полем 'from'
to: Array<Address>,
/// Сигнатуры методов для сопоставления (первые 4 байта входных данных)
sighash: Array<Sighash>,
/// Статус транзакции для сопоставления (1 = успех, 0 = неудача)
status: Optional<u8>, (https://reth.rs/run/transactions.html)
/// Типы транзакций для сопоставления (например, 0 = устаревший, 1 = EIP-2930, 2 = EIP-1559, 3 = EIP-4844)
kind: Array<u8>,
/// Адреса созданных контрактов (что бы найти транзакции в которых были созданны эти смарт контракты)
contract_address: Array<Address>,
/// Типы создаваемых контрактов для фильтрации (например: "erc20", "erc721", "proxy")
/// Пустой массив = совпадение со всеми типами
contract_type: Array<String>,
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment