← Web3 / web3 / ethereum-gateway / reference
Поддерживаемые методы API
Полный список методов API, поддерживаемых шлюзом Ethereum Gateway,
приведён ниже. Шлюз возвращает 403 если указан метод, который не
поддерживается.
Полный список методов JSON-RPC API приведен в спецификация JSON-RPC ↗.
Методы трассировки
Трассировки EVM позволяют отслеживать выполнение смарт-контрактов в блокчейне Ethereum. Они фиксируют каждый шаг, который виртуальная машина Ethereum (EVM) выполняет при запуске смарт-контракта, включая конкретную операцию, потраченный газ и изменения, внесенные в блокчейн в результате. Модуль trace дает разработчикам доступ к этим трассировкам и позволяет их анализировать, что полезно для отладки, тестирования и мониторинга смарт-контрактов. С его помощью можно находить и устранять ошибки, повышать производительность и лучше понимать, как смарт-контракт взаимодействует с блокчейном.
trace_filter
trace_filter метод получает трассировки нескольких транзакций одним запросом, что особенно полезно для отладки и мониторинга конкретных адресов в блокчейне Ethereum.
Параметры запроса
fromBlock:QuantityилиTag- (необязательно) Номер блока, с которого нужно начать получение трассировок.toBlock:QuantityилиTag- (необязательно) Номер блока, на котором нужно прекратить получение трассировок.fromAddress:Array- (необязательно) Массив адресов, с которых нужно начать получение трассировок.toAddress:Address- (необязательно) Массив адресов, на которых нужно прекратить получение трассировок.after:Quantity- (необязательно) Номер трассировки для смещенияcount:Quantity- (необязательно) Количество возвращаемых трассировок.
Возвращает
Этот метод возвращает Array трассировок, соответствующих заданному фильтру.
Пример
curl https://web3-trial.cloudflare-eth.com/v1/mainnet \
-X POST \
-H 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"method":"trace_filter",
"params":[
{
"count": 200,
"fromBlock": "0xccb943",
"toBlock": "0xccbc62",
"fromAddress": [
"0xEdC763b3e418cD14767b3Be02b667619a6374076"
]
}
],
"id":1
}'Ответ
{
"jsonrpc": "2.0",
"result": [
{
"action": {
"from": "0xedc763b3e418cd14767b3be02b667619a6374076",
"callType": "call",
"gas": "0x8462",
"input": "0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"to": "0x7ff4169a6b5122b664c51c95727d87750ec07c84",
"value": "0x0"
},
"blockHash": "0x351e7c06ec010c8f7e7358eb580238dd23e1e129be96822aa93ebb6da08558e6",
"blockNumber": 13416771,
"result": {
"gasUsed": "0x6009",
"output": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
"subtraces": 0,
"traceAddress": [],
"transactionHash": "0x054bbb9fbb855bf23f755e548c7409f45fc5eff8a824b2ad06380bc038d7b049",
"transactionPosition": 54,
"type": "call"
}
],
"id": 1
}Ограничения
trace_filter метод имеет ряд ограничений, чтобы наши узлы не перегружались.
- Диапазон блоков для
trace_filterметод ограничен 800 блоками. - Трассировка
countограничивается 200