Я не понимаю, как работает клиент. Я пытаюсь объяснить свои сомнения. Поскольку клиент в классической парадигме клиент-сервер — это легковесное приложение, я не понимаю, как это приложение может использовать технологии блокчейна. Клиент смарт-контракта — это конечный пользователь, который может использовать свой смартфон для доступа к контрактному API. Для этого, конечно же, невозможно загрузить блокчейн на смартфон. Итак, я не понимаю, как этот клиент может использовать смарт-контракт без загрузки БК.
Более того, web3js (просто для цитирования библиотеки) предназначен только для nodeJS, и инициализация загружает блокчейн, или есть какие-то механизмы, чтобы избежать загрузки и запустить его в браузере, например, извините за тупой параллелизм, Angular или JQuery? Для того, чтобы представить какое-то приложение на мобильном устройстве.
Кое-что из того, что вы сказали, на самом деле правильно, но вы все еще не все понимаете правильно.
Contract API, о котором вы говорили, можно вызывать через RPC (структура API, что-то вроде rest). Библиотека под названием JSON RPC позволяет вам выполнять этот вызов с помощью JS. Web3JS выполняет ту же работу, что и JSON RPC, но с лучшей абстракцией и простыми в использовании методами.
Теперь использование Web3JS для вызова метода контракта вообще не требует загрузки блокчейна, контракт — это ваша абстракция.
Когда вызывается функция в контракте, контракт запускает код этой функции и создает транзакцию, которая будет храниться в блокчейне. Таким образом, единственным слоем, который в этом случае взаимодействует с цепочкой блоков за контрактом, является сам контракт.
Таким образом, ни одному веб-клиенту не нужно будет загружать блокчейн, чтобы использовать определенный контракт и его методы. Вы поймете это лучше, если будете следовать простому руководству и заключать рабочий контракт.
Я попытаюсь провести аналогию с существующей клиент-серверной архитектурой.
Существующая система:
Клиент: любой интерфейс, написанный на JS (веб), android, ios (мобильный).
Новая система:
Клиент: любой интерфейс, написанный на JS (веб), android, ios (мобильный).
Дополнительные вещи:
Metamask и другое программное обеспечение, позволяющее использовать блокчейн, внедряет объект в объект окна браузера. то есть веб3.
Если вы видите в Metamask, вы можете выбрать, к какой сети вы хотите подключиться. При выборе сети, которая является нашей текущей целевой сетью блокчейна.
В начале выполнения клиентского приложения мы предоставляем следующую информацию в web3 для таргетинга на конкретный контракт в конкретной сети.
Когда у нас есть эти 3 элемента, web3 позволяет нам общаться с этим контрактом.
Здесь ключевым программным обеспечением является Metamask, который фактически устраняет разрыв между клиентом и сетью блокчейна.
За кулисами: как только транзакция подтверждается метамаской, этот запрос отправляется поставщику центрального узла, как правило, службе Infura, у которого есть узлы, работающие для другой сети. Эти узлы затем транслируют ваше сообщение/tx в сеть, и именно так вы достигаете блокчейна без фактического запуска узла или загрузки блокчейна.
Он взаимодействует с любой сетью Ethereum через API, предоставленный Infura, который в конечном итоге передает tx/сообщения от узлов, которые они запускают/обслуживают.