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

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

12 сентября 2023 г.

Удаленный вызов процедур (RPC) — это протокол связи, который позволяет программе выполнять подпрограмму или процедуру в удаленной системе по сети. По сути, это позволяет программистам общаться через распределенную сеть узлов. Новаторская процедура RPC, используемая в Ethereum, — это RPC с нотацией объектов Javascript (JSON).

Разработчики используют RPC для отправки запросов узлу, например создания нового адреса или отправки транзакции. Узел обрабатывает запрос, соответствующим образом обновляет сеть блокчейна, а затем возвращает результат разработчику через RPC. Это позволяет разработчику создать криптовалютный кошелек, который может взаимодействовать с сетью блокчейна и выполнять различные функции, такие как отправка и получение транзакций. Это полезно, поскольку облегчает процесс фактической передачи этой информации через сеть блокчейна с поддерживающей инфраструктурой, представляющей эту информацию в удобной для пользователя форме.

Недавно мы увидели, что уровни RPC могут упростить процесс создания приложений. Например, если разработчик хочет, чтобы пользователи просматривали криптобаланс своего внешнего кошелька на новом сайте по выращиванию ликвидности DeFi, он может создать API (интерфейс прикладного программирования), который взаимодействует с кошельком, чтобы узнать, что держит пользователь. Из тематических исследований и последних новостей видно, что сфера RPC развивается.

Существующие проблемы с инфраструктурой RPC Ethereum

Повторяющийся всплеск мемкоинов на Ethereum на протяжении всего его жизненного цикла привел к перегрузке сети, что привело к резкому росту транзакционных издержек и увеличению количества неподтвержденных транзакций.

Это подчеркнуло ограничения инфраструктуры RPC Ethereum, в частности, поскольку эти сетевые проблемы указывают на более широкую проблему с распределением узлов RPC внутри экосистемы. В настоящее время сеть провайдеров RPC Ethereum сильно централизована, при этом большинство запросов выполняется несколькими централизованными провайдерами.

Криптовалютные биржи часто предоставляют API, которые позволяют различным программам взаимодействовать и обмениваться данными с блокчейном или платформой обмена криптовалют, а также позволяют трейдерам получать доступ к торговым данным и совершать сделки программным способом. Эти API могут использовать RPC для связи с торговым механизмом биржи и выполнения заказов от имени пользователя.

Совсем недавно мы также стали свидетелями использования RPC для реализации эксплойтов DeFi. Манипулируя RPC, злоумышленники могут обманом заставить оракулов неточно индексировать цены, что позволяет получить из смарт-контракта больше ликвидности, чем предполагалось. Именно это и произошло при атаке на tender.fi который понес убытки в размере 1,6 млн долларов США в результате такого эксплойта.

Интерфейсы RPC можно использовать, чтобы позволить приложению криптовалютного кошелька взаимодействовать с полным узлом, работающим в сети блокчейна. Это позволяет кошельку запрашивать в блокчейне такую ​​информацию, как балансы и истории транзакций, а также отправлять транзакции в сеть для обработки.

Надежные структуры RPC

  • Взаимодействие. Несмотря на то, что каждый блокчейн имеет свои особые функции и возможности, основной набор методов почти всегда один и тот же. Это значительно увеличивает переносимость ваших приложений между разными блокчейнами. Таким образом, JSON RPC — это «лингва франка», или связующая инфраструктура для Web3.

Однако вы можете легко добавить некоторые методы, специфичные для блокчейна, или даже изменить существующие, добавив к ним дополнительные параметры.

Кроме того, поскольку типичная полезная нагрузка JSON RPC будет передаваться с использованием тела запроса HTTP POST, ограничений на ее размер нет.

Существует ряд клиентов с открытым исходным кодом, которые помогут вам использовать JSON RPC в качестве клиента, например web3.js. Вам нужен только URL-адрес JSON RPC-сервера.

* Гибкость. Используя различные службы RPC, разработчики могут выбрать лучший инструмент для своей работы. Различные службы RPC могут иметь разные сильные и слабые стороны, и выбор подходящего из них может помочь оптимизировать производительность, безопасность, надежность и затраты.

Гибкая структура RPC позволяет разработчикам взаимодействовать с несколькими сетями блокчейнов через единый интерфейс, что позволяет им создавать более универсальные приложения и иметь прозрачную статистику об использовании различных методов, их стоимости и производительности.

* Разнообразие технических стеков. На уровне исполнения экосистема Ethereum в значительной степени монополизирована клиентами Geth и Eregon, но есть и несколько других, таких как Nethermind, Besu, rETH. Надежная инфраструктура не должна быть моноклиентской и должна работать как минимум с 3-4 клиентами, чтобы обеспечить надежность на уровне клиентского программного обеспечения Ethereum.

* Избыточность. Используя несколько служб RPC, разработчики могут создавать резервные системы, которые могут переключаться между разными поставщиками RPC в случае сбоя или задержки одного из них. Это может помочь гарантировать, что система останется работоспособной даже в случае сбоя.

Распределенные и децентрализованные сети поставщиков RPC могут создать более экономичную и энергоэффективную среду, в которой потребители данных не полагаются на один централизованный объект, а поддерживаются независимыми игроками инфраструктуры Web3. В этой структуре dApps могут даже размещать свои собственные конечные точки RPC, подключать их к сети RPC и значительно снижать затраты на инфраструктуру.

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


Автор: Константин Зайцев, директор по продукту DRPC

Константин — директор по продуктам DRPC, децентрализованной сети RPC на базе Ethereum, которая повышает безопасность, надежность и экономическую эффективность для проектов Web3 любого размера. Константин имеет более 15 лет опыта работы, девять из которых были в криптоиндустрии, в том числе был бывшим руководителем отдела продуктов в P2P.ORG и PMO на сайте Ambisafe.co.


Оригинал