---
title: "Налаштування Web3.js для використання блокчейну Етеріум у JavaScript"
description: "Дізнайтеся, як встановити та налаштувати бібліотеку Web3.js для взаємодії з блокчейном Етеріум із застосунків на JavaScript."
author: "jdourlens"
tags: ["web3.js", "JavaScript"]
skill: beginner
breadcrumb: "Налаштування Web3.js"
lang: uk
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`. Ця функція приймає зворотний виклик (callback) як параметр і повертає номер блоку у вигляді цілого числа.

```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/).