Чтение состояния сети
eth_getBalance, eth_call, eth_getLogs, eth_getTransactionReceipt — методы для чтения балансов, вызова view-функций контрактов и получения логов событий. Любой метод, который принимает нода, доступен без ограничений.
Отправляете JSON-RPC запросы на наш адрес — прокси передаёт их ноде Ethereum и возвращает ответ как есть. Тело запроса не парсится и не модифицируется, любой метод проходит насквозь. ethers.js, web3.js и web3.py подключаются без изменения логики приложения — меняется только адрес провайдера.
# eth_getBalance — баланс адреса в wei
curl -X POST https://nodes-api.cryptosafe.pro/proxy/ethereum \
-H "Authorization: $CSN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe","latest"],"id":1}'
# ответ приходит от ноды без изменений
{"jsonrpc":"2.0","id":1,"result":"0x1a044d1fe5a9cf0"}
import { JsonRpcProvider, FetchRequest } from 'ethers'
const req = new FetchRequest('https://nodes-api.cryptosafe.pro/proxy/ethereum')
// ключ — без префикса Bearer, именно так, как выдан в кабинете
req.setHeader('Authorization', process.env.CSN_TOKEN)
const provider = new JsonRpcProvider(req)
const balance = await provider.getBalance('0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe')
// ethers.js работает как обычно — адрес провайдера единственное, что изменилось
Нода Ethereum содержит состояние всей сети: балансы, код контрактов, историю транзакций. Через наш RPC-эндпоинт вы отправляете стандартные JSON-RPC вызовы и получаете данные напрямую с ноды.
eth_getBalance, eth_call, eth_getLogs, eth_getTransactionReceipt — методы для чтения балансов, вызова view-функций контрактов и получения логов событий. Любой метод, который принимает нода, доступен без ограничений.
eth_sendRawTransaction принимает подписанные транзакции и передаёт их ноде без изменений. eth_estimateGas помогает рассчитать лимит газа перед отправкой. Тело запроса прокси не трогает — транзакция проходит насквозь.
eth_call выполняет вызов контракта без транзакции и расхода газа. ethers.js и web3.js обращаются к контрактам через тот же провайдер — ABI-обёртки, события и фильтры работают как обычно.
Ключ можно привязать к IP-адресам и подсетям CIDR серверов вашего сервиса. Если запрос придёт с незарегистрированного адреса, сервис вернёт ошибку 8003. Поддерживаются IPv4 и IPv6; до 50 записей на ключ.
Синхронизация, обновления клиента Ethereum и мониторинг ноды — наша ответственность. Адрес эндпоинта остаётся прежним при любых обновлениях с нашей стороны. Чем это отличается от публичного RPC — в статье в блоге.
В личном кабинете видно количество запросов к ноде Ethereum, долю успешных и время ответа. Метрики собираются с первого дня без дополнительной настройки.
От первого сообщения до рабочего провайдера — обычно в тот же день.
Напишите нам в чат поддержки на сайте: скажите, что нужен доступ к ноде Ethereum. Мы откроем кабинет в день обращения.
В личном кабинете создайте ключ. При необходимости добавьте IP-адреса серверов, с которых будут идти запросы.
Подставьте https://nodes-api.cryptosafe.pro/proxy/ethereum
в настройки ethers.js, web3.js или любой другой библиотеки.
Добавьте ключ в заголовок Authorization.
Логика приложения остаётся прежней — библиотека работает как обычно. В кабинете сразу начнёт накапливаться статистика по вашим вызовам.
Напишите в чат поддержки — откроем доступ к ноде Ethereum в день обращения. Ключ выпускаете сами в кабинете, инфраструктуру держим мы.