Библиотеки JavaScript API
Последнее обновление страницы: 25 февраля 2026 г.
Чтобы веб-приложение могло взаимодействовать с блокчейном Ethereum (т. е. читать данные блокчейна и/или отправлять транзакции в сеть), оно должно подключиться к узлу Ethereum.
Для этой цели каждый клиент Ethereum реализует спецификацию JSON-RPC, так что существует единый набор методов, на которые могут полагаться приложения.
Если вы используете JavaScript для того чтобы подключиться к узлу Ethereum, можно воспользоваться vanilla JavaScript, но существует также несколько удобных библиотек внутри экосистемы которые упрощают эту задачу. С помощью этих библиотек разработчики могут писать интуитивные, однострочные методы для инициализации запросов JSON-RPC (под капотом), которые взаимодействуют с Ethereum.
Обратите внимание, что после Слияния для запуска узла требуются две связанные части программного обеспечения Ethereum — клиент исполнения и клиент консенсуса. Убедитесь, что у вашего узла есть как клиент исполнения, так и клиент консенсуса. Если ваш узел находится не на локальном компьютере (например, работает на инстансе AWS), соответственно обновите IP-адреса в руководстве. Для получения дополнительной информации см. нашу страницу о запуске узла.
Предварительные условия
Помимо понимания JavaScript, может быть полезно разобраться в стеке Ethereum и клиентах Ethereum.
Зачем использовать библиотеки?
Использование библиотеки помогает абстрагироваться от сложности при общении с узлом Ethereum напрямую. Они также предоставляют полезные функции (например, конвертирование ETH в Gwei), позволяя вам, как разработчику, тратить меньше времени на тонкости работы с клиентами Ethereum, и сосредоточиться на уникальных функциях своего приложения.
Функции библиотеки
Подключение к узлам Ethereum
Используя провайдеров, эти библиотеки позволяют вам подключаться к Ethereum и считывать его данные, будь то через JSON-RPC, INFURA, Etherscan, Alchemy или MetaMask.
Предупреждение: Web3.js был заархивирован 4 марта 2025 г. Прочтите объявление (opens in a new tab). Для новых проектов рассмотрите возможность использования альтернативных библиотек, таких как ethers.js (opens in a new tab) или viem (opens in a new tab).
Пример эфиров
1// BrowserProvider является оболочкой для стандартного провайдера Web3, который2// MetaMask внедряет в каждую страницу как window.ethereum3const provider = new ethers.BrowserProvider(window.ethereum)45// Плагин MetaMask также позволяет подписывать транзакции для6// отправки эфира и оплаты для изменения состояния в блокчейне.7// Для этого нам нужен подписант аккаунта...8const signer = provider.getSigner()Web3js примеры
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"Показать всеПосле настройки вы сможете запросить блокчейн для:
- номер блока
- прогноз газа
- события смарт-контракта
- идентификатор сети
- и многое другое...
Функциональность кошелька
Эти библиотеки позволяют создавать кошельки, управлять ключами и подписывать транзакции.
Вот примеры с эфиров
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 согласно API подписывающей стороны (Signer)13walletMnemonic.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// Отправка эфира63wallet.sendTransaction(tx)Показать всеПрочесть полную документацию (opens in a new tab)
После настройки вы сможете:
- создать аккаунт
- отправить Транзакцию
- подписать транзакцию
- и многое другое...
Взаимодействие с функциями смарт-контрактов
Клиентские библиотеки JavaScript позволяют Вашему приложению вызывать функции смарт-контрактов, считывая двоичный интерфейс приложения (ABI) скомпилированного контракта.
ABI, по сути, объясняет функции контракта в формате JSON и позволяет использовать его как обычный объект JavaScript.
Таким образом, выглядит Solidity контракт:
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}Показать всеПриведет к следующему 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}]Показать всеВы сможете:
- Отправить транзакцию к умному контракту и выполнить его метод
- Сделать вызов для оценки газа, который будет выполняться при запуске в EVM
- Развернуть контракт
- И другое...
Вспомогательные функции
Утилитные функции дают вам удобные shortcuts, которые делают строительство с Ethereum немного проще.
Значения ETH находятся в Wei по умолчанию. 1 ETH = 1,000,000,000,000,000,000 WEI – это означает, что вы имеете дело с большим количеством чисел! web3.utils.toWei конвертирует для вас эфир в Wei.
И в эфире он выглядит так:
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'- Вспомогательные функции Web3js (opens in a new tab)
- Вспомогательные функции Ethers (opens in a new tab)
Доступные библиотеки
Web3.js - API Ethereum для JavaScript.
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 со встроенным кешированием, хуками и тестовыми заглушками.
Дополнительные материалы
Знаете ресурс сообщества, который вам пригодился? Измените эту страницу и добавьте его!
Смежные темы
Связанные руководства
- Настройка Web3js для использования блокчейна Ethereum в JavaScript — инструкции по настройке Web3js в вашем проекте.
- Вызов умного контракта из JavaScript — на примере токена DAI вы увидите, как вызывать функции контрактов с помощью JavaScript.
- Отправка транзакций с помощью web3 и Alchemy – пошаговое руководство по отправке транзакций с бэкенда.