Каждый кошелек и приложение, работающие с блокчейном, делают это через точку доступа RPC. В статье объясняется, что это такое, каковы компромиссы публичных точек доступа и как безопасно проверить и добавить такую точку.
Что такое точка доступа RPC
RPC означает remote procedure call (удаленный вызов процедур). Точка доступа RPC — это веб-адрес узла блокчейна, который отвечает на вопросы и принимает транзакции. Узел — это компьютер, хранящий копию цепочки.
Например, точка доступа может ответить на вопросы «какой баланс у этого адреса?», «какой последний блок?» или «сколько будет стоить эта транзакция?». Она также может принять подписанную транзакцию и передать ее в сеть. В сетях в стиле Ethereum распространенный формат — JSON-RPC поверх HTTPS. Solana использует похожий формат JSON-RPC со своими методами.
Точка доступа — это не сам блокчейн. Это дверь в него. Если дверь медленная или неправильная, то и то, что вы видите, медленное или неправильное.
Как ее используют кошельки и приложения
Когда вы открываете кошелек и видите баланс, кошелек спрашивает точку доступа RPC. Когда вы нажимаете «отправить», кошелек подписывает транзакцию на вашем устройстве и отправляет подписанные данные точке доступа, а та пересылает их в сеть. Ваши приватные ключи никогда не попадают к точке доступа. См. кошельки и ключи.
У кошелька есть точка доступа по умолчанию для каждой сети. Ее можно изменить. Для сетей, которых кошелек не знает, вы добавляете ее сами вместе с идентификатором сети (chain ID), названием сети и символом монеты.
Публичные и частные провайдеры
- Публичные точки доступа бесплатны и открыты для всех. Их содержат фонды, сети, сообщества и компании. Они подходят для легкого использования.
- Частные, или платные, провайдеры дают вам собственный ключ доступа, более высокие лимиты, лучшую поддержку и часто более быструю и стабильную работу. Ими пользуются приложения с большим числом пользователей.
Публичные точки доступа делят мощность между всеми пользователями, поэтому они менее предсказуемы. Платный тариф дает больше контроля, но вы платите и зависите от компании. Обычному пользователю кошелька часто хватает публичной точки доступа. Для бизнес-приложения лучше подходит частная. ChainMonitor не рекомендует никаких провайдеров.
Лимиты запросов
Для защиты публичные точки доступа ограничивают, сколько запросов можно делать в секунду или в день. Если вы превысите лимит, они отвечают ошибкой вроде «429 too many requests» или замедляют вас. Тогда кошелек может показать пустой баланс или не суметь отправить транзакцию. Решение — подождать, использовать другую точку доступа или перейти на частный тариф.
Задержка и отставание блоков
Состояние точки доступа показывают два числа.
- Задержка (latency): сколько времени запрос ждет ответа, в миллисекундах. Чем меньше, тем лучше. Зависит от расстояния и нагрузки.
- Отставание блоков (block lag): на сколько блоков точка доступа отстает от самого нового блока сети. Точка доступа, отстающая на несколько блоков, показывает устаревшие балансы, может сообщить, что транзакции нет, хотя она есть, и давать неверные оценки комиссий.
Почему точка доступа может отставать? Ее узел мог потерять соединения, мог еще синхронизироваться или находиться за кэшем, который обновляется медленно. Если баланс в кошельке выглядит неправильно, отстающая точка доступа — одна из первых вещей для проверки. Можно также попробовать тот же адрес в обозревателе блоков.
Приватность
Точка доступа видит каждый запрос, который вы отправляете. В том числе ваш IP-адрес и адреса, которые вы запрашиваете. Оператор может связать ваш IP с адресами ваших кошельков. Некоторые провайдеры публикуют политику конфиденциальности, где написано, что они логируют. Другие — нет.
Чтобы снизить риск:
- Прочитайте политику провайдера об отслеживании и логировании.
- Используйте другую точку доступа или VPN, если не хотите, чтобы оператор видел ваш IP-адрес.
- Помните, что все транзакции в любом случае становятся публичными в блокчейне. Риск связан с привязкой вашей личности к вашим адресам.
- Запустите собственный узел, если приватность очень важна.
Как добавить свой RPC в кошелек
Детали различаются в зависимости от кошелька, но шаги похожи.
- Откройте настройки сетей кошелька и выберите добавление или изменение сети.
- Введите название сети, URL RPC, идентификатор сети, символ валюты и, если просят, URL обозревателя блоков.
- Сохраните и переключитесь на эту сеть.
- Проверьте, что баланс загружается и что кошелек показывает правильную сеть.
Берите идентификатор сети из надежного источника. Неверный идентификатор сети или поддельный адрес RPC могут показывать ложные данные. Добавляйте только те точки доступа, которым вы доверяете.
Страница состояния RPC на ChainMonitor
Страница сетей перечисляет публичные точки доступа RPC для сетей, которые охватывает сайт. Для каждой точки доступа измеряется:
- Задержка: время ответа на запрос.
- Высота блока: номер последнего блока, о котором сообщает точка доступа.
- Отставание: на сколько блоков эта высота отстает от самого нового блока, о котором сообщают другие исправные точки доступа сети.
Список отсортирован так, что самые быстрые идут первыми, поэтому с первого взгляда видно, какие исправны. Откройте сеть, например по адресу /chains/<id>, чтобы подробно увидеть ее точки доступа. У каждой есть кнопка add to wallet в один клик, которая просит ваш кошелек добавить эту сеть с правильным идентификатором. Запрос вы все равно подтверждаете в кошельке. Проверьте значения перед одобрением.
Числа — это измерения, сделанные с серверов сайта в определенный момент. Ваша собственная задержка зависит от того, где вы находитесь. Используйте их как ориентир, а не как гарантию.
Часто задаваемые вопросы
Что означает RPC в криптовалюте?
Это remote procedure call, удаленный вызов процедур. Точка доступа RPC — веб-адрес, позволяющий кошелькам и приложениям общаться с узлом блокчейна.
Безопасны ли публичные точки доступа RPC?
Они не могут забрать ваши средства, потому что подпись происходит в вашем кошельке. Но они могут видеть ваш IP-адрес и адреса, которые вы запрашиваете, и могут показывать неверные или устаревшие данные. Используйте точки доступа из источников, которым доверяете.
Почему кошелек показывает неверный баланс?
Точка доступа может отставать от сети, быть ограничена по лимиту или не работать. Переключитесь на другую точку доступа и обновите. Также можно проверить адрес в обозревателе.
Что такое отставание блоков?
Это число блоков, на которое точка доступа отстает от самого нового блока. Большое отставание означает устаревшие данные.
Нужен ли мне собственный провайдер RPC?
Большинству людей нет. Точки доступа кошелька по умолчанию достаточно для обычного использования. Если вы создаете приложение или отправляете много запросов, лучше подойдет частный тариф или собственный узел.