Перейти до основного вмісту

Налаштування Web3.js для використання блокчейну Етеріум у JavaScript

web3.js
JavaScript
Для початківців
jdourlens
11 квітня 2020 р.
3 хвилин на читання

У цьому посібнику ми розглянемо, як почати роботу з Web3.js (opens in a new tab) для взаємодії з блокчейном Етеріум. Web3.js можна використовувати як у фронтенді, так і в бекенді для читання даних із блокчейну, здійснення транзакцій і навіть для того, щоб розгортати смарт-контракти.

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

<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:

const Web3 = require("web3")

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

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

Якщо ви хочете отримати прямий доступ до розміщеного вузла, ви можете знайти варіанти в розділі вузли як послуга.

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

Щоб перевірити, чи правильно ми налаштували наш екземпляр Web3, ми спробуємо отримати номер останнього блоку за допомогою функції getBlockNumber. Ця функція приймає зворотний виклик (callback) як параметр і повертає номер блоку у вигляді цілого числа.

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

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

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

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

getBlockNumber()

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

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


Якщо ви працюєте в браузері, деякі гаманці безпосередньо впроваджують екземпляр Web3, і вам слід намагатися використовувати його за можливості, особливо якщо ви плануєте взаємодіяти з адресою Етеріум користувача для здійснення транзакцій.

Ось фрагмент коду, щоб виявити, чи доступний гаманець МетаМаск, і спробувати ввімкнути його, якщо він є. Пізніше це дозволить вам зчитувати баланс користувача та дасть йому змогу підтверджувати транзакції, які ви хотіли б, щоб він здійснив у блокчейні Етеріум:

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