---
title: "Настройка Web3.js для использования блокчейна Эфириума в JavaScript"
description: "Узнайте, как установить и настроить библиотеку Web3.js для взаимодействия с блокчейном Эфириума из приложений на JavaScript."
author: "jdourlens"
tags:
  - "web3.js"
  - "javascript"
skill: beginner
breadcrumb: "настройка Web3.js"
lang: ru
published: 2020-04-11
source: EthereumDev
sourceUrl: https://ethereumdev.io/setup-web3js-to-use-the-ethereum-blockchain-in-javascript/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---

В этом руководстве мы рассмотрим, как начать работу с [Web3.js](https://web3js.readthedocs.io/) для взаимодействия с блокчейном Эфириума. Web3.js можно использовать как во фронтенде, так и в бэкенде для чтения данных из блокчейна, совершения транзакций и даже для того, чтобы развернуть смарт-контракты.

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

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

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

```bash
npm install web3 --save
```

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

```js
const Web3 = require("web3")
```

Теперь, когда мы подключили библиотеку к проекту, нам нужно ее инициализировать. Ваш проект должен иметь возможность взаимодействовать с блокчейном. Большинство библиотек Эфириума взаимодействуют с [узлом](/developers/docs/nodes-and-clients/) через RPC-вызовы. Чтобы инициировать нашего провайдера Web3, мы создадим экземпляр Web3, передав в конструктор URL-адрес провайдера. Если у вас на компьютере запущен узел или [экземпляр ganache](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/), это будет выглядеть так:

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

Если вы хотите получить прямой доступ к размещенному узлу, вы можете найти варианты в разделе [узлы как услуга](/developers/docs/nodes-and-clients/nodes-as-a-service).

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

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

```js
var Web3 = require("web3")
const web3 = new Web3("https://cloudflare-eth.com")

web3.eth.getBlockNumber(function (error, result) {
  console.log(result)
})
```

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

```js
async function getBlockNumber() {
  const latestBlockNumber = await web3.eth.getBlockNumber()
  console.log(latestBlockNumber)
  return latestBlockNumber
}

getBlockNumber()
```

Вы можете посмотреть все функции, доступные в экземпляре Web3, в [официальной документации Web3.js](https://docs.web3js.org/).

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

<Divider />

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

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

```js
if (window.ethereum != null) {
  state.web3 = new Web3(window.ethereum)
  try {
    // Запросить доступ к аккаунту при необходимости
    await window.ethereum.enable()
    // Аккаунты теперь доступны
  } catch (error) {
    // Пользователь запретил доступ к аккаунту...
  }
}
```

Существуют и часто используются альтернативы Web3.js, такие как [Ethers.js](https://docs.ethers.io/). В следующем руководстве мы рассмотрим, [как легко отслеживать новые поступающие блоки в блокчейне и смотреть, что они содержат](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/).