Перейти к основному содержанию

Настройка web3.js для использования блокчейна Ethereum в JavaScript

web3.js
JavaScript
Beginner
jdourlens
11 апреля 2020 г.
3 минута прочтения

В этом руководстве мы рассмотрим, как начать работу с web3.js (opens in a new tab), чтобы взаимодействовать с блокчейном Ethereum. Web3.js можно использовать как во фронтенде, так и в бэкенде, чтобы считывать данные из блокчейна, совершать транзакции и даже развертывать смарт-контракты.

Первый шаг — это включить web3.js в ваш проект. Чтобы использовать его на веб-странице, вы можете импортировать библиотеку напрямую, используя CDN, например JSDeliver.

1<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>

Если вы предпочитаете установить библиотеку для использования в бэкенде или в проекте с фронтендом, использующим сборку, вы можете установить ее с помощью npm:

npm install web3 --save

Затем, чтобы импортировать Web3.js в скрипт Node.js или фронтенд-проект Browserify, вы можете использовать следующую строку JavaScript:

1const Web3 = require("web3")

Теперь, когда мы включили библиотеку в проект, нам нужно ее инициализировать. Ваш проект должен иметь возможность взаимодействовать с блокчейном. Большинство библиотек Ethereum взаимодействуют с узлом через вызовы RPC. Чтобы инициализировать нашего провайдера Web3, мы создадим экземпляр Web3, передав в конструктор URL-адрес провайдера. Если у вас есть узел или экземпляр ganache, запущенный на вашем компьютере (opens in a new tab), это будет выглядеть так:

1const web3 = new Web3("http://localhost:8545")

Если вы хотите получить прямой доступ к размещенному узлу, вы можете найти варианты на странице «Узлы как услуга».

1const web3 = new Web3("https://cloudflare-eth.com")

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

1var Web3 = require("web3")
2const web3 = new Web3("https://cloudflare-eth.com")
3
4web3.eth.getBlockNumber(function (error, result) {
5 console.log(result)
6})

Если вы выполните эту программу, она просто выведет номер последнего блока: вершину блокчейна. Вы также можете использовать вызовы функций await/async, чтобы избежать вложенных обратных вызовов в вашем коде:

1async function getBlockNumber() {
2 const latestBlockNumber = await web3.eth.getBlockNumber()
3 console.log(latestBlockNumber)
4 return latestBlockNumber
5}
6
7getBlockNumber()

Вы можете увидеть все функции, доступные в экземпляре Web3, в официальной документации web3.js (opens in a new tab).

Большинство библиотек Web3 асинхронны, потому что в фоновом режиме библиотека выполняет вызовы JSON-RPC к узлу, который отправляет обратно результат.

Если вы работаете в браузере, некоторые кошельки напрямую внедряют экземпляр Web3, и вам следует пытаться использовать его по возможности, особенно если вы планируете взаимодействовать с адресом Ethereum пользователя для совершения транзакций.

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

1if (window.ethereum != null) {
2 state.web3 = new Web3(window.ethereum)
3 try {
4 // При необходимости запросить доступ к аккаунту
5 await window.ethereum.enable()
6 // Аккаунты теперь доступны
7 } catch (error) {
8 // Пользователь отказал в доступе к аккаунту...
9 }
10}
Показать все

Существуют и широко используются альтернативы web3.js, такие как Ethers.js (opens in a new tab). В следующем руководстве мы рассмотрим, как легко отслеживать поступление новых блоков в блокчейне и видеть их содержимое (opens in a new tab).

Последнее обновление страницы: 21 августа 2025 г.

Было ли это руководство полезным?