Бібліотеки 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)45// Плагін MetaMask також дозволяє підписувати транзакції6// для надсилання ether і оплати зміни стану в блокчейні.7// Для цього нам потрібен підписувач облікового запису...8const signer = provider.getSigner()Web3js example
1var web3 = new Web3("http://localhost:8545")2// or3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))45// change provider6web3.setProvider("ws://localhost:8546")7// or8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))910// Using the IPC provider in node.js11var net = require("net")12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os path13// or14var web3 = new Web3(15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)16) // mac os path17// 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)56// ...або з приватного ключа7walletPrivateKey = new Wallet(walletMnemonic.privateKey)89walletMnemonic.address === walletPrivateKey.address10// true1112// Адреса як Promise відповідно до Signer API13walletMnemonic.getAddress()14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }1516// Адреса гаманця також доступна синхронно17walletMnemonic.address18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'1920// Внутрішні криптографічні компоненти21walletMnemonic.privateKey22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'23walletMnemonic.publicKey24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'2526// Мнемонічна фраза гаманця27walletMnemonic.mnemonic28// {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// }3334// Примітка: гаманець, створений за допомогою приватного ключа, не має35// мнемонічної фрази (це неможливо через спосіб виведення)36walletPrivateKey.mnemonic37// null3839// Підписання повідомлення40walletMnemonic.signMessage("Hello World")41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }4243tx = {44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",45 value: utils.parseEther("1.0"),46}4748// Підписання транзакції49walletMnemonic.signTransaction(tx)50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }5152// Метод connect повертає новий екземпляр53// гаманця, підключеного до постачальника54wallet = walletMnemonic.connect(provider)5556// Запит до мережі57wallet.getBalance()58// { Promise: { BigNumber: "42" } }59wallet.getTransactionCount()60// { Promise: 0 }6162// Надсилання Ether63wallet.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;45 constructor(uint testInt) { a = testInt;}67 event Event(uint indexed b, bytes32 c);89 event Event2(uint indexed b, bytes32 c);1011 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":false19 },{20 "type":"event",21 "name":"Event2",22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],23 "anonymous":false24}]Показати все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" }45// Often you will need to format the output for the user6// 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.
- Головна сторінка Ethers.js (opens in a new tab)
- Документація (opens in a new tab)
- GitHub (opens in a new tab)
The Graph — протокол для індексації даних Ethereum та IPFS і виконання запитів до них за допомогою GraphQL.
- The Graph (opens in a new tab)
- Оглядач Graph (opens in a new tab)
- Документація (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Alchemy SDK — обгортка для Ethers.js з розширеними API.
viem — інтерфейс TypeScript для Ethereum.
Drift — метабібліотека TypeScript із вбудованим кешуванням, хуками та тестовими моками.
Для подальшого читання
Знайшли ресурс, який допоміг з цією темою? Відредагуйте цю сторінку і додайте його!
Пов'язані теми
Пов'язані посібники
- Налаштування Web3.js для використання блокчейну Ethereum у JavaScript – інструкції з налаштування Web3.js у вашому проєкті.
- Виклик смарт-контракту з JavaScript – використання токена DAI, щоб побачити, як викликати функцію контракту за допомогою JavaScript.
- Надсилання транзакцій за допомогою Web3 та Alchemy — покрокове керівництво з надсилання транзакцій із серверної частини.