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

Бібліотеки JavaScript API

Щоб вебзастосунок міг взаємодіяти з блокчейном Етеріум (тобто читати дані блокчейну та/або надсилати транзакції в мережу), він має підключитися до вузла Етеріум.

Для цього кожен клієнт Етеріум реалізує специфікацію JSON-RPC, тому існує єдиний набір методів, на які можуть покладатися застосунки.

Якщо ви хочете використовувати JavaScript для підключення до вузла Етеріум, можна використовувати чистий JavaScript, але в екосистемі існує кілька зручних бібліотек, які значно спрощують цей процес. За допомогою цих бібліотек розробники можуть писати інтуїтивно зрозумілі однорядкові методи для ініціалізації запитів JSON-RPC (внутрішньо), які взаємодіють з Етеріум.

Зверніть увагу, що після Злиття для запуску вузла потрібні дві пов'язані частини програмного забезпечення Етеріум — клієнт виконання та клієнт консенсусу. Переконайтеся, що ваш вузол містить як клієнт виконання, так і клієнт консенсусу. Якщо ваш вузол знаходиться не на локальній машині (наприклад, ваш вузол працює на екземплярі AWS), відповідно оновіть IP-адреси в посібнику. Для отримання додаткової інформації перегляньте нашу сторінку про запуск вузла.

Передумови

Окрім розуміння JavaScript, може бути корисним розуміння стека Етеріум та клієнтів Етеріум.

Навіщо використовувати бібліотеку?

Ці бібліотеки абстрагують значну частину складності прямої взаємодії з вузлом Етеріум. Вони також надають допоміжні функції (наприклад, конвертацію ETH у Gwei), щоб ви як розробник могли витрачати менше часу на розв'язання тонкощів клієнтів Етеріум і більше часу зосереджуватися на унікальній функціональності вашого застосунку.

Можливості бібліотек

Підключення до вузлів Етеріум

Використовуючи провайдерів, ці бібліотеки дозволяють підключатися до Етеріум і читати його дані, незалежно від того, чи це відбувається через JSON-RPC, Infura, Etherscan, Alchemy або МетаМаск.

Попередження: Web3.js було архівовано 4 березня 2025 року. Прочитайте анонс (opens in a new tab). Розгляньте можливість використання альтернативних бібліотек, таких як Ethers.js (opens in a new tab) або Viem (opens in a new tab), для нових проєктів.

Приклад Ethers

// BrowserProvider обгортає стандартний провайдер Web3, який
// те, що МетаМаск впроваджує як window.ethereum на кожну сторінку
const provider = new ethers.BrowserProvider(window.ethereum)

// Плагін МетаМаск також дозволяє підписувати транзакції, щоб
// відправляти етер та платити за зміну стану в блокчейні.
// Для цього нам потрібен підписант облікового запису...
const signer = provider.getSigner()

Приклад Web3.js

Після налаштування ви зможете запитувати в блокчейні:

  • номери блоків
  • оцінки газу
  • події смарт-контрактів
  • ідентифікатор мережі
  • та багато іншого...

Функціональність гаманця

Ці бібліотеки надають вам функціональність для створення гаманців, керування ключами та підписання транзакцій.

Ось приклад з Ethers

Прочитати повну документацію (opens in a new tab)

Після налаштування ви зможете:

  • створювати акаунти
  • надсилати транзакції
  • підписувати транзакції
  • та багато іншого...

Взаємодія з функціями смарт-контрактів

Клієнтські бібліотеки JavaScript дозволяють вашому застосунку викликати функції смарт-контрактів, зчитуючи двійковий інтерфейс застосунку (ABI) скомпільованого контракту.

ABI по суті пояснює функції контракту у форматі JSON і дозволяє використовувати його як звичайний об'єкт JavaScript.

Отже, наступний контракт Solidity:

Призведе до такого JSON:

Це означає, що ви можете:

  • Надіслати транзакцію до смарт-контракту та виконати його метод
  • Викликати оцінку газу, яку займе виконання методу під час виконання в EVM
  • Розгорнути контракт
  • Та багато іншого...

Допоміжні функції

Допоміжні функції надають зручні скорочення, які роблять розробку з Етеріум трохи простішою.

Значення ETH за замовчуванням вказуються у Wei. 1 ETH = 1 000 000 000 000 000 000 Wei — це означає, що ви маєте справу з великою кількістю цифр! web3.utils.toWei конвертує етер у Wei для вас.

А в Ethers це виглядає так:

// Отримання балансу облікового запису (за адресою або іменем ENS)
balance = await provider.getBalance("ethers.eth")
// { BigNumber: "2337132817842795605" }

// Часто вам потрібно буде відформатувати вивід для користувача,
// який віддає перевагу бачити значення в етерах (замість Wei)
ethers.utils.formatEther(balance)
// '2.337132817842795605'

Доступні бібліотеки

Web3.js — JavaScript API для Етеріум.

Ethers.js — Повна реалізація гаманця Етеріум та утиліти на JavaScript і TypeScript.

The Graph — Протокол для індексування даних Етеріум та IPFS і виконання запитів до них за допомогою GraphQL.

Alchemy SDK — Обгортка навколо Ethers.js із розширеними API.

Viem — Інтерфейс TypeScript для Етеріум.

Codex — API збагачених даних блокчейну в реальному часі для десятків мереж.

Drift — Метабібліотека TypeScript із вбудованим кешуванням, хуками та тестовими моками.

Додаткові матеріали

Знаєте ресурс спільноти, який вам допоміг? Відредагуйте цю сторінку та додайте його!

Посібники: JavaScript API та WebSockets в Етеріум

  • Використання WebSockets — Як використовувати WebSockets з Alchemy для підписки на події Етеріум і виконання запитів JSON-RPC у реальному часі.