RPC (удаленный вызов процедур)

Определение

RPC (Remote Procedure Call) — это протокол связи, который позволяет программе выполнять процедуру или функцию на удалённом сервере так, как если бы она работала локально, без необходимости для разработчика явно управлять базовыми сетевыми параметрами. 

В контексте блокчейна и криптовалют RPC является основным механизмом, посредством которого кошельки , децентрализованные приложения (dApps) и инструменты разработчиков взаимодействуют с узлами блокчейна . Когда пользователь проверяет баланс своего кошелька, отправляет транзакцию или запрашивает данные смарт-контракта, он, как правило, совершает RPC-вызовы к узлу блокчейна.

Ethereum популяризировал стандарт JSON-RPC для взаимодействия в блокчейне, обеспечив стандартизацию таких методов, как `eth_getBalance`, `eth_sendTransaction` и `eth_call`. RPC-конечные точки служат шлюзом между пользовательским уровнем приложения и децентрализованной сетью узлов, поддерживающих состояние блокчейна. 

Публичные RPC-интерфейсы доступны бесплатно, но часто имеют ограничения по скорости и перегружены, в то время как специализированные RPC-провайдеры, такие как Infura, Alchemy и QuickNode, предлагают высокопроизводительный и надежный доступ для производственных приложений. 

Происхождение и история

Время События
1981 Исследователи Xerox PARC Брюс Джей Нельсон и Эндрю Биррелл являются пионерами концепции RPC.
1984 Биррелл и Нельсон опубликовали основополагающую статью «Реализация удаленных вызовов процедур».
1988 Компания Sun Microsystems выпускает ONC RPC (Open Network Computing RPC) в качестве открытого стандарта.
1998 Представлен XML-RPC, позволяющий осуществлять удалённые вызовы по протоколу HTTP с использованием XML-кодирования.
2005 Опубликована спецификация JSON-RPC версии 1.0, предлагающая облегченную альтернативу XML-RPC.
2015 В сети Ethereum в качестве стандартного интерфейса связи узлов используется JSON-RPC.
2016 Infura становится первым крупным провайдером хостинга Ethereum RPC.
2017 Бум ICO резко увеличил спрос на надежную инфраструктуру RPC.
2020 DeFi Summer выявляет узкие места RPC на фоне резкого роста активности в блокчейне; Alchemy привлекает крупное финансирование.
2023 Децентрализованные сети RPC, такие как Pocket Network и Lava Protocol, набирают популярность для снижения рисков централизации.

«RPC — это невидимая инфраструктура Web3: каждое взаимодействие в блокчейне, от простой передачи токенов до сложной стратегии DeFi, начинается с вызова RPC к узлу». — Виталик Бутерин

Как это работает

Характеристика Публичный RPC Выделенный поставщик RPC Самостоятельно размещенный узел
Стоимость Бесплатно Подписка на основе Аппаратное обеспечение + пропускная способность
Ограничения скорости Строгий (10-100 запросов в секунду) Высокий уровень (тысячи запросов в секунду) Неограниченные
Надежность Переменчивый, часто перегруженный Соглашение об уровне обслуживания с гарантированной бесперебойной работой (SLA) с показателем 99.9%+ Зависит от настройки
Задержка Более высокий (общий) Низкий уровень (оптимизированная маршрутизация) Самый низкий (местный)
конфиденциальность Запросы, видимые поставщику услуг. Запросы, видимые поставщику услуг. Полностью приватный
Обслуживание Ничто Ничто Синхронизация и обновления узлов
Архив данных Обычно недоступно Часто доступно (платный тариф) Если настроен архивный узел
Для каких задач Тестирование и хобби-проекты Производственные децентрализованные приложения операции, критически важные для конфиденциальности

Простыми словами

  1. Телефон блокчейнов — Подобно тому, как вы поднимаете трубку телефона, чтобы задать вопрос кому-то в другом городе, ваш кошелек или децентрализованное приложение совершает RPC-вызов, чтобы «позвонить» узлу блокчейна и задать ему вопросы, например: «Какой у меня баланс?» или «Прошла ли моя транзакция?»
  2. Универсальный переводчик — RPC стандартизирует способ взаимодействия приложений с узлами блокчейна. Независимо от того, какой кошелек Ethereum вы используете — MetaMask, Rainbow или Rabby — все они используют один и тот же язык JSON-RPC для связи с узлами.
  3. Запрос и ответ — Каждое RPC-взаимодействие представляет собой простой обмен: приложение отправляет структурированный запрос, указывающий метод и параметры, а узел отвечает запрошенными данными или подтверждает выполнение действия.
  4. Невидимая инфраструктура — Большинство пользователей блокчейна никогда не видят вызовов RPC, но каждый раз, когда вы обмениваете токены на Uniswap, проверяйте свои RPC-вызовы. NFT Для сбора средств или получения вознаграждений за стейкинг, десятки вызовов RPC выполняются за кулисами, чтобы это стало возможным.
  5. Проблема централизации — Хотя сами блокчейны децентрализованы, большинство децентрализованных приложений (dApps) полагаются на несколько централизованных поставщиков RPC-вызовов. Если Infura выйдет из строя, значительная часть dApps на Ethereum временно станет непригодной для использования, что побудит к усилиям по децентрализации самой инфраструктуры RPC.

Примеры из реального мира

Сценарий Реализация Результат
Отображение баланса кошелька MetaMask MetaMask вызывает `eth_getBalance` через RPC-конечную точку Infura каждый раз, когда пользователь открывает кошелек. Пользователи видят свои балансы ETH и токенов в режиме реального времени без запуска полной ноды.
Обмен токенов uniswap Фронтенд Uniswap выполняет множество RPC-запросов для имитации обмена, оценки платы за газ, а затем передает подписанную транзакцию. Бесперебойная торговля в DeFi с точными котировками цен и оценками стоимости газа.
Обозреватель блоков Etherscan Etherscan использует собственные архивные узлы и инфраструктуру RPC для индексации всей истории Ethereum. Пользователи могут найти любую транзакцию, адрес или контракт в полной истории блокчейна.
Ценовые потоки Chainlink Oracle Узлы Chainlink выполняют RPC-запросы для чтения данных о ценах из контрактов агрегаторов в блокчейне. Протоколы DeFi получают надежные, защищенные от несанкционированного изменения данные о ценах для кредитования и производных финансовых инструментов.

Преимущества

Преимущества Описание
Стандартизированный интерфейс JSON-RPC предоставляет универсальный, хорошо документированный протокол для взаимодействия с блокчейном между различными клиентами и языками программирования.
Абстракция сложности Разработчики могут взаимодействовать с состоянием блокчейна, не понимая тонкостей низкоуровневой одноранговой сети или процесса достижения консенсуса.
Масштабируемый доступ RPC-провайдеры позволяют миллионам пользователей взаимодействовать с блокчейнами без необходимости запуска каждым из них собственного узла.
Данных в реальном времени Соединения WebSocket RPC позволяют получать потоковые обновления о новых блоках, ожидающих транзакциях и журналах событий.
Кросс-платформенная совместимость Протокол HTTP работает на любом языке программирования, в любом браузере или на любом устройстве, способном отправлять веб-запросы.

Недостатки и риски

Снижение Описание
Риск централизации Чрезмерная зависимость от нескольких поставщиков RPC-протоколов (Infura, Alchemy) создает единые точки отказа для экосистемы децентрализованных приложений.
Конфиденциальность Провайдеры RPC могут регистрировать IP-адреса, адреса кошельков и шаблоны транзакций всех пользователей, проходящих через их конечные точки.
Ограничение скорости В публичных и бесплатных RPC-интерфейсах действуют строгие ограничения на количество запросов, что может привести к сбоям в работе децентрализованных приложений в периоды высокой нагрузки.
Доверие к целостности данных Пользователи должны быть уверены, что поставщик RPC возвращает честные, неискаженные ответы от реальных узлов блокчейна.
Чувствительность к задержке Географическая удаленность от RPC-серверов и перегрузка сети могут вызывать задержки, критически влияя на критически важные по времени операции DeFi, такие как ликвидации или арбитраж

Советы по управлению рисками:

  • Используйте несколько RPC-провайдеров в качестве резервных вариантов, чтобы избежать единых точек отказа в производственных приложениях.
  • Запустите собственный узел для операций, критически важных с точки зрения конфиденциальности, и для независимой проверки данных.
  • Рассмотрите возможность использования децентрализованных RPC-сетей (Pocket Network, Lava Protocol) для снижения зависимости от централизованных поставщиков.
  • Отслеживайте состояние и время отклика конечных точек RPC, чтобы выявлять сбои до того, как они повлияют на пользователей.
  • Используйте соединения WebSocket вместо HTTP-опроса для получения данных в реальном времени, чтобы уменьшить объем ненужных вызовов RPC.

FAQ

В: Нужно ли мне запускать собственный узел для использования RPC?

А: Нет. Большинство пользователей и разработчиков полагаются на хостинг-провайдеров RPC, таких как Infura, Alchemy или QuickNode, которые обслуживают узлы от вашего имени. Однако запуск собственного узла обеспечивает максимальную конфиденциальность и исключает зависимость от третьих лиц.

В: Почему разные блокчейны используют разные методы RPC?

A: Каждый блокчейн имеет свою собственную архитектуру и возможности. Хотя JSON-RPC в Ethereum стал стандартом де-факто (его используют большинство блокчейнов, совместимых с EVM), блокчейны, не поддерживающие EVM, такие как Solana, Bitcoin и Cosmos, используют собственные спецификации RPC, адаптированные к их уникальным особенностям.

В: Что происходит, когда RPC-провайдер выходит из строя?

A: Если децентрализованное приложение (dApp) зависит от единственного поставщика RPC-доступа, и тот выходит из строя, приложение фактически становится непригодным для использования — пользователи не могут отправлять транзакции, проверять баланс или взаимодействовать со смарт-контрактами. Именно поэтому в работающих dApp всегда следует использовать стратегии резервного копирования с несколькими поставщиками.

В: В чём разница между HTTP и WebSocket RPC?

A: HTTP RPC использует модель «запрос-ответ», в которой клиент должен активно опрашивать наличие обновлений. WebSocket RPC поддерживает постоянное соединение, позволяющее серверу отправлять клиенту обновления в реальном времени (новые блоки, подтверждения транзакций, сообщения о событиях) без повторного опроса.

В: Звонки по протоколу RPC бесплатны?

A: Многие провайдеры предлагают бесплатные тарифы с ограничениями по количеству запросов (например, Infura предлагает 100 000 запросов в день бесплатно). Помимо этого, выделенный доступ к RPC является платной услугой. Общедоступные RPC-терминалы бесплатны, но ненадежны для использования в производственной среде.

Совет от UPay: При создании децентрализованного приложения всегда настраивайте как минимум двух RPC-провайдеров в качестве резервных — Infura и Alchemy составляют отличную пару. Для личных транзакций, где важна конфиденциальность, рассмотрите возможность запуска легковесного узла, такого как Nethermind или Geth, чтобы избежать отправки данных о транзакциях вашего кошелька через сторонние серверы.

Предупреждение: Данная информация предназначена исключительно для образовательных целей и не является финансовой консультацией. Всегда проводите собственное исследование (DYOR) и консультируйтесь с квалифицированными финансовыми консультантами, прежде чем принимать инвестиционные решения.

UPay — Создание криптоэнциклопедии

Медиа