Как работает клиент Smart Contract?

Я не понимаю, как работает клиент. Я пытаюсь объяснить свои сомнения. Поскольку клиент в классической парадигме клиент-сервер — это легковесное приложение, я не понимаю, как это приложение может использовать технологии блокчейна. Клиент смарт-контракта — это конечный пользователь, который может использовать свой смартфон для доступа к контрактному API. Для этого, конечно же, невозможно загрузить блокчейн на смартфон. Итак, я не понимаю, как этот клиент может использовать смарт-контракт без загрузки БК.

Более того, web3js (просто для цитирования библиотеки) предназначен только для nodeJS, и инициализация загружает блокчейн, или есть какие-то механизмы, чтобы избежать загрузки и запустить его в браузере, например, извините за тупой параллелизм, Angular или JQuery? Для того, чтобы представить какое-то приложение на мобильном устройстве.

Ответы (2)

Кое-что из того, что вы сказали, на самом деле правильно, но вы все еще не все понимаете правильно.

Contract API, о котором вы говорили, можно вызывать через RPC (структура API, что-то вроде rest). Библиотека под названием JSON RPC позволяет вам выполнять этот вызов с помощью JS. Web3JS выполняет ту же работу, что и JSON RPC, но с лучшей абстракцией и простыми в использовании методами.

Теперь использование Web3JS для вызова метода контракта вообще не требует загрузки блокчейна, контракт — это ваша абстракция.

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

Таким образом, ни одному веб-клиенту не нужно будет загружать блокчейн, чтобы использовать определенный контракт и его методы. Вы поймете это лучше, если будете следовать простому руководству и заключать рабочий контракт.

Я попытаюсь провести аналогию с существующей клиент-серверной архитектурой.

Существующая система:

Клиент: любой интерфейс, написанный на JS (веб), android, ios (мобильный).

Новая система:

Клиент: любой интерфейс, написанный на JS (веб), android, ios (мобильный).

Дополнительные вещи:

  1. Библиотека Web3JS: предоставление API для взаимодействия с блокчейном.
  2. Metamask (или любое другое программное обеспечение, поддерживающее блокчейн): позволяет управлять адресами, подписывать транзакции и т. д.

Metamask и другое программное обеспечение, позволяющее использовать блокчейн, внедряет объект в объект окна браузера. то есть веб3.

Если вы видите в Metamask, вы можете выбрать, к какой сети вы хотите подключиться. При выборе сети, которая является нашей текущей целевой сетью блокчейна.

В начале выполнения клиентского приложения мы предоставляем следующую информацию в web3 для таргетинга на конкретный контракт в конкретной сети.

  1. Текущий сетевой провайдер
  2. Контракт ABI
  3. Адрес контракта в сети

Когда у нас есть эти 3 элемента, web3 позволяет нам общаться с этим контрактом.

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

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

Под капотом МетамаскиОн взаимодействует с любой сетью Ethereum через API, предоставленный Infura, который в конечном итоге передает tx/сообщения от узлов, которые они запускают/обслуживают.