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

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

Останні оновлення сторінки: 25 лютого 2026 р.

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

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

If you want to use JavaScript to connect with an Ethereum node, it's possible to use vanilla JavaScript but several convenience libraries exist within the ecosystem that make this much easier. За допомогою цих бібліотек розробники можуть писати інтуїтивно зрозумілі однорядкові методи для ініціалізації запитів JSON-RPC (під капотом), що взаємодіють з Ethereum.

Зауважте, що після Злиття для запуску вузла потрібні дві пов’язані частини програмного забезпечення Ethereum: клієнт виконання та клієнт консенсусу. Будь ласка, переконайтеся, що ваш вузол включає клієнт виконання та клієнт консенсусу. Якщо ваш вузол не на вашому локальному комп’ютері (наприклад, ваш вузол працює на екземплярі AWS), відповідно оновіть IP-адреси в посібнику. Щоб отримати докладнішу інформацію, перегляньте нашу сторінку про запуск вузла.

Передумови

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

Why use a library?

These libraries abstract away much of the complexity of interacting directly with an Ethereum node. Вони також надають корисні функції (наприклад, перетворення ETH на Gwei), тому як розробник ви можете витрачати менше часу на тонкощі клієнтів Ethereum і більше часу зосереджуватися на унікальній функціональності вашого застосунку.

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

Підключення до вузлів Ethereum

Using providers, these libraries allow you to connect to Ethereum and read its data, whether that's over JSON-RPC, INFURA, Etherscan, Alchemy or MetaMask.

Увага: Web3.js було заархівовано 4 березня 2025 року. Прочитати оголошення (opens in a new tab). Для нових проєктів радимо використовувати альтернативні бібліотеки, як-от ethers.js (opens in a new tab) або viem (opens in a new tab).

Ethers example

1// BrowserProvider є оболонкою стандартного постачальника Web3, який
2// MetaMask вставляє як window.ethereum на кожну сторінку
3const provider = new ethers.BrowserProvider(window.ethereum)
4
5// Плагін MetaMask також дозволяє підписувати транзакції
6// для надсилання ether і оплати зміни стану в блокчейні.
7// Для цього нам потрібен підписувач облікового запису...
8const signer = provider.getSigner()

Web3js example

1var web3 = new Web3("http://localhost:8545")
2// or
3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
4
5// change provider
6web3.setProvider("ws://localhost:8546")
7// or
8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))
9
10// Using the IPC provider in node.js
11var net = require("net")
12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os path
13// or
14var web3 = new Web3(
15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)
16) // mac os path
17// on windows the path is: "\\\\.\\pipe\\geth.ipc"
18// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
Показати все

Once set up you'll be able to query the blockchain for:

  • block numbers
  • gas estimates
  • smart contract events
  • network id
  • та багато іншого…

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

These libraries give you functionality to create wallets, manage keys and sign transactions.

Here's an examples from Ethers

1// Створення екземпляра гаманця з мнемонічної фрази...
2mnemonic =
3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
4walletMnemonic = Wallet.fromPhrase(mnemonic)
5
6// ...або з приватного ключа
7walletPrivateKey = new Wallet(walletMnemonic.privateKey)
8
9walletMnemonic.address === walletPrivateKey.address
10// true
11
12// Адреса як Promise відповідно до Signer API
13walletMnemonic.getAddress()
14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
15
16// Адреса гаманця також доступна синхронно
17walletMnemonic.address
18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
19
20// Внутрішні криптографічні компоненти
21walletMnemonic.privateKey
22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
23walletMnemonic.publicKey
24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
25
26// Мнемонічна фраза гаманця
27walletMnemonic.mnemonic
28// {
29// locale: 'en',
30// path: 'm/44\'/60\'/0\'/0/0',
31// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'
32// }
33
34// Примітка: гаманець, створений за допомогою приватного ключа, не має
35// мнемонічної фрази (це неможливо через спосіб виведення)
36walletPrivateKey.mnemonic
37// null
38
39// Підписання повідомлення
40walletMnemonic.signMessage("Hello World")
41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
42
43tx = {
44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
45 value: utils.parseEther("1.0"),
46}
47
48// Підписання транзакції
49walletMnemonic.signTransaction(tx)
50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
51
52// Метод connect повертає новий екземпляр
53// гаманця, підключеного до постачальника
54wallet = walletMnemonic.connect(provider)
55
56// Запит до мережі
57wallet.getBalance()
58// { Promise: { BigNumber: "42" } }
59wallet.getTransactionCount()
60// { Promise: 0 }
61
62// Надсилання Ether
63wallet.sendTransaction(tx)
Показати все

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

Once set up you'll be able to:

  • create accounts
  • send transactions
  • sign transactions
  • та багато іншого…

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

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

The ABI essentially explains the contract's functions in a JSON format and allows you to use it like a normal JavaScript object.

So the following Solidity contract:

1contract Test {
2 uint a;
3 address d = 0x12345678901234567890123456789012;
4
5 constructor(uint testInt) { a = testInt;}
6
7 event Event(uint indexed b, bytes32 c);
8
9 event Event2(uint indexed b, bytes32 c);
10
11 function foo(uint b, bytes32 c) returns(address) {
12 Event(b, c);
13 return d;
14 }
15}
Показати все

Would result in the following JSON:

1[{
2 "type":"constructor",
3 "payable":false,
4 "stateMutability":"nonpayable"
5 "inputs":[{"name":"testInt","type":"uint256"}],
6 },{
7 "type":"function",
8 "name":"foo",
9 "constant":false,
10 "payable":false,
11 "stateMutability":"nonpayable",
12 "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],
13 "outputs":[{"name":"","type":"address"}]
14 },{
15 "type":"event",
16 "name":"Event",
17 "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],
18 "anonymous":false
19 },{
20 "type":"event",
21 "name":"Event2",
22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],
23 "anonymous":false
24}]
Показати все

This means you can:

  • Send a transaction to the smart contract and execute its method
  • Call to estimate the gas a method execution will take when executed in the EVM
  • Deploy a contract
  • Та багато іншого…

Корисні функції

Utility functions give you handy shortcuts that make building with Ethereum a little easier.

ETH values are in Wei by default. 1 ETH = 1,000,000,000,000,000,000 WEI – this means you're dealing with a lot of numbers! web3.utils.toWei конвертує Ether у Wei.

And in ethers it looks like this:

1// Get the balance of an account (by address or ENS name)
2balance = await provider.getBalance("ethers.eth")
3// { BigNumber: "2337132817842795605" }
4
5// Often you will need to format the output for the user
6// which prefer to see values in ether (instead of wei)
7ethers.utils.formatEther(balance)
8// '2.337132817842795605'

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

Web3.js — API JavaScript для Ethereum.

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

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

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

viem — інтерфейс TypeScript для Ethereum.

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

Для подальшого читання

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

Чи була ця стаття корисною?