Разница между Javascript VM и внедренным поставщиком w3 и web3

Это связано с браузером remix ethereum. Мне интересно, в чем разница между ними. Я думаю, что Javascript VM — это просто тестовая сетевая среда, в которой вам не нужен Ethereum для тестирования. Как насчет двух других?

введите описание изображения здесь

Ответы (3)

  • Javascript VM: он будет запускать изолированный узел ethereum в браузере. Это очень полезно, когда вы хотите протестировать контракт.
  • Внедренный Web3: он попытается использовать «поставщика Web3», встроенного в браузер. Например, расширение MetaMask будет включать «провайдера Web3», который вы можете настроить для подключения этого провайдера к тестовой сети или к основной сети. Это позволяет взаимодействовать с реальной сетью.
  • Поставщик Web3: он попросит вас указать адрес RPC клиента ethereum. Это обеспечивает максимальный контроль, вы подключаетесь к собственной ноде. Например, экземпляр geth или parity.

Поскольку MetaMask позволяет использовать ваш собственный «Web3 Provider», последние два имеют схожие функциональные возможности. Одним из важных отличий является то, что MetaMask будет обрабатывать учетные записи, а для «Web3 Provider» вам придется управлять ими из клиента.

В дополнение к этому... расширения, такие как браузеры с поддержкой MetaMask или dApp, буквально внедряют экземпляр web3 в javascript на странице. Ваш код javascript dApp может использовать этот экземпляр или, что более правильно, использовать currentProvider экземпляра web3 для инициализации клиентской библиотеки web3 ваших собственных приложений.

Да, вы можете использовать Metamask в качестве внедренного провайдера web3 (внедренного через браузер), Metamask будет подключаться к любому настроенному вами узлу. А с другим вариантом (поставщик web3) вы можете напрямую подключиться к своему узлу либо Ganache, либо Geth, либо любому провайдеру web3 локально или удаленно.

Вам нужны 2 основных компонента для взаимодействия с сетью Ethereum:

  1. Web3 Instance

Это инфраструктура javascript, которая выступает в качестве промежуточного программного обеспечения между вами и узлом Ethereum. Он преобразует команды JS в запросы JSON-RPC. web3.js и ether.js предоставляют экземпляры Web3, которые можно использовать либо в браузере, либо в консоли (например, Truffle).

  1. ProviderПровайдер технически является узлом Ethereum. Вы можете запустить его на своем компьютере (например, Ganache, Geth, Parity) или получить его как услугу (например, Infura). Экземпляр Web3 получает конечную точку провайдера (IP/порт) в качестве параметра для отправки запросов JSON-RPC.

В этом случае:

ВМ JavaScript :

  • Экземпляр Web3 вводится Remix --> web3.js
  • Поставщик предоставляется Remix ---> Тестовый узел Ethereum на основе Js запускается в браузере,

Зараженный Web3 :

  • Экземпляр Web3 вводится MetaMask --> web3.js
  • Провайдер подключен к MetaMask ---> Вы выбираете сеть в меню (main/ropsten/kovan...) или вводите конечную точку пользовательской ноды

Провайдер Web3 :

  • Экземпляр Web3 вводится Remix --> web3.js
  • Провайдер подключен к Remix ---> Вы вводите конечную точку пользовательского узла