Перейти к основному содержанию
Node RPC — это быстрый и надёжный production-узел, обеспечивающий доступ к более чем 80 блокчейн-сетям через RPC. Он позволяет отправлять транзакции, разворачивать смарт-контракты, запрашивать данные блокчейна и выполнять другие операции без необходимости запускать собственный узел или управлять инфраструктурой.
Node RPC доступен на платном плане. Чтобы включить его для вашей учётной записи, свяжитесь с нашим отделом продаж.
Node RPC поддерживает:
  • Мультирегиональную инфраструктуру (EU и US), обеспечивающую низкую задержку независимо от местоположения
  • Доступ по протоколам http и WebSocket
  • Пакетирование запросов
  • Создание пользовательских RPC-методов через Node Extensions
  • Доступ к инструментам разработки Tenderly

Пользовательские RPC-методы

Помимо поддержки стандартных методов EVM, Node RPC предоставляет пользовательские RPC-методы Tenderly в пространстве имён tenderly_. Методы симуляции, оценки газа и трассировки описаны на отдельных страницах:
  • tenderly_simulateTransaction — симуляция исхода транзакции до её подписания.
  • tenderly_estimateGas — получение точной оценки газа для транзакции.
  • tenderly_simulateBundle — симуляция нескольких транзакций в одном запросе.
  • tenderly_estimateGasBundle — получение точных оценок газа для бандла транзакций.
  • tenderly_traceTransaction — получение декодированной трассировки существующей транзакции.
Методы декодирования и поиска сигнатур доступны в справочнике RPC:
  • tenderly_decodeInput — эвристическое декодирование внешних вызовов функций.
  • tenderly_decodeError — эвристическое декодирование пользовательских ошибок.
  • tenderly_decodeEvent — эвристическое декодирование эмитируемых событий.
  • tenderly_functionSignatures — получение интерфейса функции по 4-байтовому селектору.
  • tenderly_errorSignatures — получение интерфейса события по 4-байтовому селектору.
  • tenderly_eventSignature — получение интерфейса события по 32-байтовой сигнатуре события.

Управление Node RPC

Войдите в Dashboard и перейдите на страницу Node RPCs, где вы можете создавать новые Node RPC и управлять существующими.

Создание Node RPC

Чтобы создать новый Node RPC, выполните следующие шаги:
  • Нажмите кнопку Create Node
  • Выберите сеть, к которой хотите получить доступ
  • Укажите имя узла
  • Нажмите Create
У каждого создаваемого узла будет уникальный URL.

Настройка Node RPC

После создания Node RPC вы можете настроить его в разделе Settings. Оттуда вы можете:
  • Сбросить URL Node RPC
  • Изменить имя узла
  • Удалить узел

Добавление Node RPC в MetaMask

Добавьте Node RPC в ваш кошелёк MetaMask одним кликом. Откройте страницу Overview узла, нажмите кнопку Add to Wallet и подтвердите действие в MetaMask. Нажмите Approve в MetaMask, чтобы добавить Node RPC. Node RPC

WebSocket

Node RPC доступен через WebSocket (wss://) в дополнение к HTTPS. Соединение WebSocket является постоянным и двунаправленным и необходимо для методов подписки eth_subscribe и eth_unsubscribe. Чтобы получить эндпоинт WebSocket, откройте страницу Overview узла в Dashboard и скопируйте URL WSS. Вы можете проверить соединение с помощью утилиты командной строки wscat:
example
wscat -c wss://mainnet.gateway.tenderly.co/$TENDERLY_NODE_ACCESS_KEY
После подключения отправляйте JSON-RPC-запросы через сокет и получайте ответы в реальном времени:
request.json
{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}
response.json
{"jsonrpc":"2.0","id":1,"result":"0x657330"}

Пакетирование JSON-RPC-запросов

Пакетирование JSON-RPC-запросов позволяет отправлять несколько вызовов JSON-RPC-методов в одном HTTPS-запросе. Пакетный запрос состоит из массива отдельных JSON-RPC-запросов, а ответ представляет собой массив результатов в порядке, соответствующем каждому запросу в пакете. Пакетирование можно использовать:
  • напрямую, отправив HTTPS-запрос, содержащий массив отдельных JSON-RPC-вызовов,
  • с помощью Ethers, создав экземпляр JsonRpcBatchProvider,
  • с помощью Viem, настроив параметр batch при создании клиента через createPublicClient.
Если конкретный запрос завершается ошибкой, пакетный запрос всё равно возвращает HTTP-статус 200 OK, а объект ответа, соответствующий неудавшемуся JSON-RPC-вызову, содержит ошибку.
Пакетирование запросов поддерживается только через HTTPS. Через WSS пакетирование не поддерживается. Каждый запрос внутри пакета учитывается и тарифицируется отдельно; см. тарификацию Node RPC.
batch-call.sh
curl https://mainnet.gateway.tenderly.co/$TENDERLY_NODE_ACCESS_KEY \
-X POST \
-H "Content-Type: application/json" \
-d '[
  {"jsonrpc": "2.0", "id": 1, "method": "eth_blockNumber", "params": []},
  {"jsonrpc": "2.0", "id": 2, "method": "eth_gasPrice", "params": []},
  {"jsonrpc": "2.0", "id": 3, "method": "eth_getBalance", "params": ["0xd8da6bf26964af9d7eed9e03e53415d37aa96045", "latest"]}
]'
В Viem пакетирование настраивается на уровне клиента:
batch-calls.ts
const client = createPublicClient({
  chain: mainnet,
  transport: http(
    `https://mainnet.gateway.tenderly.co/${process.env.TENDERLY_NODE_ACCESS_KEY}`,
    {
      batch: true,
    }
  ),
});

const [blockNumber, balance, ensName] = await Promise.all([
  client.getBlockNumber(),
  client.getBalance({ address: "0xd2135CfB216b74109775236E36d4b433F1DF507B" }),
  client.getEnsName({ address: "0xd2135CfB216b74109775236E36d4b433F1DF507B" }),
]);

RPC Request Builder

RPC Request Builder позволяет выполнять любой из поддерживаемых RPC-методов из браузера. Каждый запрос отправляется напрямую в Node RPC. Builder также позволяет использовать существующие коллекции или создавать собственные запросы. Посмотрите список всех поддерживаемых RPC-методов в справочнике RPC.

Node Extensions

Node Extensions позволяют расширить функциональность Node RPC пользовательскими RPC-методами, адаптированными под ваш dapp, протокол или конкретные задачи, используя JavaScript или TypeScript. RPC-методы, реализованные как Node Extensions, имеют префикс extension_ и выполняются через Node RPC. Node Extensions Создать Node Extension можно несколькими способами со вкладки Node Extensions в Dashboard:
  • Создание с нуля: нажмите Create Custom Extension, задайте имя RPC-метода и напишите функцию на JavaScript/TypeScript, которая будет выполняться при каждом вызове.
  • Переиспользование Web3 Action: используйте исходный код существующего Web3 Action с неаутентифицированным webhook-триггером в качестве функции расширения.
  • Развёртывание из библиотеки: нажмите Add From Library, чтобы активировать готовое расширение из публичной библиотеки Node Extensions. Расширения из библиотеки нельзя редактировать.
  • Развёртывание через CLI: опишите расширения в tenderly.yaml с помощью tenderly node-extensions init и разверните их командой tenderly node-extensions deploy, используя Tenderly CLI.
Если расширение использует API-ключи или другие чувствительные значения, храните их как Web3 Action Secrets и читайте в коде с помощью await context.secrets.get('API_KEY'). Используйте кнопку Test у расширения, чтобы отправить в него JSON-RPC-payload и посмотреть предпросмотр запроса и ответа.

Ресурсы

Начните работу с Node RPC или продолжайте изучать, как он работает, с помощью этих ресурсов.

Симуляции и оценка газа

Симулируйте транзакции и получайте точные оценки газа через JSON-RPC.

Справочник RPC

Подробный список поддерживаемых RPC-методов в Node RPC.

Поддерживаемые сети

Полный список сетей, поддерживаемых в Node RPC.

Тарификация

Разберитесь в тарификации, основанной на вычислительной мощности, затрачиваемой на выполнение RPC-методов.